mirror of
https://github.com/guanzhi/GmSSL.git
synced 2026-06-20 03:44:15 +08:00
Update TLCP
This commit is contained in:
@@ -470,7 +470,7 @@ int tls_record_set_data(uint8_t *record, const uint8_t *data, size_t datalen);
|
|||||||
// parse ServerKeyExchange, ClientKeyExchange depends on current cipher_suite
|
// parse ServerKeyExchange, ClientKeyExchange depends on current cipher_suite
|
||||||
#define tls_format_set_cipher_suite(fmt,cipher) do {(fmt)|=((cipher)<<8);} while (0)
|
#define tls_format_set_cipher_suite(fmt,cipher) do {(fmt)|=((cipher)<<8);} while (0)
|
||||||
int tls_record_print(FILE *fp, const uint8_t *record, size_t recordlen, int format, int indent);
|
int tls_record_print(FILE *fp, const uint8_t *record, size_t recordlen, int format, int indent);
|
||||||
int tlcp_record_print(FILE *fp, const uint8_t *record, size_t recordlen, int format, int indent);
|
int tlcp_record_print(FILE *fp, int format, int indent, const uint8_t *record, size_t recordlen);
|
||||||
|
|
||||||
int tls_record_send(const uint8_t *record, size_t recordlen, tls_socket_t sock);
|
int tls_record_send(const uint8_t *record, size_t recordlen, tls_socket_t sock);
|
||||||
int tls_record_recv(uint8_t *record, size_t *recordlen, tls_socket_t sock);
|
int tls_record_recv(uint8_t *record, size_t *recordlen, tls_socket_t sock);
|
||||||
@@ -1535,7 +1535,7 @@ int tls13_gcm_decrypt(const BLOCK_CIPHER_KEY *key, const uint8_t iv[12],
|
|||||||
# define tls_trace(s) fprintf(stderr,(s))
|
# define tls_trace(s) fprintf(stderr,(s))
|
||||||
# define tls_record_trace(fp,rec,reclen,fmt,ind) tls_record_print(fp,rec,reclen,fmt,ind)
|
# define tls_record_trace(fp,rec,reclen,fmt,ind) tls_record_print(fp,rec,reclen,fmt,ind)
|
||||||
# define tls_encrypted_record_trace(fp,rec,reclen,fmt,ind) tls_encrypted_record_print(fp,rec,reclen,fmt,ind)
|
# define tls_encrypted_record_trace(fp,rec,reclen,fmt,ind) tls_encrypted_record_print(fp,rec,reclen,fmt,ind)
|
||||||
# define tlcp_record_trace(fp,rec,reclen,fmt,ind) tlcp_record_print(fp,rec,reclen,fmt,ind)
|
# define tlcp_record_trace(fp,rec,reclen,fmt,ind) tlcp_record_print(fp,fmt,ind,rec,reclen)
|
||||||
# define tls12_record_trace(fp,rec,reclen,fmt,ind) tls12_record_print(fp,rec,reclen,fmt,ind)
|
# define tls12_record_trace(fp,rec,reclen,fmt,ind) tls12_record_print(fp,rec,reclen,fmt,ind)
|
||||||
# define tls13_record_trace(fp,rec,reclen,fmt,ind) tls13_record_print(fp,fmt,ind,rec,reclen)
|
# define tls13_record_trace(fp,rec,reclen,fmt,ind) tls13_record_print(fp,fmt,ind,rec,reclen)
|
||||||
#else
|
#else
|
||||||
|
|||||||
16
src/tlcp.c
16
src/tlcp.c
@@ -44,7 +44,7 @@ static const int tlcp_ciphers[] = { TLS_cipher_ecc_sm4_cbc_sm3 };
|
|||||||
static const size_t tlcp_ciphers_count = sizeof(tlcp_ciphers)/sizeof(tlcp_ciphers[0]);
|
static const size_t tlcp_ciphers_count = sizeof(tlcp_ciphers)/sizeof(tlcp_ciphers[0]);
|
||||||
|
|
||||||
|
|
||||||
int tlcp_record_print(FILE *fp, const uint8_t *record, size_t recordlen, int format, int indent)
|
int tlcp_record_print(FILE *fp, int format, int indent, const uint8_t *record, size_t recordlen)
|
||||||
{
|
{
|
||||||
// 目前只支持TLCP的ECC公钥加密套件,因此不论用哪个套件解析都是一样的
|
// 目前只支持TLCP的ECC公钥加密套件,因此不论用哪个套件解析都是一样的
|
||||||
// 如果未来支持ECDHE套件,可以将函数改为宏,直接传入 (conn->cipher_suite << 8)
|
// 如果未来支持ECDHE套件,可以将函数改为宏,直接传入 (conn->cipher_suite << 8)
|
||||||
@@ -96,6 +96,7 @@ int tlcp_record_set_handshake_server_key_exchange_pke(uint8_t *record, size_t *r
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int tlcp_record_get_handshake_server_key_exchange_pke(const uint8_t *record,
|
int tlcp_record_get_handshake_server_key_exchange_pke(const uint8_t *record,
|
||||||
const uint8_t **sig, size_t *siglen)
|
const uint8_t **sig, size_t *siglen)
|
||||||
{
|
{
|
||||||
@@ -193,7 +194,7 @@ int tlcp_send_client_hello(TLS_CONNECT *conn)
|
|||||||
// offset = 0, recordlen > 0
|
// offset = 0, recordlen > 0
|
||||||
|
|
||||||
tls_trace("send ClientHello\n");
|
tls_trace("send ClientHello\n");
|
||||||
tlcp_record_trace(stderr, conn->record, conn->recordlen, 0, 0);
|
tlcp_record_print(stderr, 0, 0, conn->record, conn->recordlen);
|
||||||
sm3_update(&conn->sm3_ctx, conn->record + 5, conn->recordlen - 5);
|
sm3_update(&conn->sm3_ctx, conn->record + 5, conn->recordlen - 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,7 +251,7 @@ int tlcp_recv_client_hello(TLS_CONNECT *conn)
|
|||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
tlcp_record_trace(stderr, conn->record, conn->recordlen, 0, 0);
|
tlcp_record_print(stderr, 0, 0, conn->record, conn->recordlen);
|
||||||
|
|
||||||
|
|
||||||
// 这里TLCP和TLS12是不一样的
|
// 这里TLCP和TLS12是不一样的
|
||||||
@@ -355,7 +356,7 @@ int tlcp_send_server_key_exchange(TLS_CONNECT *conn)
|
|||||||
tls_send_alert(conn, TLS_alert_internal_error);
|
tls_send_alert(conn, TLS_alert_internal_error);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
tlcp_record_trace(stderr, conn->record, conn->recordlen, 0, 0);
|
tlcp_record_print(stderr, 0, 0, conn->record, conn->recordlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ret = tls_send_record(conn)) != 1) {
|
if ((ret = tls_send_record(conn)) != 1) {
|
||||||
@@ -399,7 +400,7 @@ int tlcp_recv_server_key_exchange(TLS_CONNECT *conn)
|
|||||||
tls_send_alert(conn, TLS_alert_unexpected_message);
|
tls_send_alert(conn, TLS_alert_unexpected_message);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
tlcp_record_trace(stderr, conn->record, conn->recordlen, 0, 0);
|
tlcp_record_print(stderr, 0, 0, conn->record, conn->recordlen);
|
||||||
|
|
||||||
if (tlcp_record_get_handshake_server_key_exchange_pke(conn->record, &sig, &siglen) != 1) {
|
if (tlcp_record_get_handshake_server_key_exchange_pke(conn->record, &sig, &siglen) != 1) {
|
||||||
error_print();
|
error_print();
|
||||||
@@ -510,7 +511,7 @@ int tlcp_send_client_key_exchange(TLS_CONNECT *conn)
|
|||||||
tls_send_alert(conn, TLS_alert_internal_error);
|
tls_send_alert(conn, TLS_alert_internal_error);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
tlcp_record_trace(stderr, conn->record, conn->recordlen, 0, 0);
|
tlcp_record_print(stderr, 0, 0, conn->record, conn->recordlen);
|
||||||
if (tls_record_send(conn->record, conn->recordlen, conn->sock) != 1) {
|
if (tls_record_send(conn->record, conn->recordlen, conn->sock) != 1) {
|
||||||
error_print();
|
error_print();
|
||||||
return -1;
|
return -1;
|
||||||
@@ -535,7 +536,7 @@ int tlcp_recv_client_key_exchange(TLS_CONNECT *conn)
|
|||||||
tls_send_alert(conn, TLS_alert_unexpected_message);
|
tls_send_alert(conn, TLS_alert_unexpected_message);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
tlcp_record_trace(stderr, conn->record, conn->recordlen, 0, 0);
|
tlcp_record_print(stderr, 0, 0, conn->record, conn->recordlen);
|
||||||
|
|
||||||
if (tls_record_get_handshake_client_key_exchange_pke(conn->record, &enced_pms, &enced_pms_len) != 1) {
|
if (tls_record_get_handshake_client_key_exchange_pke(conn->record, &enced_pms, &enced_pms_len) != 1) {
|
||||||
error_print();
|
error_print();
|
||||||
@@ -915,4 +916,3 @@ int tlcp_do_accept(TLS_CONNECT *conn)
|
|||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user