]>
Commit | Line | Data |
---|---|---|
2c166171 | 1 | /* |
1212818e | 2 | * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. |
2c166171 RL |
3 | * |
4 | * Licensed under the OpenSSL license (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 | |
8 | */ | |
9 | ||
10 | /* Internal tests for the asn1 module */ | |
11 | ||
12 | #include <stdio.h> | |
13 | #include <string.h> | |
14 | ||
15 | #include <openssl/asn1.h> | |
16 | #include <openssl/evp.h> | |
17 | #include <openssl/objects.h> | |
18 | #include "testutil.h" | |
176db6dc | 19 | #include "internal/nelem.h" |
2c166171 | 20 | |
2c166171 RL |
21 | /********************************************************************** |
22 | * | |
23 | * Test of a_strnid's tbl_standard | |
24 | * | |
25 | ***/ | |
26 | ||
2c166171 RL |
27 | #include "../crypto/asn1/tbl_standard.h" |
28 | ||
899e62d1 | 29 | static int test_tbl_standard(void) |
2c166171 RL |
30 | { |
31 | const ASN1_STRING_TABLE *tmp; | |
32 | int last_nid = -1; | |
33 | size_t i; | |
34 | ||
35 | for (tmp = tbl_standard, i = 0; i < OSSL_NELEM(tbl_standard); i++, tmp++) { | |
36 | if (tmp->nid < last_nid) { | |
37 | last_nid = 0; | |
38 | break; | |
39 | } | |
40 | last_nid = tmp->nid; | |
41 | } | |
42 | ||
8fe3127c P |
43 | if (TEST_int_ne(last_nid, 0)) { |
44 | TEST_info("asn1 tbl_standard: Table order OK"); | |
2c166171 RL |
45 | return 1; |
46 | } | |
47 | ||
a7b68c5b | 48 | TEST_info("asn1 tbl_standard: out of order"); |
2c166171 | 49 | for (tmp = tbl_standard, i = 0; i < OSSL_NELEM(tbl_standard); i++, tmp++) |
a7b68c5b | 50 | TEST_note("asn1 tbl_standard: Index %zu, NID %d, Name=%s", |
8fe3127c | 51 | i, tmp->nid, OBJ_nid2ln(tmp->nid)); |
2c166171 RL |
52 | |
53 | return 0; | |
54 | } | |
55 | ||
2c166171 RL |
56 | /********************************************************************** |
57 | * | |
58 | * Test of ameth_lib's standard_methods | |
59 | * | |
60 | ***/ | |
61 | ||
2c166171 RL |
62 | #include "internal/asn1_int.h" |
63 | #include "../crypto/asn1/standard_methods.h" | |
64 | ||
899e62d1 | 65 | static int test_standard_methods(void) |
2c166171 RL |
66 | { |
67 | const EVP_PKEY_ASN1_METHOD **tmp; | |
68 | int last_pkey_id = -1; | |
69 | size_t i; | |
38eca7fe | 70 | int ok = 1; |
2c166171 RL |
71 | |
72 | for (tmp = standard_methods, i = 0; i < OSSL_NELEM(standard_methods); | |
73 | i++, tmp++) { | |
74 | if ((*tmp)->pkey_id < last_pkey_id) { | |
75 | last_pkey_id = 0; | |
76 | break; | |
77 | } | |
78 | last_pkey_id = (*tmp)->pkey_id; | |
38eca7fe RL |
79 | |
80 | /* | |
81 | * One of the following must be true: | |
82 | * | |
83 | * pem_str == NULL AND ASN1_PKEY_ALIAS is set | |
84 | * pem_str != NULL AND ASN1_PKEY_ALIAS is clear | |
85 | * | |
86 | * Anything else is an error and may lead to a corrupt ASN1 method table | |
87 | */ | |
08076910 DMSP |
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))) { | |
38eca7fe RL |
90 | TEST_note("asn1 standard methods: Index %zu, pkey ID %d, Name=%s", |
91 | i, (*tmp)->pkey_id, OBJ_nid2sn((*tmp)->pkey_id)); | |
92 | ok = 0; | |
93 | } | |
2c166171 RL |
94 | } |
95 | ||
8fe3127c P |
96 | if (TEST_int_ne(last_pkey_id, 0)) { |
97 | TEST_info("asn1 standard methods: Table order OK"); | |
38eca7fe | 98 | return ok; |
2c166171 RL |
99 | } |
100 | ||
a7b68c5b | 101 | TEST_note("asn1 standard methods: out of order"); |
2c166171 RL |
102 | for (tmp = standard_methods, i = 0; i < OSSL_NELEM(standard_methods); |
103 | i++, tmp++) | |
a7b68c5b P |
104 | TEST_note("asn1 standard methods: Index %zu, pkey ID %d, Name=%s", |
105 | i, (*tmp)->pkey_id, OBJ_nid2sn((*tmp)->pkey_id)); | |
2c166171 RL |
106 | |
107 | return 0; | |
108 | } | |
109 | ||
ad887416 | 110 | int setup_tests(void) |
2c166171 | 111 | { |
308b876d EK |
112 | ADD_TEST(test_tbl_standard); |
113 | ADD_TEST(test_standard_methods); | |
ad887416 | 114 | return 1; |
2c166171 | 115 | } |