VirtualBox

source: vbox/trunk/src/libs/openssl-3.1.0/test/pkcs12_format_test.c@ 100908

最後變更 在這個檔案從100908是 99366,由 vboxsync 提交於 22 月 前

openssl-3.1.0: Applied and adjusted our OpenSSL changes to 3.0.7. bugref:10418

檔案大小: 33.2 KB
 
1/*
2 * Copyright 2020-2022 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#include <stdio.h>
11#include <string.h>
12#include <stdlib.h>
13
14#include <openssl/pkcs12.h>
15#include <openssl/x509.h>
16#include <openssl/x509v3.h>
17#include <openssl/pem.h>
18
19#include "testutil.h"
20#include "helpers/pkcs12.h"
21
22static int default_libctx = 1;
23
24static OSSL_LIB_CTX *testctx = NULL;
25static OSSL_PROVIDER *nullprov = NULL;
26static OSSL_PROVIDER *deflprov = NULL;
27static OSSL_PROVIDER *lgcyprov = NULL;
28
29/* --------------------------------------------------------------------------
30 * PKCS12 component test data
31 */
32
33static const unsigned char CERT1[] =
34{
35 0x30, 0x82, 0x01, 0xed, 0x30, 0x82, 0x01, 0x56, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00,
36 0x8b, 0x4b, 0x5e, 0x6c, 0x03, 0x28, 0x4e, 0xe6, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
37 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x19, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55,
38 0x04, 0x03, 0x0c, 0x0e, 0x50, 0x31, 0x32, 0x54, 0x65, 0x73, 0x74, 0x2d, 0x52, 0x6f, 0x6f, 0x74,
39 0x2d, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x39, 0x30, 0x39, 0x33, 0x30, 0x30, 0x30, 0x34, 0x36,
40 0x35, 0x36, 0x5a, 0x17, 0x0d, 0x32, 0x39, 0x30, 0x39, 0x32, 0x37, 0x30, 0x30, 0x34, 0x36, 0x35,
41 0x36, 0x5a, 0x30, 0x1b, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x10, 0x50,
42 0x31, 0x32, 0x54, 0x65, 0x73, 0x74, 0x2d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2d, 0x31, 0x30,
43 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
44 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xbc, 0xdc, 0x6f, 0x8c,
45 0x7a, 0x2a, 0x4b, 0xea, 0x66, 0x66, 0x04, 0xa9, 0x05, 0x92, 0x53, 0xd7, 0x13, 0x3c, 0x49, 0xe1,
46 0xc8, 0xbb, 0xdf, 0x3d, 0xcb, 0x88, 0x31, 0x07, 0x20, 0x59, 0x93, 0x24, 0x7f, 0x7d, 0xc6, 0x84,
47 0x81, 0x16, 0x64, 0x4a, 0x52, 0xa6, 0x30, 0x44, 0xdc, 0x1a, 0x30, 0xde, 0xae, 0x29, 0x18, 0xcf,
48 0xc7, 0xf3, 0xcf, 0x0c, 0xb7, 0x8e, 0x2b, 0x1e, 0x21, 0x01, 0x0b, 0xfb, 0xe5, 0xe6, 0xcf, 0x2b,
49 0x84, 0xe1, 0x33, 0xf8, 0xba, 0x02, 0xfc, 0x30, 0xfa, 0xc4, 0x33, 0xc7, 0x37, 0xc6, 0x7f, 0x72,
50 0x31, 0x92, 0x1d, 0x8f, 0xa0, 0xfb, 0xe5, 0x4a, 0x08, 0x31, 0x78, 0x80, 0x9c, 0x23, 0xb4, 0xe9,
51 0x19, 0x56, 0x04, 0xfa, 0x0d, 0x07, 0x04, 0xb7, 0x43, 0xac, 0x4c, 0x49, 0x7c, 0xc2, 0xa1, 0x44,
52 0xc1, 0x48, 0x7d, 0x28, 0xe5, 0x23, 0x66, 0x07, 0x22, 0xd5, 0xf0, 0xf1, 0x02, 0x03, 0x01, 0x00,
53 0x01, 0xa3, 0x3b, 0x30, 0x39, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
54 0x80, 0x14, 0xdb, 0xbb, 0xb8, 0x92, 0x4e, 0x24, 0x0b, 0x1b, 0xbb, 0x78, 0x33, 0xf9, 0x01, 0x02,
55 0x23, 0x0d, 0x96, 0x18, 0x30, 0x47, 0x30, 0x09, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x02, 0x30,
56 0x00, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x04, 0xf0, 0x30, 0x0d,
57 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x81, 0x81,
58 0x00, 0x1c, 0x13, 0xdc, 0x02, 0xf1, 0x44, 0x36, 0x65, 0xa9, 0xbe, 0x30, 0x1c, 0x66, 0x14, 0x20,
59 0x86, 0x5a, 0xa8, 0x69, 0x25, 0xf8, 0x1a, 0xb6, 0x9e, 0x5e, 0xe9, 0x89, 0xb8, 0x67, 0x70, 0x19,
60 0x87, 0x60, 0xeb, 0x4b, 0x11, 0x71, 0x85, 0xf8, 0xe9, 0xa7, 0x3e, 0x20, 0x42, 0xec, 0x43, 0x25,
61 0x01, 0x03, 0xe5, 0x4d, 0x83, 0x22, 0xf5, 0x8e, 0x3a, 0x1a, 0x1b, 0xd4, 0x1c, 0xda, 0x6b, 0x9d,
62 0x10, 0x1b, 0xee, 0x67, 0x4e, 0x1f, 0x69, 0xab, 0xbc, 0xaa, 0x62, 0x8e, 0x9e, 0xc6, 0xee, 0xd6,
63 0x09, 0xc0, 0xca, 0xe0, 0xaa, 0x9f, 0x07, 0xb2, 0xc2, 0xbb, 0x31, 0x96, 0xa2, 0x04, 0x62, 0xd3,
64 0x13, 0x32, 0x29, 0x67, 0x6e, 0xad, 0x2e, 0x0b, 0xea, 0x04, 0x7c, 0x8c, 0x5a, 0x5d, 0xac, 0x14,
65 0xaa, 0x61, 0x7f, 0x28, 0x6c, 0x2d, 0x64, 0x2d, 0xc3, 0xaf, 0x77, 0x52, 0x90, 0xb4, 0x37, 0xc0,
66 0x30,
67};
68
69static const unsigned char CERT2[] =
70{
71 0x30, 0x82, 0x01, 0xed, 0x30, 0x82, 0x01, 0x56, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00,
72 0x8b, 0x4b, 0x5e, 0x6c, 0x03, 0x28, 0x4e, 0xe7, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
73 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x19, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55,
74 0x04, 0x03, 0x0c, 0x0e, 0x50, 0x31, 0x32, 0x54, 0x65, 0x73, 0x74, 0x2d, 0x52, 0x6f, 0x6f, 0x74,
75 0x2d, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x39, 0x30, 0x39, 0x33, 0x30, 0x30, 0x30, 0x34, 0x36,
76 0x35, 0x36, 0x5a, 0x17, 0x0d, 0x32, 0x39, 0x30, 0x39, 0x32, 0x37, 0x30, 0x30, 0x34, 0x36, 0x35,
77 0x36, 0x5a, 0x30, 0x1b, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x10, 0x50,
78 0x31, 0x32, 0x54, 0x65, 0x73, 0x74, 0x2d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x31, 0x30,
79 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
80 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xa8, 0x6e, 0x40, 0x86,
81 0x9f, 0x98, 0x59, 0xfb, 0x57, 0xbf, 0xc1, 0x55, 0x12, 0x38, 0xeb, 0xb3, 0x46, 0x34, 0xc9, 0x35,
82 0x4d, 0xfd, 0x03, 0xe9, 0x3a, 0x88, 0x9e, 0x97, 0x8f, 0xf4, 0xec, 0x36, 0x7b, 0x3f, 0xba, 0xb8,
83 0xa5, 0x96, 0x30, 0x03, 0xc5, 0xc6, 0xd9, 0xa8, 0x4e, 0xbc, 0x23, 0x51, 0xa1, 0x96, 0xd2, 0x03,
84 0x98, 0x73, 0xb6, 0x17, 0x9c, 0x77, 0xd4, 0x95, 0x1e, 0x1b, 0xb3, 0x1b, 0xc8, 0x71, 0xd1, 0x2e,
85 0x31, 0xc7, 0x6a, 0x75, 0x57, 0x08, 0x7f, 0xba, 0x70, 0x76, 0xf7, 0x67, 0xf4, 0x4e, 0xbe, 0xfc,
86 0x70, 0x61, 0x41, 0x07, 0x2b, 0x7c, 0x3c, 0x3b, 0xb3, 0xbc, 0xd5, 0xa8, 0xbd, 0x28, 0xd8, 0x49,
87 0xd3, 0xe1, 0x78, 0xc8, 0xc1, 0x42, 0x5e, 0x18, 0x36, 0xa8, 0x41, 0xf7, 0xc8, 0xaa, 0x35, 0xfe,
88 0x2d, 0xd1, 0xb4, 0xcc, 0x00, 0x67, 0xae, 0x79, 0xd3, 0x28, 0xd5, 0x5b, 0x02, 0x03, 0x01, 0x00,
89 0x01, 0xa3, 0x3b, 0x30, 0x39, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
90 0x80, 0x14, 0xdb, 0xbb, 0xb8, 0x92, 0x4e, 0x24, 0x0b, 0x1b, 0xbb, 0x78, 0x33, 0xf9, 0x01, 0x02,
91 0x23, 0x0d, 0x96, 0x18, 0x30, 0x47, 0x30, 0x09, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x02, 0x30,
92 0x00, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x04, 0xf0, 0x30, 0x0d,
93 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x81, 0x81,
94 0x00, 0x3b, 0xa6, 0x73, 0xbe, 0xe0, 0x28, 0xed, 0x1f, 0x29, 0x78, 0x4c, 0xc0, 0x1f, 0xe9, 0x85,
95 0xc6, 0x8f, 0xe3, 0x87, 0x7c, 0xd9, 0xe7, 0x0a, 0x37, 0xe8, 0xaa, 0xb5, 0xd2, 0x7f, 0xf8, 0x90,
96 0x20, 0x80, 0x35, 0xa7, 0x79, 0x2b, 0x04, 0xa7, 0xbf, 0xe6, 0x7b, 0x58, 0xcb, 0xec, 0x0e, 0x58,
97 0xef, 0x2a, 0x70, 0x8a, 0x56, 0x8a, 0xcf, 0x6b, 0x7a, 0x74, 0x0c, 0xf4, 0x15, 0x37, 0x93, 0xcd,
98 0xe6, 0xb2, 0xa1, 0x83, 0x09, 0xdb, 0x9e, 0x4f, 0xff, 0x6a, 0x17, 0x4f, 0x33, 0xc9, 0xcc, 0x90,
99 0x2a, 0x67, 0xff, 0x16, 0x78, 0xa8, 0x2c, 0x10, 0xe0, 0x52, 0x8c, 0xe6, 0xe9, 0x90, 0x8d, 0xe0,
100 0x62, 0x04, 0x9a, 0x0f, 0x44, 0x01, 0x82, 0x14, 0x92, 0x44, 0x25, 0x69, 0x22, 0xb7, 0xb8, 0xc5,
101 0x94, 0x4c, 0x4b, 0x1c, 0x9b, 0x92, 0x60, 0x66, 0x90, 0x4e, 0xb9, 0xa8, 0x4c, 0x89, 0xbb, 0x0f,
102 0x0b,
103};
104
105static const unsigned char KEY1[] =
106{
107 0x30, 0x82, 0x02, 0x5d, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xbc, 0xdc, 0x6f, 0x8c, 0x7a,
108 0x2a, 0x4b, 0xea, 0x66, 0x66, 0x04, 0xa9, 0x05, 0x92, 0x53, 0xd7, 0x13, 0x3c, 0x49, 0xe1, 0xc8,
109 0xbb, 0xdf, 0x3d, 0xcb, 0x88, 0x31, 0x07, 0x20, 0x59, 0x93, 0x24, 0x7f, 0x7d, 0xc6, 0x84, 0x81,
110 0x16, 0x64, 0x4a, 0x52, 0xa6, 0x30, 0x44, 0xdc, 0x1a, 0x30, 0xde, 0xae, 0x29, 0x18, 0xcf, 0xc7,
111 0xf3, 0xcf, 0x0c, 0xb7, 0x8e, 0x2b, 0x1e, 0x21, 0x01, 0x0b, 0xfb, 0xe5, 0xe6, 0xcf, 0x2b, 0x84,
112 0xe1, 0x33, 0xf8, 0xba, 0x02, 0xfc, 0x30, 0xfa, 0xc4, 0x33, 0xc7, 0x37, 0xc6, 0x7f, 0x72, 0x31,
113 0x92, 0x1d, 0x8f, 0xa0, 0xfb, 0xe5, 0x4a, 0x08, 0x31, 0x78, 0x80, 0x9c, 0x23, 0xb4, 0xe9, 0x19,
114 0x56, 0x04, 0xfa, 0x0d, 0x07, 0x04, 0xb7, 0x43, 0xac, 0x4c, 0x49, 0x7c, 0xc2, 0xa1, 0x44, 0xc1,
115 0x48, 0x7d, 0x28, 0xe5, 0x23, 0x66, 0x07, 0x22, 0xd5, 0xf0, 0xf1, 0x02, 0x03, 0x01, 0x00, 0x01,
116 0x02, 0x81, 0x81, 0x00, 0xa5, 0x6d, 0xf9, 0x8f, 0xf5, 0x5a, 0xa3, 0x50, 0xd9, 0x0d, 0x37, 0xbb,
117 0xce, 0x13, 0x94, 0xb8, 0xea, 0x32, 0x7f, 0x0c, 0xf5, 0x46, 0x0b, 0x90, 0x17, 0x7e, 0x5e, 0x63,
118 0xbd, 0xa4, 0x78, 0xcd, 0x19, 0x97, 0xd4, 0x92, 0x30, 0x78, 0xaa, 0xb4, 0xa7, 0x9c, 0xc6, 0xdf,
119 0x2a, 0x65, 0x0e, 0xb5, 0x9f, 0x9c, 0x84, 0x0d, 0x4d, 0x3a, 0x74, 0xfc, 0xd0, 0xb4, 0x09, 0x74,
120 0xc4, 0xb8, 0x24, 0x03, 0xa8, 0xf0, 0xf8, 0x0d, 0x5c, 0x8e, 0xdf, 0x4b, 0xe1, 0x0a, 0x8f, 0x4f,
121 0xd5, 0xc7, 0x9b, 0x54, 0x55, 0x8f, 0x00, 0x5c, 0xea, 0x4c, 0x73, 0xf9, 0x1b, 0xbf, 0xb8, 0x93,
122 0x33, 0x20, 0xce, 0x45, 0xd9, 0x03, 0x02, 0xb2, 0x36, 0xc5, 0x0a, 0x30, 0x50, 0x78, 0x80, 0x66,
123 0x00, 0x22, 0x38, 0x86, 0xcf, 0x63, 0x4a, 0x5c, 0xbf, 0x2b, 0xd9, 0x6e, 0xe6, 0xf0, 0x39, 0xad,
124 0x12, 0x25, 0x41, 0xb9, 0x02, 0x41, 0x00, 0xf3, 0x7c, 0x07, 0x99, 0x64, 0x3a, 0x28, 0x8c, 0x8d,
125 0x05, 0xfe, 0x32, 0xb5, 0x4c, 0x8c, 0x6d, 0xde, 0x3d, 0x16, 0x08, 0xa0, 0x01, 0x61, 0x4f, 0x8e,
126 0xa0, 0xf7, 0x26, 0x26, 0xb5, 0x8e, 0xc0, 0x7a, 0xce, 0x86, 0x34, 0xde, 0xb8, 0xef, 0x86, 0x01,
127 0xbe, 0x24, 0xaa, 0x9b, 0x36, 0x93, 0x72, 0x9b, 0xf9, 0xc6, 0xcb, 0x76, 0x84, 0x67, 0x06, 0x06,
128 0x30, 0x50, 0xdf, 0x42, 0x17, 0xe0, 0xa7, 0x02, 0x41, 0x00, 0xc6, 0x91, 0xa0, 0x41, 0x34, 0x11,
129 0x67, 0x4b, 0x08, 0x0f, 0xda, 0xa7, 0x99, 0xec, 0x58, 0x11, 0xa5, 0x82, 0xdb, 0x50, 0xfe, 0x77,
130 0xe2, 0xd1, 0x53, 0x9c, 0x7d, 0xe8, 0xbf, 0xe7, 0x7c, 0xa9, 0x01, 0xb1, 0x87, 0xc3, 0x52, 0x79,
131 0x9e, 0x2c, 0xa7, 0x6f, 0x02, 0x37, 0x32, 0xef, 0x24, 0x31, 0x21, 0x0b, 0x86, 0x05, 0x32, 0x4a,
132 0x2e, 0x0b, 0x65, 0x05, 0xd3, 0xd6, 0x30, 0xb2, 0xfc, 0xa7, 0x02, 0x41, 0x00, 0xc2, 0xed, 0x31,
133 0xdc, 0x40, 0x9c, 0x3a, 0xe8, 0x42, 0xe2, 0x60, 0x5e, 0x52, 0x3c, 0xc5, 0x54, 0x14, 0x0e, 0x8d,
134 0x7c, 0x3c, 0x34, 0xbe, 0xa6, 0x05, 0x86, 0xa2, 0x36, 0x5d, 0xd9, 0x0e, 0x3e, 0xd4, 0x52, 0x50,
135 0xa9, 0x35, 0x01, 0x93, 0x68, 0x92, 0x2e, 0x9a, 0x86, 0x27, 0x1a, 0xab, 0x32, 0x9e, 0xe2, 0x79,
136 0x9f, 0x5b, 0xf3, 0xa5, 0xd2, 0xf1, 0xd3, 0x6e, 0x7b, 0x3e, 0x1b, 0x85, 0x93, 0x02, 0x40, 0x68,
137 0xb8, 0xb6, 0x7e, 0x8c, 0xba, 0x3c, 0xf2, 0x8a, 0x2e, 0xea, 0x4f, 0x07, 0xd3, 0x68, 0x62, 0xee,
138 0x1a, 0x04, 0x16, 0x44, 0x0d, 0xef, 0xf6, 0x1b, 0x95, 0x65, 0xa5, 0xd1, 0x47, 0x81, 0x2c, 0x14,
139 0xb3, 0x8e, 0xf9, 0x08, 0xcf, 0x11, 0x07, 0x55, 0xca, 0x2a, 0xad, 0xf7, 0xd3, 0xbd, 0x0f, 0x97,
140 0xf0, 0xde, 0xde, 0x70, 0xb6, 0x44, 0x70, 0x47, 0xf7, 0xf9, 0xcf, 0x75, 0x61, 0x7f, 0xf3, 0x02,
141 0x40, 0x38, 0x4a, 0x67, 0xaf, 0xae, 0xb6, 0xb2, 0x6a, 0x00, 0x25, 0x5a, 0xa4, 0x65, 0x20, 0xb1,
142 0x13, 0xbd, 0x83, 0xff, 0xb4, 0xbc, 0xf4, 0xdd, 0xa1, 0xbb, 0x1c, 0x96, 0x37, 0x35, 0xf4, 0xbf,
143 0xed, 0x4c, 0xed, 0x92, 0xe8, 0xac, 0xc9, 0xc1, 0xa5, 0xa3, 0x23, 0x66, 0x40, 0x8a, 0xa1, 0xe6,
144 0xe3, 0x95, 0xfe, 0xc4, 0x53, 0xf5, 0x7d, 0x6e, 0xca, 0x45, 0x42, 0xe4, 0xc2, 0x9f, 0xe5, 0x1e,
145 0xb5,
146};
147
148
149static const unsigned char KEY2[] =
150{
151 0x30, 0x82, 0x02, 0x5c, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xa8, 0x6e, 0x40, 0x86, 0x9f,
152 0x98, 0x59, 0xfb, 0x57, 0xbf, 0xc1, 0x55, 0x12, 0x38, 0xeb, 0xb3, 0x46, 0x34, 0xc9, 0x35, 0x4d,
153 0xfd, 0x03, 0xe9, 0x3a, 0x88, 0x9e, 0x97, 0x8f, 0xf4, 0xec, 0x36, 0x7b, 0x3f, 0xba, 0xb8, 0xa5,
154 0x96, 0x30, 0x03, 0xc5, 0xc6, 0xd9, 0xa8, 0x4e, 0xbc, 0x23, 0x51, 0xa1, 0x96, 0xd2, 0x03, 0x98,
155 0x73, 0xb6, 0x17, 0x9c, 0x77, 0xd4, 0x95, 0x1e, 0x1b, 0xb3, 0x1b, 0xc8, 0x71, 0xd1, 0x2e, 0x31,
156 0xc7, 0x6a, 0x75, 0x57, 0x08, 0x7f, 0xba, 0x70, 0x76, 0xf7, 0x67, 0xf4, 0x4e, 0xbe, 0xfc, 0x70,
157 0x61, 0x41, 0x07, 0x2b, 0x7c, 0x3c, 0x3b, 0xb3, 0xbc, 0xd5, 0xa8, 0xbd, 0x28, 0xd8, 0x49, 0xd3,
158 0xe1, 0x78, 0xc8, 0xc1, 0x42, 0x5e, 0x18, 0x36, 0xa8, 0x41, 0xf7, 0xc8, 0xaa, 0x35, 0xfe, 0x2d,
159 0xd1, 0xb4, 0xcc, 0x00, 0x67, 0xae, 0x79, 0xd3, 0x28, 0xd5, 0x5b, 0x02, 0x03, 0x01, 0x00, 0x01,
160 0x02, 0x81, 0x81, 0x00, 0xa6, 0x00, 0x83, 0xf8, 0x2b, 0x33, 0xac, 0xfb, 0xdb, 0xf0, 0x52, 0x4b,
161 0xd6, 0x39, 0xe3, 0x94, 0x3d, 0x8d, 0xa9, 0x01, 0xb0, 0x6b, 0xbe, 0x7f, 0x10, 0x01, 0xb6, 0xcd,
162 0x0a, 0x45, 0x0a, 0xca, 0x67, 0x8e, 0xd8, 0x29, 0x44, 0x8a, 0x51, 0xa8, 0x66, 0x35, 0x26, 0x30,
163 0x8b, 0xe9, 0x41, 0xa6, 0x22, 0xec, 0xd2, 0xf0, 0x58, 0x41, 0x33, 0x26, 0xf2, 0x3f, 0xe8, 0x75,
164 0x4f, 0xc7, 0x5d, 0x2e, 0x5a, 0xa8, 0x7a, 0xd2, 0xbf, 0x59, 0xa0, 0x86, 0x79, 0x0b, 0x92, 0x6c,
165 0x95, 0x5d, 0x87, 0x63, 0x5c, 0xd6, 0x1a, 0xc0, 0xf6, 0x7a, 0x15, 0x8d, 0xc7, 0x3c, 0xb6, 0x9e,
166 0xa6, 0x58, 0x46, 0x9b, 0xbf, 0x3e, 0x28, 0x8c, 0xdf, 0x1a, 0x87, 0xaa, 0x7e, 0xf5, 0xf2, 0xcb,
167 0x5e, 0x84, 0x2d, 0xf6, 0x82, 0x7e, 0x89, 0x4e, 0xf5, 0xe6, 0x3c, 0x92, 0x80, 0x1e, 0x98, 0x1c,
168 0x6a, 0x7b, 0x57, 0x01, 0x02, 0x41, 0x00, 0xdd, 0x60, 0x95, 0xd7, 0xa1, 0x9d, 0x0c, 0xa1, 0x84,
169 0xc5, 0x39, 0xca, 0x67, 0x4c, 0x1c, 0x06, 0x71, 0x5b, 0x5c, 0x2d, 0x8d, 0xce, 0xcd, 0xe2, 0x79,
170 0xc8, 0x33, 0xbe, 0x50, 0x37, 0x60, 0x9f, 0x3b, 0xb9, 0x59, 0x55, 0x22, 0x1f, 0xa5, 0x4b, 0x1d,
171 0xca, 0x38, 0xa0, 0xab, 0x87, 0x9c, 0x86, 0x0e, 0xdb, 0x1c, 0x4f, 0x4f, 0x07, 0xed, 0x18, 0x3f,
172 0x05, 0x3c, 0xec, 0x78, 0x11, 0xf6, 0x99, 0x02, 0x41, 0x00, 0xc2, 0xc5, 0xcf, 0xbe, 0x95, 0x91,
173 0xeb, 0xcf, 0x47, 0xf3, 0x33, 0x32, 0xc7, 0x7e, 0x93, 0x56, 0xf7, 0xd8, 0xf9, 0xd4, 0xb6, 0xd6,
174 0x20, 0xac, 0xba, 0x8a, 0x20, 0x19, 0x14, 0xab, 0xc5, 0x5d, 0xb2, 0x08, 0xcc, 0x77, 0x7c, 0x65,
175 0xa8, 0xdb, 0x66, 0x97, 0x36, 0x44, 0x2c, 0x63, 0xc0, 0x6a, 0x7e, 0xb0, 0x0b, 0x5c, 0x90, 0x12,
176 0x50, 0xb4, 0x36, 0x60, 0xc3, 0x1f, 0x22, 0x0c, 0xc8, 0x13, 0x02, 0x40, 0x33, 0xc8, 0x7e, 0x04,
177 0x7c, 0x97, 0x61, 0xf6, 0xfe, 0x39, 0xac, 0x34, 0xfe, 0x48, 0xbd, 0x5d, 0x7c, 0x72, 0xa4, 0x73,
178 0x3b, 0x72, 0x9e, 0x92, 0x55, 0x6e, 0x51, 0x3c, 0x39, 0x43, 0x5a, 0xe4, 0xa4, 0x71, 0xcc, 0xc5,
179 0xaf, 0x3f, 0xbb, 0xc8, 0x80, 0x65, 0x67, 0x2d, 0x9e, 0x32, 0x10, 0x99, 0x03, 0x2c, 0x99, 0xc8,
180 0xab, 0x71, 0xed, 0x31, 0xf8, 0xbb, 0xde, 0xee, 0x69, 0x7f, 0xba, 0x31, 0x02, 0x40, 0x7e, 0xbc,
181 0x60, 0x55, 0x4e, 0xd5, 0xc8, 0x6e, 0xf4, 0x0e, 0x57, 0xbe, 0x2e, 0xf9, 0x39, 0xbe, 0x59, 0x3f,
182 0xa2, 0x30, 0xbb, 0x57, 0xd1, 0xa3, 0x13, 0x2e, 0x55, 0x7c, 0x7c, 0x6a, 0xd8, 0xde, 0x02, 0xbe,
183 0x9e, 0xed, 0x10, 0xd0, 0xc5, 0x73, 0x1d, 0xea, 0x3e, 0xb1, 0x55, 0x81, 0x02, 0xef, 0x48, 0xc8,
184 0x1c, 0x5c, 0x7a, 0x92, 0xb0, 0x58, 0xd3, 0x19, 0x5b, 0x5d, 0xa2, 0xb6, 0x56, 0x69, 0x02, 0x40,
185 0x1e, 0x00, 0x6a, 0x9f, 0xba, 0xee, 0x46, 0x5a, 0xc5, 0xb5, 0x9f, 0x91, 0x33, 0xdd, 0xc9, 0x96,
186 0x75, 0xb7, 0x87, 0xcf, 0x18, 0x1c, 0xb7, 0xb9, 0x3f, 0x04, 0x10, 0xb8, 0x75, 0xa9, 0xb8, 0xa0,
187 0x31, 0x35, 0x03, 0x30, 0x89, 0xc8, 0x37, 0x68, 0x20, 0x30, 0x99, 0x39, 0x96, 0xd6, 0x2b, 0x3d,
188 0x5e, 0x45, 0x84, 0xf7, 0xd2, 0x61, 0x50, 0xc9, 0x50, 0xba, 0x8d, 0x08, 0xaa, 0xd0, 0x08, 0x1e,
189};
190
191
192static const PKCS12_ATTR ATTRS1[] = {
193 { "friendlyName", "george" },
194 { "localKeyID", "1234567890" },
195 { "1.2.3.4.5", "MyCustomAttribute" },
196 { NULL, NULL }
197};
198
199static const PKCS12_ATTR ATTRS2[] = {
200 { "friendlyName", "janet" },
201 { "localKeyID", "987654321" },
202 { "1.2.3.5.8.13", "AnotherCustomAttribute" },
203 { NULL, NULL }
204};
205
206static const PKCS12_ENC enc_default = {
207#ifndef OPENSSL_NO_DES
208 NID_pbe_WithSHA1And3_Key_TripleDES_CBC,
209#else
210 NID_aes_128_cbc,
211#endif
212 "Password1",
213 1000
214};
215
216static const PKCS12_ENC mac_default = {
217 NID_sha1,
218 "Password1",
219 1000
220};
221
222static const int enc_nids_all[] = {
223 /* NOTE: To use PBES2 we pass the desired cipher NID instead of NID_pbes2 */
224 NID_aes_128_cbc,
225 NID_aes_256_cbc,
226#ifndef OPENSSL_NO_DES
227 NID_des_ede3_cbc,
228 NID_des_cbc,
229#endif
230#ifndef OPENSSL_NO_RC5
231 NID_rc5_cbc,
232#endif
233#ifndef OPENSSL_NO_RC4
234 NID_rc4,
235#endif
236#ifndef OPENSSL_NO_RC2
237 NID_rc2_cbc,
238#endif
239
240#ifndef OPENSSL_NO_MD2
241# ifndef OPENSSL_NO_DES
242 NID_pbeWithMD2AndDES_CBC,
243# endif
244# ifndef OPENSSL_NO_RC2
245 NID_pbeWithMD2AndRC2_CBC,
246# endif
247#endif
248
249#ifndef OPENSSL_NO_MD5
250# ifndef OPENSSL_NO_DES
251 NID_pbeWithMD5AndDES_CBC,
252# endif
253# ifndef OPENSSL_NO_RC2
254 NID_pbeWithMD5AndRC2_CBC,
255# endif
256#endif
257#ifndef OPENSSL_NO_DES
258 NID_pbeWithSHA1AndDES_CBC,
259#endif
260#ifndef OPENSSL_NO_RC2
261 NID_pbe_WithSHA1And128BitRC2_CBC,
262 NID_pbe_WithSHA1And40BitRC2_CBC,
263 NID_pbeWithSHA1AndRC2_CBC,
264#endif
265#ifndef OPENSSL_NO_RC4
266 NID_pbe_WithSHA1And128BitRC4,
267 NID_pbe_WithSHA1And40BitRC4,
268#endif
269#ifndef OPENSSL_NO_DES
270 NID_pbe_WithSHA1And2_Key_TripleDES_CBC,
271 NID_pbe_WithSHA1And3_Key_TripleDES_CBC,
272#endif
273};
274
275static const int enc_nids_no_legacy[] = {
276 /* NOTE: To use PBES2 we pass the desired cipher NID instead of NID_pbes2 */
277 NID_aes_128_cbc,
278 NID_aes_256_cbc,
279#ifndef OPENSSL_NO_DES
280 NID_des_ede3_cbc,
281 NID_pbe_WithSHA1And2_Key_TripleDES_CBC,
282 NID_pbe_WithSHA1And3_Key_TripleDES_CBC,
283#endif
284};
285
286static const int mac_nids[] = {
287 NID_sha1,
288 NID_md5,
289 NID_sha256,
290 NID_sha512,
291 NID_sha3_256,
292 NID_sha3_512
293};
294
295static const int iters[] = {
296 1,
297 1000
298};
299
300static const char *passwords[] = {
301 "Password1",
302 "",
303};
304
305/* --------------------------------------------------------------------------
306 * Local functions
307 */
308
309static int get_custom_oid(void)
310{
311 static int sec_nid = -1;
312
313 if (sec_nid != -1)
314 return sec_nid;
315 if (!TEST_true(OBJ_create("1.3.5.7.9", "CustomSecretOID", "My custom secret OID")))
316 return -1;
317 return sec_nid = OBJ_txt2nid("CustomSecretOID");
318}
319
320
321/* --------------------------------------------------------------------------
322 * PKCS12 format tests
323 */
324
325static int test_single_cert_no_attrs(void)
326{
327 PKCS12_BUILDER *pb = new_pkcs12_builder("1cert.p12");
328
329 /* Generate/encode */
330 start_pkcs12(pb);
331
332 start_contentinfo(pb);
333
334 add_certbag(pb, CERT1, sizeof(CERT1), NULL);
335
336 end_contentinfo(pb);
337
338 end_pkcs12(pb);
339
340 /* Read/decode */
341 start_check_pkcs12(pb);
342
343 start_check_contentinfo(pb);
344
345 check_certbag(pb, CERT1, sizeof(CERT1), NULL);
346
347 end_check_contentinfo(pb);
348
349 end_check_pkcs12(pb);
350
351 return end_pkcs12_builder(pb);
352}
353
354static int test_single_key(PKCS12_ENC *enc)
355{
356 char fname[80];
357 PKCS12_BUILDER *pb;
358
359 sprintf(fname, "1key_ciph-%s_iter-%d.p12", OBJ_nid2sn(enc->nid), enc->iter);
360
361 pb = new_pkcs12_builder(fname);
362
363 /* Generate/encode */
364 start_pkcs12(pb);
365
366 start_contentinfo(pb);
367
368 add_keybag(pb, KEY1, sizeof(KEY1), NULL, enc);
369
370 end_contentinfo(pb);
371
372 end_pkcs12(pb);
373
374 /* Read/decode */
375 start_check_pkcs12(pb);
376
377 start_check_contentinfo(pb);
378
379 check_keybag(pb, KEY1, sizeof(KEY1), NULL, enc);
380
381 end_check_contentinfo(pb);
382
383 end_check_pkcs12(pb);
384
385 return end_pkcs12_builder(pb);
386}
387
388static int test_single_key_enc_alg(int z)
389{
390 PKCS12_ENC enc;
391
392 if (lgcyprov == NULL)
393 enc.nid = enc_nids_no_legacy[z];
394 else
395 enc.nid = enc_nids_all[z];
396 enc.pass = enc_default.pass;
397 enc.iter = enc_default.iter;
398
399 return test_single_key(&enc);
400}
401
402static int test_single_key_enc_pass(int z)
403{
404 PKCS12_ENC enc;
405
406 enc.nid = enc_default.nid;
407 enc.pass = passwords[z];
408 enc.iter = enc_default.iter;
409
410 return test_single_key(&enc);
411}
412
413static int test_single_key_enc_iter(int z)
414{
415 PKCS12_ENC enc;
416
417 enc.nid = enc_default.nid;
418 enc.pass = enc_default.pass;
419 enc.iter = iters[z];
420
421 return test_single_key(&enc);
422}
423
424static int test_single_key_with_attrs(void)
425{
426 PKCS12_BUILDER *pb = new_pkcs12_builder("1keyattrs.p12");
427
428 /* Generate/encode */
429 start_pkcs12(pb);
430
431 start_contentinfo(pb);
432
433 add_keybag(pb, KEY1, sizeof(KEY1), ATTRS1, &enc_default);
434
435 end_contentinfo(pb);
436
437 end_pkcs12(pb);
438
439 /* Read/decode */
440 start_check_pkcs12(pb);
441
442 start_check_contentinfo(pb);
443
444 check_keybag(pb, KEY1, sizeof(KEY1), ATTRS1, &enc_default);
445
446 end_check_contentinfo(pb);
447
448 end_check_pkcs12(pb);
449
450 return end_pkcs12_builder(pb);
451}
452
453static int test_single_cert_mac(PKCS12_ENC *mac)
454{
455 char fname[80];
456 PKCS12_BUILDER *pb;
457
458 sprintf(fname, "1cert_mac-%s_iter-%d.p12", OBJ_nid2sn(mac->nid), mac->iter);
459
460 pb = new_pkcs12_builder(fname);
461
462 /* Generate/encode */
463 start_pkcs12(pb);
464
465 start_contentinfo(pb);
466
467 add_certbag(pb, CERT1, sizeof(CERT1), NULL);
468
469 end_contentinfo(pb);
470
471 end_pkcs12_with_mac(pb, mac);
472
473 /* Read/decode */
474 start_check_pkcs12_with_mac(pb, mac);
475
476 start_check_contentinfo(pb);
477
478 check_certbag(pb, CERT1, sizeof(CERT1), NULL);
479
480 end_check_contentinfo(pb);
481
482 end_check_pkcs12(pb);
483
484 return end_pkcs12_builder(pb);
485}
486
487static int test_single_cert_mac_alg(int z)
488{
489 PKCS12_ENC mac;
490
491 mac.nid = mac_nids[z];
492 mac.pass = mac_default.pass;
493 mac.iter = mac_default.iter;
494
495 return test_single_cert_mac(&mac);
496}
497
498static int test_single_cert_mac_pass(int z)
499{
500 PKCS12_ENC mac;
501
502 mac.nid = mac_default.nid;
503 mac.pass = passwords[z];
504 mac.iter = mac_default.iter;
505
506 return test_single_cert_mac(&mac);
507}
508
509static int test_single_cert_mac_iter(int z)
510{
511 PKCS12_ENC mac;
512
513 mac.nid = mac_default.nid;
514 mac.pass = mac_default.pass;
515 mac.iter = iters[z];
516
517 return test_single_cert_mac(&mac);
518}
519
520static int test_cert_key_with_attrs_and_mac(void)
521{
522 PKCS12_BUILDER *pb = new_pkcs12_builder("1cert1key.p12");
523
524 /* Generate/encode */
525 start_pkcs12(pb);
526
527 start_contentinfo(pb);
528
529 add_certbag(pb, CERT1, sizeof(CERT1), ATTRS1);
530 add_keybag(pb, KEY1, sizeof(KEY1), ATTRS1, &enc_default);
531
532 end_contentinfo(pb);
533
534 end_pkcs12_with_mac(pb, &mac_default);
535
536 /* Read/decode */
537 start_check_pkcs12_with_mac(pb, &mac_default);
538
539 start_check_contentinfo(pb);
540
541 check_certbag(pb, CERT1, sizeof(CERT1), ATTRS1);
542 check_keybag(pb, KEY1, sizeof(KEY1), ATTRS1, &enc_default);
543
544 end_check_contentinfo(pb);
545
546 end_check_pkcs12(pb);
547
548 return end_pkcs12_builder(pb);
549}
550
551static int test_cert_key_encrypted_content(void)
552{
553 PKCS12_BUILDER *pb = new_pkcs12_builder("1cert1key_enc.p12");
554
555 /* Generate/encode */
556 start_pkcs12(pb);
557
558 start_contentinfo(pb);
559
560 add_certbag(pb, CERT1, sizeof(CERT1), ATTRS1);
561 add_keybag(pb, KEY1, sizeof(KEY1), ATTRS1, &enc_default);
562
563 end_contentinfo_encrypted(pb, &enc_default);
564
565 end_pkcs12_with_mac(pb, &mac_default);
566
567 /* Read/decode */
568 start_check_pkcs12_with_mac(pb, &mac_default);
569
570 start_check_contentinfo_encrypted(pb, &enc_default);
571
572 check_certbag(pb, CERT1, sizeof(CERT1), ATTRS1);
573 check_keybag(pb, KEY1, sizeof(KEY1), ATTRS1, &enc_default);
574
575 end_check_contentinfo(pb);
576
577 end_check_pkcs12(pb);
578
579 return end_pkcs12_builder(pb);
580}
581
582static int test_single_secret_encrypted_content(void)
583{
584 PKCS12_BUILDER *pb = new_pkcs12_builder("1secret.p12");
585 int custom_nid = get_custom_oid();
586
587 /* Generate/encode */
588 start_pkcs12(pb);
589
590 start_contentinfo(pb);
591
592 add_secretbag(pb, custom_nid, "VerySecretMessage", ATTRS1);
593
594 end_contentinfo_encrypted(pb, &enc_default);
595
596 end_pkcs12_with_mac(pb, &mac_default);
597
598 /* Read/decode */
599 start_check_pkcs12_with_mac(pb, &mac_default);
600
601 start_check_contentinfo_encrypted(pb, &enc_default);
602
603 check_secretbag(pb, custom_nid, "VerySecretMessage", ATTRS1);
604
605 end_check_contentinfo(pb);
606
607 end_check_pkcs12(pb);
608
609 return end_pkcs12_builder(pb);
610}
611
612static int test_single_secret(PKCS12_ENC *enc)
613{
614 int custom_nid;
615 char fname[80];
616 PKCS12_BUILDER *pb;
617
618 sprintf(fname, "1secret_ciph-%s_iter-%d.p12", OBJ_nid2sn(enc->nid), enc->iter);
619 pb = new_pkcs12_builder(fname);
620 custom_nid = get_custom_oid();
621
622 /* Generate/encode */
623 start_pkcs12(pb);
624
625 start_contentinfo(pb);
626
627 add_secretbag(pb, custom_nid, "VerySecretMessage", ATTRS1);
628
629 end_contentinfo_encrypted(pb, enc);
630
631 end_pkcs12_with_mac(pb, &mac_default);
632
633 /* Read/decode */
634 start_check_pkcs12_with_mac(pb, &mac_default);
635
636 start_check_contentinfo_encrypted(pb, enc);
637
638 check_secretbag(pb, custom_nid, "VerySecretMessage", ATTRS1);
639
640 end_check_contentinfo(pb);
641
642 end_check_pkcs12(pb);
643
644 return end_pkcs12_builder(pb);
645}
646
647static int test_single_secret_enc_alg(int z)
648{
649 PKCS12_ENC enc;
650
651 if (lgcyprov == NULL)
652 enc.nid = enc_nids_no_legacy[z];
653 else
654 enc.nid = enc_nids_all[z];
655 enc.pass = enc_default.pass;
656 enc.iter = enc_default.iter;
657
658 return test_single_secret(&enc);
659}
660
661static int test_multiple_contents(void)
662{
663 PKCS12_BUILDER *pb = new_pkcs12_builder("multi_contents.p12");
664 int custom_nid = get_custom_oid();
665
666 /* Generate/encode */
667 start_pkcs12(pb);
668
669 start_contentinfo(pb);
670
671 add_certbag(pb, CERT1, sizeof(CERT1), ATTRS1);
672 add_certbag(pb, CERT2, sizeof(CERT2), ATTRS2);
673 add_keybag(pb, KEY1, sizeof(KEY1), ATTRS1, &enc_default);
674 add_keybag(pb, KEY2, sizeof(KEY2), ATTRS2, &enc_default);
675
676 end_contentinfo(pb);
677
678 start_contentinfo(pb);
679
680 add_secretbag(pb, custom_nid, "VeryVerySecretMessage", ATTRS1);
681
682 end_contentinfo_encrypted(pb, &enc_default);
683
684 end_pkcs12_with_mac(pb, &mac_default);
685
686 /* Read/decode */
687 start_check_pkcs12_with_mac(pb, &mac_default);
688
689 start_check_contentinfo(pb);
690
691 check_certbag(pb, CERT1, sizeof(CERT1), ATTRS1);
692 check_certbag(pb, CERT2, sizeof(CERT2), ATTRS2);
693 check_keybag(pb, KEY1, sizeof(KEY1), ATTRS1, &enc_default);
694 check_keybag(pb, KEY2, sizeof(KEY2), ATTRS2, &enc_default);
695
696 end_check_contentinfo(pb);
697
698 start_check_contentinfo_encrypted(pb, &enc_default);
699
700 check_secretbag(pb, custom_nid, "VeryVerySecretMessage", ATTRS1);
701
702 end_check_contentinfo(pb);
703
704 end_check_pkcs12(pb);
705
706 return end_pkcs12_builder(pb);
707}
708
709#ifndef OPENSSL_NO_DES
710static int pkcs12_create_test(void)
711{
712 int ret = 0;
713 EVP_PKEY *pkey = NULL;
714 PKCS12 *p12 = NULL;
715 const unsigned char *p;
716
717 static const unsigned char rsa_key[] = {
718 0x30, 0x82, 0x02, 0x5d, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xbb,
719 0x24, 0x7a, 0x09, 0x7e, 0x0e, 0xb2, 0x37, 0x32, 0xcc, 0x39, 0x67, 0xad,
720 0xf1, 0x9e, 0x3d, 0x6b, 0x82, 0x83, 0xd1, 0xd0, 0xac, 0xa4, 0xc0, 0x18,
721 0xbe, 0x8d, 0x98, 0x00, 0xc0, 0x7b, 0xff, 0x07, 0x44, 0xc9, 0xca, 0x1c,
722 0xba, 0x36, 0xe1, 0x27, 0x69, 0xff, 0xb1, 0xe3, 0x8d, 0x8b, 0xee, 0x57,
723 0xa9, 0x3a, 0xaa, 0x16, 0x43, 0x39, 0x54, 0x19, 0x7c, 0xae, 0x69, 0x24,
724 0x14, 0xf6, 0x64, 0xff, 0xbc, 0x74, 0xc6, 0x67, 0x6c, 0x4c, 0xf1, 0x02,
725 0x49, 0x69, 0xc7, 0x2b, 0xe1, 0xe1, 0xa1, 0xa3, 0x43, 0x14, 0xf4, 0x77,
726 0x8f, 0xc8, 0xd0, 0x85, 0x5a, 0x35, 0x95, 0xac, 0x62, 0xa9, 0xc1, 0x21,
727 0x00, 0x77, 0xa0, 0x8b, 0x97, 0x30, 0xb4, 0x5a, 0x2c, 0xb8, 0x90, 0x2f,
728 0x48, 0xa0, 0x05, 0x28, 0x4b, 0xf2, 0x0f, 0x8d, 0xec, 0x8b, 0x4d, 0x03,
729 0x42, 0x75, 0xd6, 0xad, 0x81, 0xc0, 0x11, 0x02, 0x03, 0x01, 0x00, 0x01,
730 0x02, 0x81, 0x80, 0x00, 0xfc, 0xb9, 0x4a, 0x26, 0x07, 0x89, 0x51, 0x2b,
731 0x53, 0x72, 0x91, 0xe0, 0x18, 0x3e, 0xa6, 0x5e, 0x31, 0xef, 0x9c, 0x0c,
732 0x16, 0x24, 0x42, 0xd0, 0x28, 0x33, 0xf9, 0xfa, 0xd0, 0x3c, 0x54, 0x04,
733 0x06, 0xc0, 0x15, 0xf5, 0x1b, 0x9a, 0xb3, 0x24, 0x31, 0xab, 0x3c, 0x6b,
734 0x47, 0x43, 0xb0, 0xd2, 0xa9, 0xdc, 0x05, 0xe1, 0x81, 0x59, 0xb6, 0x04,
735 0xe9, 0x66, 0x61, 0xaa, 0xd7, 0x0b, 0x00, 0x8f, 0x3d, 0xe5, 0xbf, 0xa2,
736 0xf8, 0x5e, 0x25, 0x6c, 0x1e, 0x22, 0x0f, 0xb4, 0xfd, 0x41, 0xe2, 0x03,
737 0x31, 0x5f, 0xda, 0x20, 0xc5, 0xc0, 0xf3, 0x55, 0x0e, 0xe1, 0xc9, 0xec,
738 0xd7, 0x3e, 0x2a, 0x0c, 0x01, 0xca, 0x7b, 0x22, 0xcb, 0xac, 0xf4, 0x2b,
739 0x27, 0xf0, 0x78, 0x5f, 0xb5, 0xc2, 0xf9, 0xe8, 0x14, 0x5a, 0x6e, 0x7e,
740 0x86, 0xbd, 0x6a, 0x9b, 0x20, 0x0c, 0xba, 0xcc, 0x97, 0x20, 0x11, 0x02,
741 0x41, 0x00, 0xc9, 0x59, 0x9f, 0x29, 0x8a, 0x5b, 0x9f, 0xe3, 0x2a, 0xd8,
742 0x7e, 0xc2, 0x40, 0x9f, 0xa8, 0x45, 0xe5, 0x3e, 0x11, 0x8d, 0x3c, 0xed,
743 0x6e, 0xab, 0xce, 0xd0, 0x65, 0x46, 0xd8, 0xc7, 0x07, 0x63, 0xb5, 0x23,
744 0x34, 0xf4, 0x9f, 0x7e, 0x1c, 0xc7, 0xc7, 0xf9, 0x65, 0xd1, 0xf4, 0x04,
745 0x42, 0x38, 0xbe, 0x3a, 0x0c, 0x9d, 0x08, 0x25, 0xfc, 0xa3, 0x71, 0xd9,
746 0xae, 0x0c, 0x39, 0x61, 0xf4, 0x89, 0x02, 0x41, 0x00, 0xed, 0xef, 0xab,
747 0xa9, 0xd5, 0x39, 0x9c, 0xee, 0x59, 0x1b, 0xff, 0xcf, 0x48, 0x44, 0x1b,
748 0xb6, 0x32, 0xe7, 0x46, 0x24, 0xf3, 0x04, 0x7f, 0xde, 0x95, 0x08, 0x6d,
749 0x75, 0x9e, 0x67, 0x17, 0xba, 0x5c, 0xa4, 0xd4, 0xe2, 0xe2, 0x4d, 0x77,
750 0xce, 0xeb, 0x66, 0x29, 0xc5, 0x96, 0xe0, 0x62, 0xbb, 0xe5, 0xac, 0xdc,
751 0x44, 0x62, 0x54, 0x86, 0xed, 0x64, 0x0c, 0xce, 0xd0, 0x60, 0x03, 0x9d,
752 0x49, 0x02, 0x40, 0x54, 0xd9, 0x18, 0x72, 0x27, 0xe4, 0xbe, 0x76, 0xbb,
753 0x1a, 0x6a, 0x28, 0x2f, 0x95, 0x58, 0x12, 0xc4, 0x2c, 0xa8, 0xb6, 0xcc,
754 0xe2, 0xfd, 0x0d, 0x17, 0x64, 0xc8, 0x18, 0xd7, 0xc6, 0xdf, 0x3d, 0x4c,
755 0x1a, 0x9e, 0xf9, 0x2a, 0xb0, 0xb9, 0x2e, 0x12, 0xfd, 0xec, 0xc3, 0x51,
756 0xc1, 0xed, 0xa9, 0xfd, 0xb7, 0x76, 0x93, 0x41, 0xd8, 0xc8, 0x22, 0x94,
757 0x1a, 0x77, 0xf6, 0x9c, 0xc3, 0xc3, 0x89, 0x02, 0x41, 0x00, 0x8e, 0xf9,
758 0xa7, 0x08, 0xad, 0xb5, 0x2a, 0x04, 0xdb, 0x8d, 0x04, 0xa1, 0xb5, 0x06,
759 0x20, 0x34, 0xd2, 0xcf, 0xc0, 0x89, 0xb1, 0x72, 0x31, 0xb8, 0x39, 0x8b,
760 0xcf, 0xe2, 0x8e, 0xa5, 0xda, 0x4f, 0x45, 0x1e, 0x53, 0x42, 0x66, 0xc4,
761 0x30, 0x4b, 0x29, 0x8e, 0xc1, 0x69, 0x17, 0x29, 0x8c, 0x8a, 0xe6, 0x0f,
762 0x82, 0x68, 0xa1, 0x41, 0xb3, 0xb6, 0x70, 0x99, 0x75, 0xa9, 0x27, 0x18,
763 0xe4, 0xe9, 0x02, 0x41, 0x00, 0x89, 0xea, 0x6e, 0x6d, 0x70, 0xdf, 0x25,
764 0x5f, 0x18, 0x3f, 0x48, 0xda, 0x63, 0x10, 0x8b, 0xfe, 0xa8, 0x0c, 0x94,
765 0x0f, 0xde, 0x97, 0x56, 0x53, 0x89, 0x94, 0xe2, 0x1e, 0x2c, 0x74, 0x3c,
766 0x91, 0x81, 0x34, 0x0b, 0xa6, 0x40, 0xf8, 0xcb, 0x2a, 0x60, 0x8c, 0xe0,
767 0x02, 0xb7, 0x89, 0x93, 0xcf, 0x18, 0x9f, 0x49, 0x54, 0xfd, 0x7d, 0x3f,
768 0x9a, 0xef, 0xd4, 0xa4, 0x4f, 0xc1, 0x45, 0x99, 0x91,
769 };
770
771 p = rsa_key;
772 if (!TEST_ptr(pkey = d2i_PrivateKey_ex(EVP_PKEY_RSA, NULL, &p,
773 sizeof(rsa_key), NULL, NULL)))
774 goto err;
775 if (!TEST_int_eq(ERR_peek_error(), 0))
776 goto err;
777 p12 = PKCS12_create(NULL, NULL, pkey, NULL, NULL,
778 NID_pbe_WithSHA1And3_Key_TripleDES_CBC,
779 NID_pbe_WithSHA1And3_Key_TripleDES_CBC, 2, 1, 0);
780 if (!TEST_ptr(p12))
781 goto err;
782
783 if (!TEST_int_eq(ERR_peek_error(), 0))
784 goto err;
785 ret = 1;
786err:
787 PKCS12_free(p12);
788 EVP_PKEY_free(pkey);
789 return ret;
790}
791#endif
792
793typedef enum OPTION_choice {
794 OPT_ERR = -1,
795 OPT_EOF = 0,
796 OPT_WRITE,
797 OPT_LEGACY,
798 OPT_CONTEXT,
799 OPT_TEST_ENUM
800} OPTION_CHOICE;
801
802const OPTIONS *test_get_options(void)
803{
804 static const OPTIONS options[] = {
805 OPT_TEST_OPTIONS_DEFAULT_USAGE,
806 { "write", OPT_WRITE, '-', "Write PKCS12 objects to file" },
807 { "legacy", OPT_LEGACY, '-', "Test the legacy APIs" },
808 { "context", OPT_CONTEXT, '-', "Explicitly use a non-default library context" },
809 { NULL }
810 };
811 return options;
812}
813
814int setup_tests(void)
815{
816 OPTION_CHOICE o;
817
818 while ((o = opt_next()) != OPT_EOF) {
819 switch (o) {
820 case OPT_WRITE:
821 PKCS12_helper_set_write_files(1);
822 break;
823 case OPT_LEGACY:
824 PKCS12_helper_set_legacy(1);
825 break;
826 case OPT_CONTEXT:
827 default_libctx = 0;
828 break;
829 case OPT_TEST_CASES:
830 break;
831 default:
832 return 0;
833 }
834 }
835
836 if (!default_libctx) {
837 testctx = OSSL_LIB_CTX_new();
838 if (!TEST_ptr(testctx))
839 return 0;
840 nullprov = OSSL_PROVIDER_load(NULL, "null");
841 if (!TEST_ptr(nullprov))
842 return 0;
843 }
844
845 deflprov = OSSL_PROVIDER_load(testctx, "default");
846 if (!TEST_ptr(deflprov))
847 return 0;
848 lgcyprov = OSSL_PROVIDER_load(testctx, "legacy");
849
850 PKCS12_helper_set_libctx(testctx);
851
852 /*
853 * Verify that the default and fips providers in the default libctx are not
854 * available if we are using a standalone context
855 */
856 if (!default_libctx) {
857 if (!TEST_false(OSSL_PROVIDER_available(NULL, "default"))
858 || !TEST_false(OSSL_PROVIDER_available(NULL, "fips")))
859 return 0;
860 }
861
862 ADD_TEST(test_single_cert_no_attrs);
863 if (lgcyprov == NULL) {
864 ADD_ALL_TESTS(test_single_key_enc_alg, OSSL_NELEM(enc_nids_no_legacy));
865 ADD_ALL_TESTS(test_single_secret_enc_alg, OSSL_NELEM(enc_nids_no_legacy));
866 } else {
867 ADD_ALL_TESTS(test_single_key_enc_alg, OSSL_NELEM(enc_nids_all));
868 ADD_ALL_TESTS(test_single_secret_enc_alg, OSSL_NELEM(enc_nids_all));
869 }
870#ifndef OPENSSL_NO_DES
871 if (default_libctx)
872 ADD_TEST(pkcs12_create_test);
873#endif
874 ADD_ALL_TESTS(test_single_key_enc_pass, OSSL_NELEM(passwords));
875 ADD_ALL_TESTS(test_single_key_enc_iter, OSSL_NELEM(iters));
876 ADD_TEST(test_single_key_with_attrs);
877 ADD_ALL_TESTS(test_single_cert_mac_alg, OSSL_NELEM(mac_nids));
878 ADD_ALL_TESTS(test_single_cert_mac_pass, OSSL_NELEM(passwords));
879 ADD_ALL_TESTS(test_single_cert_mac_iter, OSSL_NELEM(iters));
880 ADD_TEST(test_cert_key_with_attrs_and_mac);
881 ADD_TEST(test_cert_key_encrypted_content);
882 ADD_TEST(test_single_secret_encrypted_content);
883 ADD_TEST(test_multiple_contents);
884 return 1;
885}
886
887void cleanup_tests(void)
888{
889 OSSL_PROVIDER_unload(nullprov);
890 OSSL_PROVIDER_unload(deflprov);
891 OSSL_PROVIDER_unload(lgcyprov);
892 OSSL_LIB_CTX_free(testctx);
893}
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette