diff options
author | Paul Yang <yang.yang@baishancloud.com> | 2019-04-01 03:21:53 +0200 |
---|---|---|
committer | Paul Yang <yang.yang@baishancloud.com> | 2019-04-09 14:44:42 +0200 |
commit | ccf453610f48fe88968f0cfc63784b503eae33a0 (patch) | |
tree | e91e6430ea6e7062bc01b31d686a0d79581c9e93 /test/verify_extra_test.c | |
parent | test/params_test.c : Adjust tests to check utf8_ptr sizes (diff) | |
download | openssl-ccf453610f48fe88968f0cfc63784b503eae33a0.tar.xz openssl-ccf453610f48fe88968f0cfc63784b503eae33a0.zip |
Make X509_set_sm2_id consistent with other setters
This commit makes the X509_set_sm2_id to 'set0' behaviour, which means
the memory management is passed to X509 and user doesn't need to free
the sm2_id parameter later. API name also changes to X509_set0_sm2_id.
Document and test case are also updated.
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/8626)
Diffstat (limited to 'test/verify_extra_test.c')
-rw-r--r-- | test/verify_extra_test.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/verify_extra_test.c b/test/verify_extra_test.c index 468de62092..f16b3f0b4a 100644 --- a/test/verify_extra_test.c +++ b/test/verify_extra_test.c @@ -8,6 +8,7 @@ */ #include <stdio.h> +#include <string.h> #include <openssl/crypto.h> #include <openssl/bio.h> #include <openssl/x509.h> @@ -177,6 +178,48 @@ static int test_store_ctx(void) OPT_TEST_DECLARE_USAGE("roots.pem untrusted.pem bad.pem\n") +#ifndef OPENSSL_NO_SM2 +static int test_sm2_id(void) +{ + /* we only need an X509 structure, no matter if it's a real SM2 cert */ + X509 *x = NULL; + BIO *bio = NULL; + int ret = 0; + ASN1_OCTET_STRING *v = NULL, *v2 = NULL; + char *sm2id = "this is an ID"; + + bio = BIO_new_file(bad_f, "r"); + if (bio == NULL) + goto err; + + x = PEM_read_bio_X509(bio, NULL, 0, NULL); + if (x == NULL) + goto err; + + v = ASN1_OCTET_STRING_new(); + if (v == NULL) + goto err; + + if (!ASN1_OCTET_STRING_set(v, (unsigned char *)sm2id, (int)strlen(sm2id))) { + ASN1_OCTET_STRING_free(v); + goto err; + } + + X509_set0_sm2_id(x, v); + + v2 = X509_get0_sm2_id(x); + if (!TEST_ptr(v2) + || !TEST_int_eq(ASN1_OCTET_STRING_cmp(v, v2), 0)) + goto err; + + ret = 1; + err: + X509_free(x); + BIO_free(bio); + return ret; +} +#endif + int setup_tests(void) { if (!TEST_ptr(roots_f = test_get_argument(0)) @@ -186,5 +229,8 @@ int setup_tests(void) ADD_TEST(test_alt_chains_cert_forgery); ADD_TEST(test_store_ctx); +#ifndef OPENSSL_NO_SM2 + ADD_TEST(test_sm2_id); +#endif return 1; } |