Update X509 cert

This commit is contained in:
Zhi Guan
2023-02-04 21:04:43 +08:00
parent 1fbdfeee59
commit 6a02a61c4f
16 changed files with 1081 additions and 1071 deletions

View File

@@ -607,6 +607,34 @@ static int test_asn1_time(void)
return 1;
}
static int test_asn1_time_limits(void)
{
char *tests[] = {
"20491231235959Z",
"20500101000000Z",
"99991231235959Z",
};
size_t i;
time_t tv[sizeof(tests)/sizeof(tests[0])];
char str[16] = {0};
for (i = 0; i < sizeof(tests)/sizeof(tests[0]); i++) {
if (asn1_time_from_str(0, &tv[i], tests[i]) != 1) {
error_print();
return -1;
}
fprintf(stderr, " %s: %lld\n", tests[i], (long long)tv[i]);
}
if (tv[0] + 1 != tv[1]) {
error_print();
return -1;
}
printf("%s() ok\n", __FUNCTION__);
return 1;
}
static int test_asn1_utc_time(void)
{
time_t tests[] = {
@@ -790,6 +818,7 @@ int main(void)
if (test_asn1_utf8_string() != 1) goto err;
if (test_asn1_ia5_string() != 1) goto err;
if (test_asn1_time() != 1) goto err;
if (test_asn1_time_limits() != 1) goto err;
if (test_asn1_utc_time() != 1) goto err;
if (test_asn1_generalized_time() != 1) goto err;
if (test_asn1_from_der_null_args() != 1) goto err;

View File

@@ -372,7 +372,8 @@ static int test_cms_signer_info_sign(void)
size_t namelen;
time_t not_before, not_after;
uint8_t certs[1024];
size_t certslen;
size_t certslen = 0;
uint8_t *pcerts = certs;
SM3_CTX sm3_ctx;
@@ -389,14 +390,15 @@ static int test_cms_signer_info_sign(void)
|| x509_name_set(name, &namelen, sizeof(name), "CN", "Beijing", "Haidian", "PKU", "CS", "Alice") != 1
|| time(&not_before) == -1
|| x509_validity_add_days(&not_after, not_before, 365) != 1
|| x509_cert_sign(certs, &certslen, sizeof(certs),
|| x509_cert_sign_to_der(
X509_version_v3, serial_buf, sizeof(serial_buf),
OID_sm2sign_with_sm3,
name, namelen,
not_before, not_after,
name, namelen,
&sm2_key, NULL, 0, NULL, 0, NULL, 0,
&sm2_key, SM2_DEFAULT_ID, SM2_DEFAULT_ID_LENGTH) != 1) {
&sm2_key, SM2_DEFAULT_ID, SM2_DEFAULT_ID_LENGTH,
&pcerts, &certslen) != 1) {
error_print();
return -1;
}
@@ -571,8 +573,7 @@ static int test_cms_signed_data(void)
time(&not_before);
x509_validity_add_days(&not_after, not_before, 365);
if (x509_cert_sign(
cert, &certlen, sizeof(cert),
if (x509_cert_sign_to_der(
X509_version_v3,
serial, sizeof(serial),
OID_sm2sign_with_sm3,
@@ -583,7 +584,8 @@ static int test_cms_signed_data(void)
NULL, 0,
NULL, 0,
NULL, 0,
&sm2_key, SM2_DEFAULT_ID, SM2_DEFAULT_ID_LENGTH) != 1) {
&sm2_key, SM2_DEFAULT_ID, SM2_DEFAULT_ID_LENGTH,
&p, &certlen) != 1) {
error_print();
return -1;
}
@@ -775,13 +777,11 @@ int test_cms_enveloped_data(void)
p = certs;
certslen = 0;
maxlen = sizeof(certs);
if (sm2_key_generate(&sm2_key1) != 1
|| rand_bytes(serial1, sizeof(serial1)) != 1
|| x509_name_set(name1, &name1_len, sizeof(name1), "CN", "Beijing", "Haidian", "PKU", "CS", "Alice") != 1
|| x509_cert_sign(
p, &len, maxlen,
|| x509_cert_sign_to_der(
X509_version_v3,
serial1, sizeof(serial1),
OID_sm2sign_with_sm3,
@@ -789,19 +789,16 @@ int test_cms_enveloped_data(void)
not_before, not_after,
name1, name1_len,
&sm2_key1, NULL, 0, NULL, 0, NULL, 0,
&sm2_key1, SM2_DEFAULT_ID, SM2_DEFAULT_ID_LENGTH) != 1) {
&sm2_key1, SM2_DEFAULT_ID, SM2_DEFAULT_ID_LENGTH,
&p, &certslen) != 1) {
error_print();
return -1;
}
p += len;
certslen += len;
maxlen -= len;
if (sm2_key_generate(&sm2_key2) != 1
|| rand_bytes(serial2, sizeof(serial2)) != 1
|| x509_name_set(name2, &name2_len, sizeof(name2), "CN", "Beijing", "Haidian", "PKU", "CS", "Bob") != 1
|| x509_cert_sign(
p, &len, maxlen,
|| x509_cert_sign_to_der(
X509_version_v3,
serial2, sizeof(serial2),
OID_sm2sign_with_sm3,
@@ -809,13 +806,11 @@ int test_cms_enveloped_data(void)
not_before, not_after,
name2, name2_len,
&sm2_key2, NULL, 0, NULL, 0, NULL, 0,
&sm2_key2, SM2_DEFAULT_ID, SM2_DEFAULT_ID_LENGTH) != 1) {
&sm2_key2, SM2_DEFAULT_ID, SM2_DEFAULT_ID_LENGTH,
&p, &certslen) != 1) {
error_print();
return -1;
}
p += len;
certslen += len;
maxlen -= len;
rand_bytes(key, sizeof(key));
rand_bytes(iv, sizeof(iv));
@@ -899,7 +894,7 @@ static int test_cms_key_agreement_info(void)
uint8_t serial[20];
time_t not_before, not_after;
uint8_t cert[2048];
size_t certlen;
size_t certlen = 0;
uint8_t buf[4096];
uint8_t *p;
@@ -915,13 +910,13 @@ static int test_cms_key_agreement_info(void)
const uint8_t *id;
size_t idlen;
p = cert;
if (sm2_key_generate(&sm2_key) != 1
|| rand_bytes(serial, sizeof(serial)) != 1
|| x509_name_set(name, &namelen, sizeof(name), "CN", "Beijing", "Haidian", "PKU", "CS", "Alice") != 1
|| time(&not_before) == - 1
|| x509_validity_add_days(&not_after, not_before, 365) != 1
|| x509_cert_sign(
cert, &certlen, sizeof(cert),
|| x509_cert_sign_to_der(
X509_version_v3,
serial, sizeof(serial),
OID_sm2sign_with_sm3,
@@ -929,7 +924,8 @@ static int test_cms_key_agreement_info(void)
not_before, not_after,
name, namelen,
&sm2_key, NULL, 0, NULL, 0, NULL, 0,
&sm2_key, SM2_DEFAULT_ID, SM2_DEFAULT_ID_LENGTH) != 1) {
&sm2_key, SM2_DEFAULT_ID, SM2_DEFAULT_ID_LENGTH,
&p, &certlen) != 1) {
error_print();
return -1;
}

View File

@@ -779,7 +779,8 @@ static int test_x509_exts(void)
static int test_x509_cert_with_exts(void)
{
uint8_t cert[1024];
size_t certlen;
size_t certlen = 0;
uint8_t *p = cert;
uint8_t serial[20];
uint8_t name[256];
size_t namelen;
@@ -810,8 +811,7 @@ static int test_x509_cert_with_exts(void)
return -1;
}
if (x509_cert_sign(
cert, &certlen, sizeof(cert),
if (x509_cert_sign_to_der(
X509_version_v3,
serial, sizeof(serial),
OID_sm2sign_with_sm3,
@@ -823,10 +823,16 @@ static int test_x509_cert_with_exts(void)
uniq_id, sizeof(uniq_id),
exts, extslen,
&sm2_key,
SM2_DEFAULT_ID, strlen(SM2_DEFAULT_ID)) != 1) {
SM2_DEFAULT_ID, strlen(SM2_DEFAULT_ID),
&p, &certlen) != 1) {
error_print();
return -1;
}
if (certlen > sizeof(cert)) {
error_print();
return -1;
}
x509_cert_print(stderr, 0, 0, "Certificate", cert, certlen);

View File

@@ -326,8 +326,7 @@ static int test_x509_cert(void)
set_x509_name(subject, &subject_len, sizeof(subject));
sm2_key_generate(&sm2_key);
if (x509_cert_sign(
cert, &certlen, sizeof(cert),
if (x509_cert_sign_to_der(
X509_version_v3,
serial, sizeof(serial),
OID_sm2sign_with_sm3,
@@ -338,7 +337,8 @@ static int test_x509_cert(void)
NULL, 0,
NULL, 0,
NULL, 0,
&sm2_key, SM2_DEFAULT_ID, strlen(SM2_DEFAULT_ID)) != 1) {
&sm2_key, SM2_DEFAULT_ID, strlen(SM2_DEFAULT_ID),
&p, &certlen) != 1) {
error_print();
return -1;
}