mirror of
https://github.com/guanzhi/GmSSL.git
synced 2026-05-06 16:36:16 +08:00
Update TLS 1.3
This commit is contained in:
4
certs/README.md
Normal file
4
certs/README.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# 国密证书库
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
|
||||
438
src/tls13.c
438
src/tls13.c
File diff suppressed because it is too large
Load Diff
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user