Update TLS 1.3

This commit is contained in:
Zhi Guan
2022-07-25 14:15:41 +08:00
parent 15fd0dbcd4
commit 08dd20b70f
7 changed files with 269 additions and 203 deletions

4
certs/README.md Normal file
View File

@@ -0,0 +1,4 @@
# 国密证书库

View File

@@ -875,6 +875,7 @@ int tls13_extensions_print(FILE *fp, int fmt, int ind,
int tls13_certificate_print(FILE *fp, int fmt, int ind, const uint8_t *cert, size_t certlen);
int tls13_certificate_request_print(FILE *fp, int fmt, int ind, const uint8_t *cert, size_t certlen);
int tls13_certificate_verify_print(FILE *fp, int fmt, int ind, const uint8_t *d, size_t dlen);
int tls13_record_print(FILE *fp, int format, int indent, const uint8_t *record, size_t recordlen);

File diff suppressed because it is too large Load Diff

View File

@@ -512,8 +512,14 @@ int tls13_extensions_print(FILE *fp, int fmt, int ind,
const uint8_t *ext_data;
size_t ext_datalen;
if (!exts) {
format_print(fp, fmt, ind, "Extensions: (null)\n");
return 1;
}
format_print(fp, fmt, ind, "Extensions\n");
ind += 4;
while (extslen > 0) {
if (tls_uint16_from_bytes(&ext_type, &exts, &extslen) != 1
|| tls_uint16array_from_bytes(&ext_data, &ext_datalen, &exts, &extslen) != 1) {
@@ -900,11 +906,23 @@ int tls13_handshake_print(FILE *fp, int fmt, int ind, const uint8_t *handshake,
return -1;
}
switch (type) {
case TLS_handshake_certificate:
case TLS_handshake_certificate_request:
case TLS_handshake_certificate_verify:
format_print(fp, fmt, ind, "Handshake\n");
ind += 4;
format_print(fp, fmt, ind, "Type: %s (%d)\n", tls_handshake_type_name(type), type);
format_print(fp, fmt, ind, "Length: %zu\n", datalen);
break;
}
switch (type) {
case TLS_handshake_certificate:
return tls13_certificate_print(fp, fmt, ind, data, datalen);
case TLS_handshake_certificate_request:
return tls13_certificate_request_print(fp, fmt, ind, data, datalen);
case TLS_handshake_certificate_verify:
return tls13_certificate_verify_print(fp, fmt, ind, data, datalen);
}
return tls_handshake_print(fp, p, len, fmt, ind);

View File

@@ -1206,9 +1206,6 @@ int x509_cert_print(FILE *fp, int fmt, int ind, const char *label, const uint8_t
const uint8_t *d;
size_t dlen;
format_print(fp, fmt, ind, "%s\n", label);
ind += 4;
if (asn1_sequence_from_der(&d, &dlen, &a, &alen) != 1) {
error_print();
return -1;

View File

@@ -177,7 +177,7 @@ bad:
continue;
}
}
if (tls_send(&conn, (uint8_t *)send_buf, strlen(send_buf), &sentlen) != 1) {
if (tls13_send(&conn, (uint8_t *)send_buf, strlen(send_buf), 0 /*&sentlen*/) != 1) {
fprintf(stderr, "%s: send error\n", prog);
goto end;
}
@@ -185,7 +185,7 @@ bad:
{
memset(buf, 0, sizeof(buf));
len = sizeof(buf);
if (tls_recv(&conn, (uint8_t *)buf, sizeof(len), &len) != 1) {
if (tls13_recv(&conn, (uint8_t *)buf, /*sizeof(len),*/ &len) != 1) {
goto end;
}
buf[len] = 0;

View File

@@ -199,7 +199,7 @@ restart:
do {
len = sizeof(buf);
if ((rv = tls_recv(&conn, (uint8_t *)buf, sizeof(buf), &len)) != 1) {
if ((rv = tls13_recv(&conn, (uint8_t *)buf, /*sizeof(buf),*/ &len)) != 1) {
if (rv < 0) fprintf(stderr, "%s: recv failure\n", prog);
else fprintf(stderr, "%s: Disconnected by remote\n", prog);
@@ -209,7 +209,7 @@ restart:
}
} while (!len);
if (tls_send(&conn, (uint8_t *)buf, len, &sentlen) != 1) {
if (tls13_send(&conn, (uint8_t *)buf, len, /* &sentlen*/ 0) != 1) {
fprintf(stderr, "%s: send failure, close connection\n", prog);
close(conn.sock);
goto end;