]>
git.ipfire.org Git - thirdparty/openssl.git/blob - test/asn1_internal_test.c
2 * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved.
4 * Licensed under the Apache License 2.0 (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
10 /* Internal tests for the asn1 module */
15 #include <openssl/asn1.h>
16 #include <openssl/evp.h>
17 #include <openssl/objects.h>
19 #include "internal/nelem.h"
21 /**********************************************************************
23 * Test of a_strnid's tbl_standard
27 #include "../crypto/asn1/tbl_standard.h"
29 static int test_tbl_standard(void)
31 const ASN1_STRING_TABLE
*tmp
;
35 for (tmp
= tbl_standard
, i
= 0; i
< OSSL_NELEM(tbl_standard
); i
++, tmp
++) {
36 if (tmp
->nid
< last_nid
) {
43 if (TEST_int_ne(last_nid
, 0)) {
44 TEST_info("asn1 tbl_standard: Table order OK");
48 TEST_info("asn1 tbl_standard: out of order");
49 for (tmp
= tbl_standard
, i
= 0; i
< OSSL_NELEM(tbl_standard
); i
++, tmp
++)
50 TEST_note("asn1 tbl_standard: Index %zu, NID %d, Name=%s",
51 i
, tmp
->nid
, OBJ_nid2ln(tmp
->nid
));
56 /**********************************************************************
58 * Test of ameth_lib's standard_methods
62 #include "crypto/asn1.h"
63 #include "../crypto/asn1/standard_methods.h"
65 static int test_standard_methods(void)
67 const EVP_PKEY_ASN1_METHOD
**tmp
;
68 int last_pkey_id
= -1;
72 for (tmp
= standard_methods
, i
= 0; i
< OSSL_NELEM(standard_methods
);
74 if ((*tmp
)->pkey_id
< last_pkey_id
) {
78 last_pkey_id
= (*tmp
)->pkey_id
;
81 * One of the following must be true:
83 * pem_str == NULL AND ASN1_PKEY_ALIAS is set
84 * pem_str != NULL AND ASN1_PKEY_ALIAS is clear
86 * Anything else is an error and may lead to a corrupt ASN1 method table
88 if (!TEST_true(((*tmp
)->pem_str
== NULL
&& ((*tmp
)->pkey_flags
& ASN1_PKEY_ALIAS
) != 0)
89 || ((*tmp
)->pem_str
!= NULL
&& ((*tmp
)->pkey_flags
& ASN1_PKEY_ALIAS
) == 0))) {
90 TEST_note("asn1 standard methods: Index %zu, pkey ID %d, Name=%s",
91 i
, (*tmp
)->pkey_id
, OBJ_nid2sn((*tmp
)->pkey_id
));
96 if (TEST_int_ne(last_pkey_id
, 0)) {
97 TEST_info("asn1 standard methods: Table order OK");
101 TEST_note("asn1 standard methods: out of order");
102 for (tmp
= standard_methods
, i
= 0; i
< OSSL_NELEM(standard_methods
);
104 TEST_note("asn1 standard methods: Index %zu, pkey ID %d, Name=%s",
105 i
, (*tmp
)->pkey_id
, OBJ_nid2sn((*tmp
)->pkey_id
));
110 int setup_tests(void)
112 ADD_TEST(test_tbl_standard
);
113 ADD_TEST(test_standard_methods
);