]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. | |
3 | * | |
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 | |
8 | */ | |
9 | ||
10 | /* Internal tests for the x509 and x509v3 modules */ | |
11 | ||
12 | #include <stdio.h> | |
13 | #include <string.h> | |
14 | ||
15 | #include <openssl/ssl.h> | |
16 | #include "testutil.h" | |
17 | #include "internal/nelem.h" | |
18 | #include "../ssl/ssl_locl.h" | |
19 | #include "../ssl/ssl_cert_table.h" | |
20 | ||
21 | #define test_cert_table(nid, amask, idx) \ | |
22 | do_test_cert_table(nid, amask, idx, #idx) | |
23 | ||
24 | static int do_test_cert_table(int nid, uint32_t amask, size_t idx, | |
25 | const char *idxname) | |
26 | { | |
27 | const SSL_CERT_LOOKUP *clu = &ssl_cert_info[idx]; | |
28 | ||
29 | if (clu->nid == nid && clu->amask == amask) | |
30 | return 1; | |
31 | ||
32 | TEST_error("Invalid table entry for certificate type %s, index %zu", | |
33 | idxname, idx); | |
34 | if (clu->nid != nid) | |
35 | TEST_note("Expected %s, got %s\n", OBJ_nid2sn(nid), | |
36 | OBJ_nid2sn(clu->nid)); | |
37 | if (clu->amask != amask) | |
38 | TEST_note("Expected auth mask 0x%x, got 0x%x\n", amask, clu->amask); | |
39 | return 0; | |
40 | } | |
41 | ||
42 | /* Sanity check of ssl_cert_table */ | |
43 | ||
44 | static int test_ssl_cert_table(void) | |
45 | { | |
46 | TEST_size_t_eq(OSSL_NELEM(ssl_cert_info), SSL_PKEY_NUM); | |
47 | if (!test_cert_table(EVP_PKEY_RSA, SSL_aRSA, SSL_PKEY_RSA)) | |
48 | return 0; | |
49 | if (!test_cert_table(EVP_PKEY_DSA, SSL_aDSS, SSL_PKEY_DSA_SIGN)) | |
50 | return 0; | |
51 | if (!test_cert_table(EVP_PKEY_EC, SSL_aECDSA, SSL_PKEY_ECC)) | |
52 | return 0; | |
53 | if (!test_cert_table(NID_id_GostR3410_2001, SSL_aGOST01, SSL_PKEY_GOST01)) | |
54 | return 0; | |
55 | if (!test_cert_table(NID_id_GostR3410_2012_256, SSL_aGOST12, | |
56 | SSL_PKEY_GOST12_256)) | |
57 | return 0; | |
58 | if (!test_cert_table(NID_id_GostR3410_2012_512, SSL_aGOST12, | |
59 | SSL_PKEY_GOST12_512)) | |
60 | return 0; | |
61 | if (!test_cert_table(EVP_PKEY_ED25519, SSL_aECDSA, SSL_PKEY_ED25519)) | |
62 | return 0; | |
63 | if (!test_cert_table(EVP_PKEY_ED448, SSL_aECDSA, SSL_PKEY_ED448)) | |
64 | return 0; | |
65 | ||
66 | return 1; | |
67 | } | |
68 | ||
69 | int setup_tests(void) | |
70 | { | |
71 | ADD_TEST(test_ssl_cert_table); | |
72 | return 1; | |
73 | } |