Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/crypto/libecc/src/tests/ecccdh_test_vectors.h
34889 views
1
#ifdef WITH_CURVE_SECP192R1
2
#define ECCCDH_SECP192R1_SELF_TEST_0
3
/*** Tests for ECCCDH/SECP192R1 ***/
4
static const u8 ecccdh_SECP192R1_0_test_vector_our_priv_key[] = {
5
0xf1, 0x7d, 0x3f, 0xea, 0x36, 0x7b, 0x74, 0xd3, 0x40, 0x85, 0x1c, 0xa4, 0x27, 0x0d, 0xcb, 0x24, 0xc2, 0x71, 0xf4, 0x45, 0xbe, 0xd9, 0xd5, 0x27,
6
};
7
static const u8 ecccdh_SECP192R1_0_test_vector_peer_pub_key[] = {
8
0x42, 0xea, 0x6d, 0xd9, 0x96, 0x9d, 0xd2, 0xa6, 0x1f, 0xea, 0x1a, 0xac, 0x7f, 0x8e, 0x98, 0xed, 0xcc, 0x89, 0x6c, 0x6e, 0x55, 0x85, 0x7c, 0xc0, 0xdf, 0xbe, 0x5d, 0x7c, 0x61, 0xfa, 0xc8, 0x8b, 0x11, 0x81, 0x1b, 0xde, 0x32, 0x8e, 0x8a, 0x0d, 0x12, 0xbf, 0x01, 0xa9, 0xd2, 0x04, 0xb5, 0x23,
9
};
10
static const u8 ecccdh_SECP192R1_0_test_vector_our_pub_key[] = {
11
0xb1, 0x50, 0x53, 0x40, 0x1f, 0x57, 0x28, 0x56, 0x37, 0xec, 0x32, 0x4c, 0x1c, 0xd2, 0x13, 0x9e, 0x3a, 0x67, 0xde, 0x37, 0x39, 0x23, 0x4b, 0x37, 0xf2, 0x69, 0xc1, 0x58, 0x63, 0x74, 0x82, 0xaa, 0xd6, 0x44, 0xcd, 0x69, 0x2d, 0xd1, 0xd3, 0xef, 0x2c, 0x8a, 0x7c, 0x49, 0xe3, 0x89, 0xf7, 0xf6,
12
};
13
static const u8 ecccdh_SECP192R1_0_test_vector_shared_secret[] = {
14
0x80, 0x3d, 0x8a, 0xb2, 0xe5, 0xb6, 0xe6, 0xfc, 0xa7, 0x15, 0x73, 0x7c, 0x3a, 0x82, 0xf7, 0xce, 0x3c, 0x78, 0x31, 0x24, 0xf6, 0xd5, 0x1c, 0xd0,
15
};
16
static const ecdh_test_case ecccdh_SECP192R1_0_test_case = {
17
.name = "ECCCDH/SECP192R1 0",
18
.ecdh_type = ECCCDH,
19
.ec_str_p = &secp192r1_str_params,
20
.our_priv_key = ecccdh_SECP192R1_0_test_vector_our_priv_key,
21
.our_priv_key_len = sizeof(ecccdh_SECP192R1_0_test_vector_our_priv_key),
22
.peer_pub_key = ecccdh_SECP192R1_0_test_vector_peer_pub_key,
23
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_0_test_vector_peer_pub_key),
24
.exp_our_pub_key = ecccdh_SECP192R1_0_test_vector_our_pub_key,
25
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_0_test_vector_our_pub_key),
26
.exp_shared_secret = ecccdh_SECP192R1_0_test_vector_shared_secret,
27
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_0_test_vector_shared_secret),
28
};
29
#endif /* WITH_CURVE_SECP192R1 */
30
31
#ifdef WITH_CURVE_SECP192R1
32
#define ECCCDH_SECP192R1_SELF_TEST_1
33
/*** Tests for ECCCDH/SECP192R1 ***/
34
static const u8 ecccdh_SECP192R1_1_test_vector_our_priv_key[] = {
35
0x56, 0xe8, 0x53, 0x34, 0x9d, 0x96, 0xfe, 0x4c, 0x44, 0x24, 0x48, 0xda, 0xcb, 0x7c, 0xf9, 0x2b, 0xb7, 0xa9, 0x5d, 0xcf, 0x57, 0x4a, 0x9b, 0xd5,
36
};
37
static const u8 ecccdh_SECP192R1_1_test_vector_peer_pub_key[] = {
38
0xde, 0xb5, 0x71, 0x2f, 0xa0, 0x27, 0xac, 0x8d, 0x2f, 0x22, 0xc4, 0x55, 0xcc, 0xb7, 0x3a, 0x91, 0xe1, 0x7b, 0x65, 0x12, 0xb5, 0xe0, 0x30, 0xe7, 0x7e, 0x26, 0x90, 0xa0, 0x2c, 0xc9, 0xb2, 0x87, 0x08, 0x43, 0x1a, 0x29, 0xfb, 0x54, 0xb8, 0x7b, 0x1f, 0x0c, 0x14, 0xe0, 0x11, 0xac, 0x21, 0x25,
39
};
40
static const u8 ecccdh_SECP192R1_1_test_vector_our_pub_key[] = {
41
0xc0, 0x0d, 0x43, 0x57, 0x16, 0xff, 0xea, 0x53, 0xfd, 0x8c, 0x16, 0x27, 0x92, 0x41, 0x4c, 0x37, 0x66, 0x51, 0x87, 0xe5, 0x82, 0x71, 0x65, 0x39, 0xab, 0x71, 0x1c, 0x62, 0xaa, 0x71, 0xa5, 0xa1, 0x8e, 0x8a, 0x3c, 0x48, 0xf8, 0x9d, 0xc6, 0xfa, 0x52, 0xfa, 0xc0, 0x10, 0x8e, 0x52, 0xa8, 0xa0,
42
};
43
static const u8 ecccdh_SECP192R1_1_test_vector_shared_secret[] = {
44
0xc2, 0x08, 0x84, 0x75, 0x68, 0xb9, 0x88, 0x35, 0xd7, 0x31, 0x2c, 0xef, 0x1f, 0x97, 0xf7, 0xaa, 0x29, 0x82, 0x83, 0x15, 0x23, 0x13, 0xc2, 0x9d,
45
};
46
static const ecdh_test_case ecccdh_SECP192R1_1_test_case = {
47
.name = "ECCCDH/SECP192R1 1",
48
.ecdh_type = ECCCDH,
49
.ec_str_p = &secp192r1_str_params,
50
.our_priv_key = ecccdh_SECP192R1_1_test_vector_our_priv_key,
51
.our_priv_key_len = sizeof(ecccdh_SECP192R1_1_test_vector_our_priv_key),
52
.peer_pub_key = ecccdh_SECP192R1_1_test_vector_peer_pub_key,
53
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_1_test_vector_peer_pub_key),
54
.exp_our_pub_key = ecccdh_SECP192R1_1_test_vector_our_pub_key,
55
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_1_test_vector_our_pub_key),
56
.exp_shared_secret = ecccdh_SECP192R1_1_test_vector_shared_secret,
57
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_1_test_vector_shared_secret),
58
};
59
#endif /* WITH_CURVE_SECP192R1 */
60
61
#ifdef WITH_CURVE_SECP192R1
62
#define ECCCDH_SECP192R1_SELF_TEST_2
63
/*** Tests for ECCCDH/SECP192R1 ***/
64
static const u8 ecccdh_SECP192R1_2_test_vector_our_priv_key[] = {
65
0xc6, 0xef, 0x61, 0xfe, 0x12, 0xe8, 0x0b, 0xf5, 0x6f, 0x2d, 0x3f, 0x7d, 0x0b, 0xb7, 0x57, 0x39, 0x45, 0x19, 0x90, 0x6d, 0x55, 0x50, 0x09, 0x49,
66
};
67
static const u8 ecccdh_SECP192R1_2_test_vector_peer_pub_key[] = {
68
0x4e, 0xda, 0xa8, 0xef, 0xc5, 0xa0, 0xf4, 0x0f, 0x84, 0x36, 0x63, 0xec, 0x58, 0x15, 0xe7, 0x76, 0x2d, 0xdd, 0xc0, 0x08, 0xe6, 0x63, 0xc2, 0x0f, 0x0a, 0x9f, 0x8d, 0xc6, 0x7a, 0x3e, 0x60, 0xef, 0x6d, 0x64, 0xb5, 0x22, 0x18, 0x5d, 0x03, 0xdf, 0x1f, 0xc0, 0xad, 0xfd, 0x42, 0x47, 0x82, 0x79,
69
};
70
static const u8 ecccdh_SECP192R1_2_test_vector_our_pub_key[] = {
71
0xe1, 0x84, 0xbc, 0x18, 0x24, 0x82, 0xf3, 0x40, 0x3c, 0x87, 0x87, 0xb8, 0x38, 0x42, 0x47, 0x74, 0x67, 0xfc, 0xd0, 0x11, 0xdb, 0x0f, 0x6c, 0x64, 0xf9, 0xd1, 0xc1, 0x41, 0x42, 0xf4, 0x0d, 0xe8, 0x63, 0x9d, 0xb9, 0x7d, 0x51, 0xa6, 0x3d, 0x2c, 0xce, 0x10, 0x07, 0xcc, 0xf7, 0x73, 0xcd, 0xcb,
72
};
73
static const u8 ecccdh_SECP192R1_2_test_vector_shared_secret[] = {
74
0x87, 0x22, 0x91, 0x07, 0x04, 0x7a, 0x3b, 0x61, 0x19, 0x20, 0xd6, 0xe3, 0xb2, 0xc0, 0xc8, 0x9b, 0xea, 0x4f, 0x49, 0x41, 0x22, 0x60, 0xb8, 0xdd,
75
};
76
static const ecdh_test_case ecccdh_SECP192R1_2_test_case = {
77
.name = "ECCCDH/SECP192R1 2",
78
.ecdh_type = ECCCDH,
79
.ec_str_p = &secp192r1_str_params,
80
.our_priv_key = ecccdh_SECP192R1_2_test_vector_our_priv_key,
81
.our_priv_key_len = sizeof(ecccdh_SECP192R1_2_test_vector_our_priv_key),
82
.peer_pub_key = ecccdh_SECP192R1_2_test_vector_peer_pub_key,
83
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_2_test_vector_peer_pub_key),
84
.exp_our_pub_key = ecccdh_SECP192R1_2_test_vector_our_pub_key,
85
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_2_test_vector_our_pub_key),
86
.exp_shared_secret = ecccdh_SECP192R1_2_test_vector_shared_secret,
87
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_2_test_vector_shared_secret),
88
};
89
#endif /* WITH_CURVE_SECP192R1 */
90
91
#ifdef WITH_CURVE_SECP192R1
92
#define ECCCDH_SECP192R1_SELF_TEST_3
93
/*** Tests for ECCCDH/SECP192R1 ***/
94
static const u8 ecccdh_SECP192R1_3_test_vector_our_priv_key[] = {
95
0xe6, 0x74, 0x7b, 0x9c, 0x23, 0xba, 0x70, 0x44, 0xf3, 0x8f, 0xf7, 0xe6, 0x2c, 0x35, 0xe4, 0x03, 0x89, 0x20, 0xf5, 0xa0, 0x16, 0x3d, 0x3c, 0xda,
96
};
97
static const u8 ecccdh_SECP192R1_3_test_vector_peer_pub_key[] = {
98
0x88, 0x87, 0xc2, 0x76, 0xed, 0xee, 0xd3, 0xe9, 0xe8, 0x66, 0xb4, 0x6d, 0x58, 0xd8, 0x95, 0xc7, 0x3f, 0xbd, 0x80, 0xb6, 0x3e, 0x38, 0x2e, 0x88, 0x04, 0xc5, 0x09, 0x7b, 0xa6, 0x64, 0x5e, 0x16, 0x20, 0x6c, 0xfb, 0x70, 0xf7, 0x05, 0x26, 0x55, 0x94, 0x7d, 0xd4, 0x4a, 0x17, 0xf1, 0xf9, 0xd5,
99
};
100
static const u8 ecccdh_SECP192R1_3_test_vector_our_pub_key[] = {
101
0x2b, 0x83, 0x8d, 0xbe, 0x73, 0x73, 0x5f, 0x37, 0xa3, 0x9a, 0x78, 0xd3, 0x19, 0x57, 0x83, 0xd2, 0x69, 0x91, 0xe8, 0x6f, 0xf4, 0xd9, 0x2d, 0x1a, 0x60, 0xd3, 0x44, 0x94, 0x22, 0x74, 0x48, 0x9f, 0x98, 0x90, 0x3b, 0x2e, 0x7f, 0x93, 0xf8, 0xd1, 0x97, 0xfc, 0x9a, 0xe6, 0x0a, 0x0e, 0xd5, 0x3a,
102
};
103
static const u8 ecccdh_SECP192R1_3_test_vector_shared_secret[] = {
104
0xee, 0xc0, 0xbe, 0xd8, 0xfc, 0x55, 0xe1, 0xfe, 0xdd, 0xc8, 0x21, 0x58, 0xfd, 0x6d, 0xc0, 0xd4, 0x8a, 0x4d, 0x79, 0x6a, 0xaf, 0x47, 0xd4, 0x6c,
105
};
106
static const ecdh_test_case ecccdh_SECP192R1_3_test_case = {
107
.name = "ECCCDH/SECP192R1 3",
108
.ecdh_type = ECCCDH,
109
.ec_str_p = &secp192r1_str_params,
110
.our_priv_key = ecccdh_SECP192R1_3_test_vector_our_priv_key,
111
.our_priv_key_len = sizeof(ecccdh_SECP192R1_3_test_vector_our_priv_key),
112
.peer_pub_key = ecccdh_SECP192R1_3_test_vector_peer_pub_key,
113
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_3_test_vector_peer_pub_key),
114
.exp_our_pub_key = ecccdh_SECP192R1_3_test_vector_our_pub_key,
115
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_3_test_vector_our_pub_key),
116
.exp_shared_secret = ecccdh_SECP192R1_3_test_vector_shared_secret,
117
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_3_test_vector_shared_secret),
118
};
119
#endif /* WITH_CURVE_SECP192R1 */
120
121
#ifdef WITH_CURVE_SECP192R1
122
#define ECCCDH_SECP192R1_SELF_TEST_4
123
/*** Tests for ECCCDH/SECP192R1 ***/
124
static const u8 ecccdh_SECP192R1_4_test_vector_our_priv_key[] = {
125
0xbe, 0xab, 0xed, 0xd0, 0x15, 0x4a, 0x1a, 0xfc, 0xfc, 0x85, 0xd5, 0x21, 0x81, 0xc1, 0x0f, 0x5e, 0xb4, 0x7a, 0xdc, 0x51, 0xf6, 0x55, 0x04, 0x7d,
126
};
127
static const u8 ecccdh_SECP192R1_4_test_vector_peer_pub_key[] = {
128
0x0d, 0x04, 0x5f, 0x30, 0x25, 0x4a, 0xdc, 0x1f, 0xce, 0xfa, 0x8a, 0x5b, 0x1f, 0x31, 0xbf, 0x4e, 0x73, 0x9d, 0xd3, 0x27, 0xcd, 0x18, 0xd5, 0x94, 0x54, 0x2c, 0x31, 0x4e, 0x41, 0x42, 0x7c, 0x08, 0x27, 0x8a, 0x08, 0xce, 0x8d, 0x73, 0x05, 0xf3, 0xb5, 0xb8, 0x49, 0xc7, 0x2d, 0x8a, 0xff, 0x73,
129
};
130
static const u8 ecccdh_SECP192R1_4_test_vector_our_pub_key[] = {
131
0x1f, 0x65, 0xcf, 0x6e, 0x89, 0x78, 0xe1, 0xc1, 0xbc, 0x10, 0xbb, 0x61, 0xa7, 0xdb, 0x31, 0x1d, 0xe3, 0x10, 0x08, 0x8c, 0x8c, 0xf9, 0x76, 0x8b, 0xf7, 0xd4, 0x38, 0x16, 0x8e, 0x7f, 0x42, 0xab, 0x14, 0xb1, 0x6a, 0xf5, 0x3a, 0x7a, 0x2f, 0x64, 0x6f, 0xf4, 0x0b, 0x53, 0xd7, 0x4c, 0xbc, 0xc7,
132
};
133
static const u8 ecccdh_SECP192R1_4_test_vector_shared_secret[] = {
134
0x71, 0x6e, 0x74, 0x3b, 0x1b, 0x37, 0xa2, 0xcd, 0x84, 0x79, 0xf0, 0xa3, 0xd5, 0xa7, 0x4c, 0x10, 0xba, 0x25, 0x99, 0xbe, 0x18, 0xd7, 0xe2, 0xf4,
135
};
136
static const ecdh_test_case ecccdh_SECP192R1_4_test_case = {
137
.name = "ECCCDH/SECP192R1 4",
138
.ecdh_type = ECCCDH,
139
.ec_str_p = &secp192r1_str_params,
140
.our_priv_key = ecccdh_SECP192R1_4_test_vector_our_priv_key,
141
.our_priv_key_len = sizeof(ecccdh_SECP192R1_4_test_vector_our_priv_key),
142
.peer_pub_key = ecccdh_SECP192R1_4_test_vector_peer_pub_key,
143
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_4_test_vector_peer_pub_key),
144
.exp_our_pub_key = ecccdh_SECP192R1_4_test_vector_our_pub_key,
145
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_4_test_vector_our_pub_key),
146
.exp_shared_secret = ecccdh_SECP192R1_4_test_vector_shared_secret,
147
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_4_test_vector_shared_secret),
148
};
149
#endif /* WITH_CURVE_SECP192R1 */
150
151
#ifdef WITH_CURVE_SECP192R1
152
#define ECCCDH_SECP192R1_SELF_TEST_5
153
/*** Tests for ECCCDH/SECP192R1 ***/
154
static const u8 ecccdh_SECP192R1_5_test_vector_our_priv_key[] = {
155
0xcf, 0x70, 0x35, 0x42, 0x26, 0x66, 0x73, 0x21, 0xd6, 0xe2, 0xba, 0xf4, 0x09, 0x99, 0xe2, 0xfd, 0x74, 0xc7, 0xa0, 0xf7, 0x93, 0xfa, 0x86, 0x99,
156
};
157
static const u8 ecccdh_SECP192R1_5_test_vector_peer_pub_key[] = {
158
0xfb, 0x35, 0xca, 0x20, 0xd2, 0xe9, 0x66, 0x65, 0xc5, 0x1b, 0x98, 0xe8, 0xf6, 0xeb, 0x3d, 0x79, 0x11, 0x35, 0x08, 0xd8, 0xbc, 0xcd, 0x45, 0x16, 0x36, 0x8e, 0xec, 0x0d, 0x5b, 0xfb, 0x84, 0x77, 0x21, 0xdf, 0x6a, 0xaf, 0xf0, 0xe5, 0xd4, 0x8c, 0x44, 0x4f, 0x74, 0xbf, 0x9c, 0xd8, 0xa5, 0xa7,
159
};
160
static const u8 ecccdh_SECP192R1_5_test_vector_our_pub_key[] = {
161
0x5f, 0x48, 0x44, 0xff, 0xcc, 0xe6, 0x10, 0x05, 0xd2, 0x4f, 0x73, 0x7d, 0xb9, 0x86, 0x75, 0xe9, 0x2f, 0x7b, 0x65, 0x43, 0xae, 0xb6, 0x10, 0x6c, 0x54, 0x24, 0xf5, 0x98, 0x13, 0x92, 0x15, 0xd3, 0x89, 0xb6, 0xb1, 0x2b, 0x86, 0xd5, 0x80, 0x14, 0x85, 0x7f, 0x2d, 0xda, 0xdb, 0x54, 0x0f, 0x51,
162
};
163
static const u8 ecccdh_SECP192R1_5_test_vector_shared_secret[] = {
164
0xf6, 0x70, 0x53, 0xb9, 0x34, 0x45, 0x99, 0x85, 0xa3, 0x15, 0xcb, 0x01, 0x7b, 0xf0, 0x30, 0x28, 0x91, 0x79, 0x8d, 0x45, 0xd0, 0xe1, 0x95, 0x08,
165
};
166
static const ecdh_test_case ecccdh_SECP192R1_5_test_case = {
167
.name = "ECCCDH/SECP192R1 5",
168
.ecdh_type = ECCCDH,
169
.ec_str_p = &secp192r1_str_params,
170
.our_priv_key = ecccdh_SECP192R1_5_test_vector_our_priv_key,
171
.our_priv_key_len = sizeof(ecccdh_SECP192R1_5_test_vector_our_priv_key),
172
.peer_pub_key = ecccdh_SECP192R1_5_test_vector_peer_pub_key,
173
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_5_test_vector_peer_pub_key),
174
.exp_our_pub_key = ecccdh_SECP192R1_5_test_vector_our_pub_key,
175
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_5_test_vector_our_pub_key),
176
.exp_shared_secret = ecccdh_SECP192R1_5_test_vector_shared_secret,
177
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_5_test_vector_shared_secret),
178
};
179
#endif /* WITH_CURVE_SECP192R1 */
180
181
#ifdef WITH_CURVE_SECP192R1
182
#define ECCCDH_SECP192R1_SELF_TEST_6
183
/*** Tests for ECCCDH/SECP192R1 ***/
184
static const u8 ecccdh_SECP192R1_6_test_vector_our_priv_key[] = {
185
0xfe, 0x94, 0x25, 0x15, 0x23, 0x7f, 0xff, 0xdd, 0x7b, 0x4e, 0xb5, 0xc6, 0x49, 0x09, 0xee, 0xe4, 0x85, 0x6a, 0x07, 0x6c, 0xdf, 0x12, 0xba, 0xe2,
186
};
187
static const u8 ecccdh_SECP192R1_6_test_vector_peer_pub_key[] = {
188
0x82, 0x47, 0x52, 0x96, 0x0c, 0x13, 0x07, 0xe5, 0xf1, 0x3a, 0x83, 0xda, 0x21, 0xc7, 0x99, 0x8c, 0xa8, 0xb5, 0xb0, 0x0b, 0x95, 0x49, 0xf6, 0xd0, 0xbc, 0x52, 0xd9, 0x1e, 0x23, 0x43, 0x63, 0xbc, 0x32, 0xee, 0x0b, 0x67, 0x78, 0xf2, 0x5c, 0xd8, 0xc1, 0x84, 0x75, 0x10, 0xf4, 0x34, 0x8b, 0x94,
189
};
190
static const u8 ecccdh_SECP192R1_6_test_vector_our_pub_key[] = {
191
0xe6, 0x36, 0x9d, 0xf7, 0x9b, 0x20, 0x7b, 0x8b, 0x86, 0x79, 0xf7, 0xc8, 0x69, 0xcf, 0xc2, 0x64, 0x85, 0x9d, 0x1a, 0xb5, 0x5a, 0xa4, 0x01, 0xe8, 0x1f, 0x99, 0xc7, 0x1f, 0x80, 0x1a, 0x30, 0xb5, 0x2f, 0x74, 0xda, 0x6e, 0x5e, 0x6d, 0xbb, 0x62, 0xee, 0x4c, 0x5d, 0xa1, 0x09, 0x0c, 0xc0, 0x20,
192
};
193
static const u8 ecccdh_SECP192R1_6_test_vector_shared_secret[] = {
194
0x75, 0x82, 0x29, 0x71, 0x19, 0x3e, 0xdd, 0x47, 0x2b, 0xf3, 0x01, 0x51, 0xa7, 0x82, 0x61, 0x9c, 0x55, 0xad, 0x0b, 0x27, 0x9c, 0x93, 0x03, 0xdd,
195
};
196
static const ecdh_test_case ecccdh_SECP192R1_6_test_case = {
197
.name = "ECCCDH/SECP192R1 6",
198
.ecdh_type = ECCCDH,
199
.ec_str_p = &secp192r1_str_params,
200
.our_priv_key = ecccdh_SECP192R1_6_test_vector_our_priv_key,
201
.our_priv_key_len = sizeof(ecccdh_SECP192R1_6_test_vector_our_priv_key),
202
.peer_pub_key = ecccdh_SECP192R1_6_test_vector_peer_pub_key,
203
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_6_test_vector_peer_pub_key),
204
.exp_our_pub_key = ecccdh_SECP192R1_6_test_vector_our_pub_key,
205
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_6_test_vector_our_pub_key),
206
.exp_shared_secret = ecccdh_SECP192R1_6_test_vector_shared_secret,
207
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_6_test_vector_shared_secret),
208
};
209
#endif /* WITH_CURVE_SECP192R1 */
210
211
#ifdef WITH_CURVE_SECP192R1
212
#define ECCCDH_SECP192R1_SELF_TEST_7
213
/*** Tests for ECCCDH/SECP192R1 ***/
214
static const u8 ecccdh_SECP192R1_7_test_vector_our_priv_key[] = {
215
0x33, 0xfe, 0xd1, 0x04, 0x92, 0xaf, 0xa5, 0xbe, 0xa0, 0x33, 0x3c, 0x0a, 0xf1, 0x2c, 0xac, 0x94, 0x0c, 0x4d, 0x22, 0x24, 0x55, 0xbc, 0xd0, 0xfe,
216
};
217
static const u8 ecccdh_SECP192R1_7_test_vector_peer_pub_key[] = {
218
0x10, 0xbb, 0x57, 0x02, 0x02, 0x91, 0x14, 0x19, 0x81, 0xf8, 0x33, 0xb4, 0x74, 0x9e, 0x56, 0x11, 0x03, 0x4b, 0x30, 0x8e, 0x84, 0x01, 0x1d, 0x21, 0xe1, 0xca, 0xcd, 0x6b, 0x7b, 0xd1, 0x7e, 0xd8, 0xdd, 0xb5, 0x0b, 0x6a, 0xee, 0x06, 0x54, 0xc3, 0x5f, 0x2d, 0x0e, 0xdd, 0xc1, 0xcf, 0xfc, 0xf6,
219
};
220
static const u8 ecccdh_SECP192R1_7_test_vector_our_pub_key[] = {
221
0xef, 0x0b, 0x28, 0xaf, 0xc4, 0x16, 0x37, 0xd7, 0x37, 0xf4, 0x2e, 0x4c, 0x8a, 0xac, 0xea, 0xdc, 0x84, 0xba, 0x2e, 0x0b, 0x84, 0x9c, 0xa1, 0x8c, 0x57, 0x79, 0x79, 0x42, 0xe5, 0x52, 0x17, 0x3b, 0xba, 0x17, 0xf7, 0x32, 0x78, 0xe0, 0x29, 0xf4, 0x23, 0x35, 0x06, 0x8b, 0xd7, 0x70, 0xdd, 0xf2,
222
};
223
static const u8 ecccdh_SECP192R1_7_test_vector_shared_secret[] = {
224
0x67, 0xcb, 0xa2, 0xcb, 0xb6, 0x9e, 0xe7, 0x8b, 0xf1, 0xab, 0xaf, 0xb0, 0xe6, 0xfb, 0xe3, 0x3f, 0xa2, 0x09, 0x4c, 0x12, 0x8d, 0x59, 0x65, 0x2d,
225
};
226
static const ecdh_test_case ecccdh_SECP192R1_7_test_case = {
227
.name = "ECCCDH/SECP192R1 7",
228
.ecdh_type = ECCCDH,
229
.ec_str_p = &secp192r1_str_params,
230
.our_priv_key = ecccdh_SECP192R1_7_test_vector_our_priv_key,
231
.our_priv_key_len = sizeof(ecccdh_SECP192R1_7_test_vector_our_priv_key),
232
.peer_pub_key = ecccdh_SECP192R1_7_test_vector_peer_pub_key,
233
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_7_test_vector_peer_pub_key),
234
.exp_our_pub_key = ecccdh_SECP192R1_7_test_vector_our_pub_key,
235
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_7_test_vector_our_pub_key),
236
.exp_shared_secret = ecccdh_SECP192R1_7_test_vector_shared_secret,
237
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_7_test_vector_shared_secret),
238
};
239
#endif /* WITH_CURVE_SECP192R1 */
240
241
#ifdef WITH_CURVE_SECP192R1
242
#define ECCCDH_SECP192R1_SELF_TEST_8
243
/*** Tests for ECCCDH/SECP192R1 ***/
244
static const u8 ecccdh_SECP192R1_8_test_vector_our_priv_key[] = {
245
0xf3, 0x55, 0x7c, 0x5d, 0x70, 0xb4, 0xc7, 0x95, 0x49, 0x60, 0xc3, 0x35, 0x68, 0x77, 0x6a, 0xdb, 0xe8, 0xe4, 0x36, 0x19, 0xab, 0xe2, 0x6b, 0x13,
246
};
247
static const u8 ecccdh_SECP192R1_8_test_vector_peer_pub_key[] = {
248
0x51, 0x92, 0xfc, 0xe4, 0x18, 0x5a, 0x77, 0x58, 0xea, 0x1b, 0xc5, 0x6e, 0x0e, 0x4f, 0x4e, 0x8b, 0x2d, 0xce, 0x32, 0x34, 0x8d, 0x0d, 0xce, 0xd1, 0x20, 0x98, 0x99, 0x81, 0xbe, 0xaa, 0xf0, 0x00, 0x6d, 0x88, 0xa9, 0x6e, 0x79, 0x71, 0xa2, 0xfa, 0x3a, 0x33, 0xba, 0x46, 0x04, 0x7f, 0xc7, 0xba,
249
};
250
static const u8 ecccdh_SECP192R1_8_test_vector_our_pub_key[] = {
251
0xd7, 0x01, 0x12, 0xc5, 0xf0, 0xf0, 0x84, 0x43, 0x86, 0x49, 0x4a, 0xc1, 0xad, 0x99, 0xdc, 0xe2, 0x21, 0x41, 0x34, 0x17, 0x6e, 0xbf, 0xb9, 0xaf, 0xd3, 0xc1, 0x87, 0xa0, 0x38, 0x51, 0x0a, 0xb3, 0x1d, 0x45, 0x9e, 0x2b, 0x7a, 0xf1, 0xa3, 0x80, 0xdd, 0x75, 0x76, 0xaf, 0x06, 0x26, 0x75, 0x48,
252
};
253
static const u8 ecccdh_SECP192R1_8_test_vector_shared_secret[] = {
254
0xcf, 0x99, 0xa2, 0x77, 0x0a, 0x38, 0x6c, 0xa0, 0x13, 0x7d, 0x1e, 0xca, 0x0a, 0x22, 0x6e, 0x48, 0x42, 0x97, 0xac, 0x3c, 0x51, 0x3f, 0x36, 0x31,
255
};
256
static const ecdh_test_case ecccdh_SECP192R1_8_test_case = {
257
.name = "ECCCDH/SECP192R1 8",
258
.ecdh_type = ECCCDH,
259
.ec_str_p = &secp192r1_str_params,
260
.our_priv_key = ecccdh_SECP192R1_8_test_vector_our_priv_key,
261
.our_priv_key_len = sizeof(ecccdh_SECP192R1_8_test_vector_our_priv_key),
262
.peer_pub_key = ecccdh_SECP192R1_8_test_vector_peer_pub_key,
263
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_8_test_vector_peer_pub_key),
264
.exp_our_pub_key = ecccdh_SECP192R1_8_test_vector_our_pub_key,
265
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_8_test_vector_our_pub_key),
266
.exp_shared_secret = ecccdh_SECP192R1_8_test_vector_shared_secret,
267
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_8_test_vector_shared_secret),
268
};
269
#endif /* WITH_CURVE_SECP192R1 */
270
271
#ifdef WITH_CURVE_SECP192R1
272
#define ECCCDH_SECP192R1_SELF_TEST_9
273
/*** Tests for ECCCDH/SECP192R1 ***/
274
static const u8 ecccdh_SECP192R1_9_test_vector_our_priv_key[] = {
275
0x58, 0x6c, 0xfb, 0xa1, 0xc6, 0xe8, 0x17, 0x66, 0xed, 0x52, 0x82, 0x8f, 0x17, 0x7b, 0x1b, 0xe1, 0x4e, 0xbb, 0xc5, 0xb8, 0x33, 0x48, 0xc3, 0x11,
276
};
277
static const u8 ecccdh_SECP192R1_9_test_vector_peer_pub_key[] = {
278
0x26, 0xd0, 0x19, 0xdb, 0xe2, 0x79, 0xea, 0xd0, 0x1e, 0xed, 0x14, 0x3a, 0x91, 0x60, 0x1a, 0xda, 0x26, 0xe2, 0xf4, 0x22, 0x25, 0xb1, 0xc6, 0x2b, 0x6c, 0xa6, 0x53, 0xf0, 0x82, 0x72, 0xe0, 0x38, 0x6f, 0xc9, 0x42, 0x1f, 0xbd, 0x58, 0x00, 0x93, 0xd7, 0xae, 0x63, 0x01, 0xbc, 0xa9, 0x44, 0x76,
279
};
280
static const u8 ecccdh_SECP192R1_9_test_vector_our_pub_key[] = {
281
0x58, 0xb3, 0xc6, 0x3e, 0x56, 0xbe, 0xc9, 0xd6, 0x96, 0xbf, 0x9a, 0x88, 0xdf, 0x28, 0x73, 0x73, 0x83, 0x91, 0xf7, 0x63, 0x68, 0xaa, 0x2b, 0x49, 0x57, 0x76, 0x77, 0x3b, 0x26, 0x1f, 0xaf, 0x7b, 0xa2, 0xfd, 0xc4, 0xfe, 0x43, 0xb9, 0x2c, 0x0b, 0x1c, 0x7a, 0x2f, 0xd0, 0x54, 0xa4, 0x36, 0x50,
282
};
283
static const u8 ecccdh_SECP192R1_9_test_vector_shared_secret[] = {
284
0x57, 0x63, 0x31, 0xe2, 0xb4, 0xfb, 0x38, 0xa1, 0x12, 0x81, 0x0e, 0x15, 0x29, 0x83, 0x4d, 0xe8, 0x30, 0x7f, 0xb0, 0xa0, 0xd2, 0x75, 0x68, 0x77,
285
};
286
static const ecdh_test_case ecccdh_SECP192R1_9_test_case = {
287
.name = "ECCCDH/SECP192R1 9",
288
.ecdh_type = ECCCDH,
289
.ec_str_p = &secp192r1_str_params,
290
.our_priv_key = ecccdh_SECP192R1_9_test_vector_our_priv_key,
291
.our_priv_key_len = sizeof(ecccdh_SECP192R1_9_test_vector_our_priv_key),
292
.peer_pub_key = ecccdh_SECP192R1_9_test_vector_peer_pub_key,
293
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_9_test_vector_peer_pub_key),
294
.exp_our_pub_key = ecccdh_SECP192R1_9_test_vector_our_pub_key,
295
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_9_test_vector_our_pub_key),
296
.exp_shared_secret = ecccdh_SECP192R1_9_test_vector_shared_secret,
297
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_9_test_vector_shared_secret),
298
};
299
#endif /* WITH_CURVE_SECP192R1 */
300
301
#ifdef WITH_CURVE_SECP192R1
302
#define ECCCDH_SECP192R1_SELF_TEST_10
303
/*** Tests for ECCCDH/SECP192R1 ***/
304
static const u8 ecccdh_SECP192R1_10_test_vector_our_priv_key[] = {
305
0xca, 0xd8, 0x10, 0x06, 0x03, 0xa4, 0xf6, 0x5b, 0xe0, 0x8d, 0x8f, 0xc8, 0xa1, 0xb7, 0xe8, 0x84, 0xc5, 0xff, 0x65, 0xde, 0xb3, 0xc9, 0x6d, 0x99,
306
};
307
static const u8 ecccdh_SECP192R1_10_test_vector_peer_pub_key[] = {
308
0x53, 0x9b, 0xc4, 0x0f, 0xe2, 0x0a, 0x0f, 0xb2, 0x67, 0x88, 0x8b, 0x64, 0x7b, 0x03, 0xea, 0xaf, 0x6e, 0xc2, 0x0c, 0x02, 0xa1, 0xe1, 0xf8, 0xc8, 0x69, 0x09, 0x5e, 0x5b, 0xb7, 0xb4, 0xd4, 0x4c, 0x32, 0x78, 0xa7, 0xee, 0x6b, 0xec, 0xa3, 0x97, 0xc4, 0x52, 0x46, 0xda, 0x9a, 0x34, 0xc8, 0xbe,
309
};
310
static const u8 ecccdh_SECP192R1_10_test_vector_our_pub_key[] = {
311
0xb7, 0xfc, 0xc0, 0xf5, 0x2c, 0x7a, 0x41, 0x1e, 0xdb, 0xed, 0x39, 0xe1, 0x0b, 0xf0, 0x2b, 0x6a, 0xe0, 0xf2, 0x66, 0x14, 0xc6, 0xb3, 0x25, 0xa2, 0x47, 0x48, 0x3b, 0x26, 0xeb, 0x67, 0x77, 0x6d, 0xe2, 0xb9, 0x3a, 0xb7, 0x11, 0x9d, 0x54, 0x47, 0x57, 0x37, 0x39, 0xe3, 0xd5, 0x5e, 0x72, 0xfb,
312
};
313
static const u8 ecccdh_SECP192R1_10_test_vector_shared_secret[] = {
314
0x90, 0x2f, 0x45, 0x01, 0x91, 0x6a, 0x0d, 0xd9, 0x45, 0x55, 0x4c, 0x3a, 0x37, 0xb3, 0xd7, 0x80, 0xd3, 0x75, 0xa6, 0xda, 0x71, 0x31, 0x97, 0xc4,
315
};
316
static const ecdh_test_case ecccdh_SECP192R1_10_test_case = {
317
.name = "ECCCDH/SECP192R1 10",
318
.ecdh_type = ECCCDH,
319
.ec_str_p = &secp192r1_str_params,
320
.our_priv_key = ecccdh_SECP192R1_10_test_vector_our_priv_key,
321
.our_priv_key_len = sizeof(ecccdh_SECP192R1_10_test_vector_our_priv_key),
322
.peer_pub_key = ecccdh_SECP192R1_10_test_vector_peer_pub_key,
323
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_10_test_vector_peer_pub_key),
324
.exp_our_pub_key = ecccdh_SECP192R1_10_test_vector_our_pub_key,
325
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_10_test_vector_our_pub_key),
326
.exp_shared_secret = ecccdh_SECP192R1_10_test_vector_shared_secret,
327
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_10_test_vector_shared_secret),
328
};
329
#endif /* WITH_CURVE_SECP192R1 */
330
331
#ifdef WITH_CURVE_SECP192R1
332
#define ECCCDH_SECP192R1_SELF_TEST_11
333
/*** Tests for ECCCDH/SECP192R1 ***/
334
static const u8 ecccdh_SECP192R1_11_test_vector_our_priv_key[] = {
335
0x1e, 0xdd, 0x87, 0x9c, 0xc5, 0xc7, 0x96, 0x19, 0xca, 0xe6, 0xc7, 0x3a, 0x69, 0x1b, 0xd5, 0xa0, 0x39, 0x5c, 0x0e, 0xf3, 0xb3, 0x56, 0xfc, 0xd2,
336
};
337
static const u8 ecccdh_SECP192R1_11_test_vector_peer_pub_key[] = {
338
0x5d, 0x34, 0x3d, 0xdb, 0x96, 0x31, 0x8f, 0xb4, 0x79, 0x4d, 0x10, 0xf6, 0xc5, 0x73, 0xf9, 0x9f, 0xee, 0x5d, 0x0d, 0x57, 0xb9, 0x96, 0x25, 0x0f, 0x99, 0xfb, 0xdf, 0x9d, 0x97, 0xdd, 0x88, 0xad, 0x41, 0x02, 0x35, 0xda, 0xc3, 0x6e, 0x5b, 0x92, 0xce, 0x28, 0x24, 0xb8, 0xe5, 0x87, 0xa8, 0x2c,
339
};
340
static const u8 ecccdh_SECP192R1_11_test_vector_our_pub_key[] = {
341
0x6c, 0xe6, 0xad, 0xb2, 0xc3, 0x08, 0x08, 0xf5, 0x90, 0x04, 0x8c, 0x33, 0xdf, 0xfa, 0xd4, 0x52, 0x4e, 0xbf, 0x7a, 0x5f, 0xd3, 0x9b, 0x74, 0x7b, 0x49, 0x66, 0xbd, 0x2f, 0x3d, 0x00, 0x56, 0x9b, 0x4d, 0x4c, 0x04, 0x09, 0xfb, 0xd7, 0xa2, 0xdb, 0x75, 0x2f, 0x6d, 0x09, 0xbc, 0xa8, 0xc2, 0x5f,
342
};
343
static const u8 ecccdh_SECP192R1_11_test_vector_shared_secret[] = {
344
0x46, 0xe4, 0xde, 0x33, 0x50, 0x54, 0xd4, 0x29, 0x86, 0x32, 0x18, 0xae, 0x33, 0x63, 0x6f, 0xc9, 0xb8, 0x9c, 0x62, 0x8b, 0x64, 0xb5, 0x06, 0xc7,
345
};
346
static const ecdh_test_case ecccdh_SECP192R1_11_test_case = {
347
.name = "ECCCDH/SECP192R1 11",
348
.ecdh_type = ECCCDH,
349
.ec_str_p = &secp192r1_str_params,
350
.our_priv_key = ecccdh_SECP192R1_11_test_vector_our_priv_key,
351
.our_priv_key_len = sizeof(ecccdh_SECP192R1_11_test_vector_our_priv_key),
352
.peer_pub_key = ecccdh_SECP192R1_11_test_vector_peer_pub_key,
353
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_11_test_vector_peer_pub_key),
354
.exp_our_pub_key = ecccdh_SECP192R1_11_test_vector_our_pub_key,
355
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_11_test_vector_our_pub_key),
356
.exp_shared_secret = ecccdh_SECP192R1_11_test_vector_shared_secret,
357
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_11_test_vector_shared_secret),
358
};
359
#endif /* WITH_CURVE_SECP192R1 */
360
361
#ifdef WITH_CURVE_SECP192R1
362
#define ECCCDH_SECP192R1_SELF_TEST_12
363
/*** Tests for ECCCDH/SECP192R1 ***/
364
static const u8 ecccdh_SECP192R1_12_test_vector_our_priv_key[] = {
365
0x46, 0x0e, 0x45, 0x22, 0x73, 0xfe, 0x18, 0x27, 0x60, 0x21, 0x87, 0xad, 0x3b, 0xeb, 0xee, 0x65, 0xcb, 0x84, 0x42, 0x3b, 0xb4, 0xf4, 0x75, 0x37,
366
};
367
static const u8 ecccdh_SECP192R1_12_test_vector_peer_pub_key[] = {
368
0x8d, 0x3d, 0xb9, 0xbd, 0xce, 0x13, 0x7f, 0xfb, 0xfb, 0x89, 0x13, 0x88, 0xc3, 0x7d, 0xf6, 0xc0, 0xcb, 0xc9, 0x0a, 0xa5, 0xe5, 0x37, 0x62, 0x20, 0x13, 0x5d, 0x30, 0xb5, 0xcb, 0x66, 0x0e, 0xef, 0x87, 0x64, 0xff, 0xc7, 0x44, 0xf1, 0x5c, 0x1b, 0x5d, 0x6d, 0xc0, 0x6b, 0xa4, 0x41, 0x6d, 0x37,
369
};
370
static const u8 ecccdh_SECP192R1_12_test_vector_our_pub_key[] = {
371
0xd1, 0xbd, 0x3a, 0x3e, 0xfa, 0xbf, 0x47, 0x67, 0xfe, 0x63, 0x80, 0xbd, 0xf0, 0xdb, 0xf4, 0x9d, 0x52, 0xd4, 0xcf, 0x0c, 0xbb, 0x89, 0x40, 0x4c, 0xc1, 0x50, 0xc2, 0xb4, 0xc8, 0xb3, 0xaa, 0x35, 0xf7, 0x65, 0xf8, 0x47, 0xe4, 0xf7, 0xf8, 0xfd, 0x87, 0x04, 0xd2, 0x41, 0xa1, 0x81, 0xee, 0x99,
372
};
373
static const u8 ecccdh_SECP192R1_12_test_vector_shared_secret[] = {
374
0x1b, 0xfe, 0x9e, 0x5a, 0x20, 0xac, 0x7a, 0x38, 0xd8, 0xf6, 0x05, 0xb4, 0x25, 0xbb, 0x90, 0x30, 0xbe, 0x31, 0xef, 0x97, 0xc1, 0x01, 0xc7, 0x6c,
375
};
376
static const ecdh_test_case ecccdh_SECP192R1_12_test_case = {
377
.name = "ECCCDH/SECP192R1 12",
378
.ecdh_type = ECCCDH,
379
.ec_str_p = &secp192r1_str_params,
380
.our_priv_key = ecccdh_SECP192R1_12_test_vector_our_priv_key,
381
.our_priv_key_len = sizeof(ecccdh_SECP192R1_12_test_vector_our_priv_key),
382
.peer_pub_key = ecccdh_SECP192R1_12_test_vector_peer_pub_key,
383
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_12_test_vector_peer_pub_key),
384
.exp_our_pub_key = ecccdh_SECP192R1_12_test_vector_our_pub_key,
385
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_12_test_vector_our_pub_key),
386
.exp_shared_secret = ecccdh_SECP192R1_12_test_vector_shared_secret,
387
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_12_test_vector_shared_secret),
388
};
389
#endif /* WITH_CURVE_SECP192R1 */
390
391
#ifdef WITH_CURVE_SECP192R1
392
#define ECCCDH_SECP192R1_SELF_TEST_13
393
/*** Tests for ECCCDH/SECP192R1 ***/
394
static const u8 ecccdh_SECP192R1_13_test_vector_our_priv_key[] = {
395
0xb9, 0x70, 0x36, 0x50, 0x08, 0x45, 0x6f, 0x87, 0x58, 0xec, 0xc5, 0xa3, 0xb3, 0x3c, 0xf3, 0xae, 0x6a, 0x8d, 0x56, 0x81, 0x07, 0xa5, 0x21, 0x67,
396
};
397
static const u8 ecccdh_SECP192R1_13_test_vector_peer_pub_key[] = {
398
0x9e, 0x0a, 0x69, 0x49, 0x51, 0x9c, 0x7f, 0x5b, 0xe6, 0x8c, 0x04, 0x33, 0xc5, 0xfd, 0xf1, 0x30, 0x64, 0xaa, 0x13, 0xfb, 0x29, 0x48, 0x3d, 0xc3, 0xe1, 0xc8, 0xba, 0x63, 0xe1, 0xf4, 0x71, 0xdb, 0x23, 0x18, 0x5f, 0x50, 0xd9, 0xc8, 0x71, 0xed, 0xea, 0x21, 0x25, 0x5b, 0x3a, 0x63, 0xb4, 0xb7,
399
};
400
static const u8 ecccdh_SECP192R1_13_test_vector_our_pub_key[] = {
401
0xc1, 0xb8, 0x61, 0x0c, 0x8c, 0x63, 0xf8, 0xd4, 0xab, 0xda, 0x09, 0x3b, 0x9a, 0x11, 0xa5, 0x66, 0x04, 0x4b, 0xf6, 0x5c, 0x6f, 0xaa, 0x89, 0x99, 0xa5, 0xbc, 0x4b, 0x3c, 0xa0, 0x95, 0x38, 0x2e, 0x97, 0x38, 0xae, 0xe9, 0x5f, 0xe9, 0x47, 0x9b, 0x17, 0x87, 0x9b, 0x3a, 0xd5, 0x29, 0x55, 0x59,
402
};
403
static const u8 ecccdh_SECP192R1_13_test_vector_shared_secret[] = {
404
0x0e, 0x8c, 0x49, 0x3a, 0x4a, 0xdc, 0x44, 0x5d, 0xc9, 0x28, 0x8a, 0x3b, 0x9b, 0x27, 0x25, 0x99, 0x22, 0x40, 0x54, 0x59, 0x2d, 0x72, 0x65, 0xb3,
405
};
406
static const ecdh_test_case ecccdh_SECP192R1_13_test_case = {
407
.name = "ECCCDH/SECP192R1 13",
408
.ecdh_type = ECCCDH,
409
.ec_str_p = &secp192r1_str_params,
410
.our_priv_key = ecccdh_SECP192R1_13_test_vector_our_priv_key,
411
.our_priv_key_len = sizeof(ecccdh_SECP192R1_13_test_vector_our_priv_key),
412
.peer_pub_key = ecccdh_SECP192R1_13_test_vector_peer_pub_key,
413
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_13_test_vector_peer_pub_key),
414
.exp_our_pub_key = ecccdh_SECP192R1_13_test_vector_our_pub_key,
415
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_13_test_vector_our_pub_key),
416
.exp_shared_secret = ecccdh_SECP192R1_13_test_vector_shared_secret,
417
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_13_test_vector_shared_secret),
418
};
419
#endif /* WITH_CURVE_SECP192R1 */
420
421
#ifdef WITH_CURVE_SECP192R1
422
#define ECCCDH_SECP192R1_SELF_TEST_14
423
/*** Tests for ECCCDH/SECP192R1 ***/
424
static const u8 ecccdh_SECP192R1_14_test_vector_our_priv_key[] = {
425
0x59, 0xc1, 0x5b, 0x8a, 0x24, 0x64, 0xe4, 0x1d, 0xfe, 0x43, 0x71, 0xc7, 0xf7, 0xda, 0xdf, 0x47, 0x0a, 0xe4, 0x25, 0x54, 0x4f, 0x81, 0x13, 0xbd,
426
};
427
static const u8 ecccdh_SECP192R1_14_test_vector_peer_pub_key[] = {
428
0xbe, 0x08, 0x82, 0x38, 0x90, 0x2e, 0x99, 0x39, 0xb3, 0xd0, 0x54, 0xee, 0xeb, 0x84, 0x92, 0xda, 0xf4, 0xbd, 0xcf, 0x09, 0xa2, 0xab, 0x77, 0xf1, 0x58, 0xd6, 0x74, 0x9a, 0x3a, 0x92, 0x3d, 0xc8, 0x04, 0x40, 0xf2, 0x66, 0x1f, 0xd3, 0x5b, 0x65, 0x16, 0x17, 0xe6, 0x52, 0x94, 0xb4, 0x63, 0x75,
429
};
430
static const u8 ecccdh_SECP192R1_14_test_vector_our_pub_key[] = {
431
0x1f, 0xe7, 0x76, 0xf7, 0x35, 0x67, 0xb6, 0xac, 0x0b, 0x0d, 0x67, 0x64, 0x16, 0x4d, 0xe6, 0xc5, 0xbe, 0x75, 0x1b, 0xa8, 0xd1, 0xff, 0x45, 0x5e, 0x4c, 0x16, 0x0b, 0xf3, 0x8a, 0xfb, 0x2b, 0x71, 0xf6, 0x84, 0x26, 0x16, 0x64, 0x11, 0x5c, 0xe8, 0x74, 0x55, 0x3e, 0x8b, 0x05, 0x94, 0x32, 0xd2,
432
};
433
static const u8 ecccdh_SECP192R1_14_test_vector_shared_secret[] = {
434
0x0f, 0x19, 0x91, 0x08, 0x6b, 0x45, 0x5d, 0xed, 0x6a, 0x1c, 0x41, 0x46, 0xf7, 0xbf, 0x59, 0xfe, 0x9b, 0x49, 0x5d, 0xe5, 0x66, 0xeb, 0xc6, 0xbf,
435
};
436
static const ecdh_test_case ecccdh_SECP192R1_14_test_case = {
437
.name = "ECCCDH/SECP192R1 14",
438
.ecdh_type = ECCCDH,
439
.ec_str_p = &secp192r1_str_params,
440
.our_priv_key = ecccdh_SECP192R1_14_test_vector_our_priv_key,
441
.our_priv_key_len = sizeof(ecccdh_SECP192R1_14_test_vector_our_priv_key),
442
.peer_pub_key = ecccdh_SECP192R1_14_test_vector_peer_pub_key,
443
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_14_test_vector_peer_pub_key),
444
.exp_our_pub_key = ecccdh_SECP192R1_14_test_vector_our_pub_key,
445
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_14_test_vector_our_pub_key),
446
.exp_shared_secret = ecccdh_SECP192R1_14_test_vector_shared_secret,
447
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_14_test_vector_shared_secret),
448
};
449
#endif /* WITH_CURVE_SECP192R1 */
450
451
#ifdef WITH_CURVE_SECP192R1
452
#define ECCCDH_SECP192R1_SELF_TEST_15
453
/*** Tests for ECCCDH/SECP192R1 ***/
454
static const u8 ecccdh_SECP192R1_15_test_vector_our_priv_key[] = {
455
0xa6, 0xe9, 0xb8, 0x85, 0xc6, 0x6b, 0x95, 0x9d, 0x1f, 0xc2, 0x70, 0x8d, 0x59, 0x1b, 0x6d, 0x32, 0x28, 0xe4, 0x9e, 0xb9, 0x8f, 0x72, 0x6d, 0x61,
456
};
457
static const u8 ecccdh_SECP192R1_15_test_vector_peer_pub_key[] = {
458
0xbf, 0x5a, 0xe0, 0x50, 0x25, 0xe1, 0xbe, 0x61, 0x7e, 0x66, 0x6d, 0x87, 0xa4, 0x16, 0x83, 0x63, 0x87, 0x3d, 0x57, 0x61, 0xb3, 0x76, 0xb5, 0x03, 0xe1, 0xe6, 0xe3, 0x8b, 0x37, 0x2b, 0x6b, 0xee, 0x0f, 0xf5, 0xb3, 0x50, 0x2d, 0x83, 0x73, 0x5e, 0x3b, 0x2c, 0x26, 0x82, 0x5e, 0x4f, 0x0f, 0xcc,
459
};
460
static const u8 ecccdh_SECP192R1_15_test_vector_our_pub_key[] = {
461
0x63, 0x2b, 0xb7, 0x65, 0x1d, 0xbf, 0x49, 0xdd, 0xe9, 0xdd, 0x12, 0x5d, 0x13, 0xfb, 0x23, 0x4e, 0x06, 0x61, 0x77, 0x23, 0xbe, 0xed, 0x3d, 0x1b, 0xf4, 0xad, 0x52, 0x09, 0x63, 0x84, 0x88, 0x39, 0x7c, 0x5f, 0x44, 0xf9, 0x94, 0xdd, 0x74, 0x79, 0x80, 0x7e, 0x79, 0xf4, 0x88, 0x7d, 0x2e, 0x71,
462
};
463
static const u8 ecccdh_SECP192R1_15_test_vector_shared_secret[] = {
464
0xb3, 0x0f, 0x21, 0x27, 0xc3, 0x4d, 0xf3, 0x5a, 0xaa, 0x91, 0xdb, 0xf0, 0xbb, 0xe1, 0x57, 0x98, 0xe7, 0x99, 0xa0, 0x3e, 0xd1, 0x16, 0x98, 0xc1,
465
};
466
static const ecdh_test_case ecccdh_SECP192R1_15_test_case = {
467
.name = "ECCCDH/SECP192R1 15",
468
.ecdh_type = ECCCDH,
469
.ec_str_p = &secp192r1_str_params,
470
.our_priv_key = ecccdh_SECP192R1_15_test_vector_our_priv_key,
471
.our_priv_key_len = sizeof(ecccdh_SECP192R1_15_test_vector_our_priv_key),
472
.peer_pub_key = ecccdh_SECP192R1_15_test_vector_peer_pub_key,
473
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_15_test_vector_peer_pub_key),
474
.exp_our_pub_key = ecccdh_SECP192R1_15_test_vector_our_pub_key,
475
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_15_test_vector_our_pub_key),
476
.exp_shared_secret = ecccdh_SECP192R1_15_test_vector_shared_secret,
477
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_15_test_vector_shared_secret),
478
};
479
#endif /* WITH_CURVE_SECP192R1 */
480
481
#ifdef WITH_CURVE_SECP192R1
482
#define ECCCDH_SECP192R1_SELF_TEST_16
483
/*** Tests for ECCCDH/SECP192R1 ***/
484
static const u8 ecccdh_SECP192R1_16_test_vector_our_priv_key[] = {
485
0xbd, 0xb7, 0x54, 0x09, 0x6f, 0xfb, 0xfb, 0xd8, 0xb0, 0xf3, 0xcb, 0x04, 0x6c, 0xcb, 0x7c, 0xa1, 0x49, 0xc4, 0xe7, 0x19, 0x20, 0x67, 0xa3, 0xee,
486
};
487
static const u8 ecccdh_SECP192R1_16_test_vector_peer_pub_key[] = {
488
0x6c, 0xc4, 0xfe, 0xed, 0x84, 0xc7, 0xab, 0x0d, 0x09, 0x00, 0x5d, 0x66, 0x0e, 0xd3, 0x4d, 0xe6, 0x95, 0x5a, 0x94, 0x61, 0xc4, 0x13, 0x8d, 0x11, 0x31, 0x22, 0x5f, 0x33, 0x86, 0x4e, 0xd4, 0x8d, 0xa0, 0x6f, 0xa4, 0x5a, 0x91, 0x3b, 0x46, 0xcf, 0x42, 0x55, 0x77, 0x42, 0xe3, 0x50, 0x85, 0xe6,
489
};
490
static const u8 ecccdh_SECP192R1_16_test_vector_our_pub_key[] = {
491
0xd9, 0xc0, 0x98, 0xd4, 0x21, 0xd7, 0x41, 0xf6, 0xfa, 0xab, 0x11, 0x6f, 0x3e, 0x47, 0x31, 0xd2, 0x8c, 0x55, 0x58, 0xe1, 0x9f, 0xe1, 0x12, 0xa1, 0x38, 0xd4, 0xdc, 0x48, 0xcc, 0xdb, 0x1d, 0x3e, 0xd8, 0xd3, 0x1f, 0xd0, 0x67, 0x84, 0xa4, 0xf8, 0x7a, 0x68, 0xae, 0xc1, 0xcb, 0xd5, 0xb0, 0x8f,
492
};
493
static const u8 ecccdh_SECP192R1_16_test_vector_shared_secret[] = {
494
0x64, 0xa5, 0xc2, 0x46, 0x59, 0x9d, 0x3e, 0x81, 0x77, 0xa2, 0x40, 0x2a, 0x11, 0x10, 0xeb, 0x81, 0xe6, 0xc4, 0x56, 0xab, 0x4e, 0xdb, 0x51, 0x27,
495
};
496
static const ecdh_test_case ecccdh_SECP192R1_16_test_case = {
497
.name = "ECCCDH/SECP192R1 16",
498
.ecdh_type = ECCCDH,
499
.ec_str_p = &secp192r1_str_params,
500
.our_priv_key = ecccdh_SECP192R1_16_test_vector_our_priv_key,
501
.our_priv_key_len = sizeof(ecccdh_SECP192R1_16_test_vector_our_priv_key),
502
.peer_pub_key = ecccdh_SECP192R1_16_test_vector_peer_pub_key,
503
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_16_test_vector_peer_pub_key),
504
.exp_our_pub_key = ecccdh_SECP192R1_16_test_vector_our_pub_key,
505
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_16_test_vector_our_pub_key),
506
.exp_shared_secret = ecccdh_SECP192R1_16_test_vector_shared_secret,
507
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_16_test_vector_shared_secret),
508
};
509
#endif /* WITH_CURVE_SECP192R1 */
510
511
#ifdef WITH_CURVE_SECP192R1
512
#define ECCCDH_SECP192R1_SELF_TEST_17
513
/*** Tests for ECCCDH/SECP192R1 ***/
514
static const u8 ecccdh_SECP192R1_17_test_vector_our_priv_key[] = {
515
0xd5, 0xbc, 0xf2, 0x53, 0x4d, 0xaf, 0xc3, 0xd9, 0x99, 0x64, 0xc7, 0xbd, 0x63, 0xab, 0x7b, 0xd1, 0x59, 0x99, 0xfe, 0x56, 0xdd, 0x96, 0x9c, 0x42,
516
};
517
static const u8 ecccdh_SECP192R1_17_test_vector_peer_pub_key[] = {
518
0x36, 0x15, 0x73, 0x15, 0xbe, 0xe7, 0xaf, 0xed, 0xde, 0xd5, 0x8c, 0x4e, 0x8b, 0xa1, 0x4d, 0x34, 0x21, 0xc4, 0x01, 0xe5, 0x11, 0x35, 0xbc, 0xc9, 0x37, 0xc2, 0x97, 0xca, 0x70, 0x3f, 0x77, 0xc5, 0x2b, 0xb0, 0x62, 0xd8, 0xce, 0x97, 0x1d, 0xb8, 0x40, 0x97, 0xba, 0x0c, 0x75, 0x3a, 0x41, 0x8f,
519
};
520
static const u8 ecccdh_SECP192R1_17_test_vector_our_pub_key[] = {
521
0xfd, 0xa1, 0xd5, 0xd2, 0x8d, 0x6f, 0xe0, 0xe7, 0x90, 0x9d, 0x6a, 0x8b, 0xaf, 0xa7, 0x82, 0x4d, 0xb5, 0x57, 0x2a, 0xb9, 0x2f, 0xfe, 0x7d, 0xe6, 0x13, 0x4a, 0x29, 0x7c, 0x1d, 0x9c, 0x8b, 0xba, 0xb2, 0x49, 0xab, 0xac, 0xd9, 0x51, 0xed, 0x11, 0xe5, 0xa9, 0x9f, 0x92, 0xe7, 0x99, 0x15, 0x72,
522
};
523
static const u8 ecccdh_SECP192R1_17_test_vector_shared_secret[] = {
524
0x01, 0x7b, 0x8c, 0xa5, 0x3c, 0x82, 0xfa, 0xb1, 0x63, 0xda, 0x2a, 0xb7, 0x83, 0x96, 0x6a, 0x39, 0xe0, 0x61, 0xb3, 0x2c, 0x8c, 0xfa, 0x33, 0x4d,
525
};
526
static const ecdh_test_case ecccdh_SECP192R1_17_test_case = {
527
.name = "ECCCDH/SECP192R1 17",
528
.ecdh_type = ECCCDH,
529
.ec_str_p = &secp192r1_str_params,
530
.our_priv_key = ecccdh_SECP192R1_17_test_vector_our_priv_key,
531
.our_priv_key_len = sizeof(ecccdh_SECP192R1_17_test_vector_our_priv_key),
532
.peer_pub_key = ecccdh_SECP192R1_17_test_vector_peer_pub_key,
533
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_17_test_vector_peer_pub_key),
534
.exp_our_pub_key = ecccdh_SECP192R1_17_test_vector_our_pub_key,
535
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_17_test_vector_our_pub_key),
536
.exp_shared_secret = ecccdh_SECP192R1_17_test_vector_shared_secret,
537
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_17_test_vector_shared_secret),
538
};
539
#endif /* WITH_CURVE_SECP192R1 */
540
541
#ifdef WITH_CURVE_SECP192R1
542
#define ECCCDH_SECP192R1_SELF_TEST_18
543
/*** Tests for ECCCDH/SECP192R1 ***/
544
static const u8 ecccdh_SECP192R1_18_test_vector_our_priv_key[] = {
545
0x43, 0xd4, 0xb9, 0xdf, 0x10, 0x53, 0xbe, 0x5b, 0x42, 0x68, 0x10, 0x4c, 0x02, 0x24, 0x4d, 0x3b, 0xf9, 0x59, 0x4b, 0x01, 0x0b, 0x46, 0xa8, 0xb2,
546
};
547
static const u8 ecccdh_SECP192R1_18_test_vector_peer_pub_key[] = {
548
0x98, 0x46, 0x4d, 0x47, 0xf0, 0x25, 0x6f, 0x82, 0x92, 0xe0, 0x27, 0xe8, 0xc9, 0x25, 0x82, 0xea, 0x77, 0xcf, 0x90, 0x51, 0xf5, 0xce, 0x8e, 0x5d, 0x44, 0x95, 0x52, 0xef, 0x75, 0x78, 0xbe, 0x96, 0x23, 0x6f, 0xe5, 0xed, 0x9d, 0x06, 0x43, 0xc0, 0xbb, 0x6c, 0x5a, 0x91, 0x34, 0xb0, 0x10, 0x8d,
549
};
550
static const u8 ecccdh_SECP192R1_18_test_vector_our_pub_key[] = {
551
0xc3, 0x02, 0x0b, 0x70, 0x91, 0x46, 0x3d, 0x78, 0x8f, 0x1f, 0x1d, 0x76, 0xf7, 0xcf, 0xee, 0xc8, 0x2e, 0xcd, 0xb3, 0xb7, 0xd9, 0x9c, 0x34, 0x5c, 0x9a, 0x77, 0x10, 0xd5, 0x17, 0x95, 0x91, 0xd8, 0xf3, 0xdf, 0x0a, 0xa1, 0x22, 0x30, 0x17, 0x68, 0xae, 0x7d, 0xb7, 0xee, 0xe2, 0xd7, 0xf5, 0x83,
552
};
553
static const u8 ecccdh_SECP192R1_18_test_vector_shared_secret[] = {
554
0x34, 0x0e, 0xf3, 0xdb, 0x3d, 0xbe, 0xbd, 0xd9, 0x1c, 0x62, 0xc3, 0xd4, 0xe1, 0xa3, 0xda, 0x2c, 0x7c, 0x52, 0xa3, 0x33, 0x8b, 0x86, 0x52, 0x59,
555
};
556
static const ecdh_test_case ecccdh_SECP192R1_18_test_case = {
557
.name = "ECCCDH/SECP192R1 18",
558
.ecdh_type = ECCCDH,
559
.ec_str_p = &secp192r1_str_params,
560
.our_priv_key = ecccdh_SECP192R1_18_test_vector_our_priv_key,
561
.our_priv_key_len = sizeof(ecccdh_SECP192R1_18_test_vector_our_priv_key),
562
.peer_pub_key = ecccdh_SECP192R1_18_test_vector_peer_pub_key,
563
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_18_test_vector_peer_pub_key),
564
.exp_our_pub_key = ecccdh_SECP192R1_18_test_vector_our_pub_key,
565
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_18_test_vector_our_pub_key),
566
.exp_shared_secret = ecccdh_SECP192R1_18_test_vector_shared_secret,
567
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_18_test_vector_shared_secret),
568
};
569
#endif /* WITH_CURVE_SECP192R1 */
570
571
#ifdef WITH_CURVE_SECP192R1
572
#define ECCCDH_SECP192R1_SELF_TEST_19
573
/*** Tests for ECCCDH/SECP192R1 ***/
574
static const u8 ecccdh_SECP192R1_19_test_vector_our_priv_key[] = {
575
0x94, 0xca, 0xc2, 0xc2, 0xca, 0x71, 0x47, 0x46, 0x40, 0x16, 0x70, 0xd9, 0x4e, 0xdb, 0xf3, 0xf6, 0x77, 0x86, 0x7b, 0x5a, 0x03, 0xbe, 0xe7, 0xad,
576
};
577
static const u8 ecccdh_SECP192R1_19_test_vector_peer_pub_key[] = {
578
0x56, 0x3e, 0xb6, 0x6c, 0x33, 0x4c, 0xf6, 0xf1, 0x23, 0xbf, 0x04, 0xc7, 0x80, 0x3b, 0x48, 0xa3, 0x11, 0x02, 0x14, 0x23, 0x7e, 0x98, 0x3b, 0xf5, 0x0f, 0x35, 0x11, 0x04, 0x81, 0x91, 0x99, 0xef, 0x07, 0xc9, 0xa6, 0x05, 0x1d, 0x20, 0x75, 0x8f, 0x3a, 0xf7, 0x90, 0x27, 0xea, 0x66, 0xa5, 0x3f,
579
};
580
static const u8 ecccdh_SECP192R1_19_test_vector_our_pub_key[] = {
581
0xb1, 0x85, 0x54, 0xa2, 0xe7, 0x43, 0xef, 0x0a, 0xa2, 0xf0, 0x40, 0x98, 0x7c, 0x4c, 0x45, 0x10, 0x04, 0xe0, 0x96, 0xdf, 0x3d, 0x80, 0xdd, 0xae, 0x6e, 0x3e, 0x2c, 0x61, 0x8f, 0x89, 0x6e, 0x36, 0xba, 0x62, 0x00, 0x77, 0x68, 0x4b, 0x70, 0xa0, 0x5f, 0xfb, 0x79, 0xbf, 0x5e, 0x6c, 0x76, 0x40,
582
};
583
static const u8 ecccdh_SECP192R1_19_test_vector_shared_secret[] = {
584
0x21, 0x62, 0x14, 0x49, 0x21, 0xdf, 0x51, 0x03, 0xd0, 0xe6, 0xa6, 0x50, 0xfb, 0x13, 0xfd, 0x24, 0x6f, 0x47, 0x38, 0xd0, 0x89, 0x6c, 0xe9, 0x2f,
585
};
586
static const ecdh_test_case ecccdh_SECP192R1_19_test_case = {
587
.name = "ECCCDH/SECP192R1 19",
588
.ecdh_type = ECCCDH,
589
.ec_str_p = &secp192r1_str_params,
590
.our_priv_key = ecccdh_SECP192R1_19_test_vector_our_priv_key,
591
.our_priv_key_len = sizeof(ecccdh_SECP192R1_19_test_vector_our_priv_key),
592
.peer_pub_key = ecccdh_SECP192R1_19_test_vector_peer_pub_key,
593
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_19_test_vector_peer_pub_key),
594
.exp_our_pub_key = ecccdh_SECP192R1_19_test_vector_our_pub_key,
595
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_19_test_vector_our_pub_key),
596
.exp_shared_secret = ecccdh_SECP192R1_19_test_vector_shared_secret,
597
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_19_test_vector_shared_secret),
598
};
599
#endif /* WITH_CURVE_SECP192R1 */
600
601
#ifdef WITH_CURVE_SECP192R1
602
#define ECCCDH_SECP192R1_SELF_TEST_20
603
/*** Tests for ECCCDH/SECP192R1 ***/
604
static const u8 ecccdh_SECP192R1_20_test_vector_our_priv_key[] = {
605
0x2a, 0x3a, 0x9e, 0x33, 0xc8, 0xcc, 0x31, 0x07, 0xa9, 0xf9, 0x26, 0x5c, 0x3b, 0xde, 0xa1, 0x20, 0x65, 0x70, 0xe8, 0x6f, 0x92, 0xac, 0x70, 0x14,
606
};
607
static const u8 ecccdh_SECP192R1_20_test_vector_peer_pub_key[] = {
608
0x86, 0x82, 0x8c, 0x4a, 0xc9, 0x2b, 0x55, 0x07, 0x61, 0x8a, 0xec, 0x78, 0x73, 0xa1, 0xd4, 0xfc, 0x65, 0x43, 0xc5, 0xbe, 0x33, 0xcf, 0x30, 0x78, 0xb2, 0x2c, 0xa7, 0x24, 0x37, 0x54, 0x5e, 0x10, 0xd6, 0xd4, 0xf0, 0x52, 0x42, 0x2e, 0xb8, 0x98, 0xb7, 0x37, 0xa4, 0xb8, 0x54, 0x3e, 0xe5, 0x50,
609
};
610
static const u8 ecccdh_SECP192R1_20_test_vector_our_pub_key[] = {
611
0xa7, 0xba, 0x38, 0xbe, 0x1b, 0xc6, 0x69, 0xdd, 0x23, 0xcc, 0xfc, 0xee, 0x06, 0x45, 0xb1, 0xf0, 0xdb, 0x8c, 0xf9, 0x42, 0xde, 0xaf, 0xae, 0xb6, 0xb8, 0x2d, 0xb7, 0x9d, 0x80, 0xcd, 0x0e, 0x37, 0xf2, 0x8d, 0x41, 0x63, 0xad, 0xc3, 0x89, 0xde, 0xe8, 0xfc, 0x77, 0x97, 0xb5, 0xc9, 0x83, 0x1b,
612
};
613
static const u8 ecccdh_SECP192R1_20_test_vector_shared_secret[] = {
614
0x4c, 0x69, 0xe7, 0xfe, 0xed, 0x4b, 0x11, 0x15, 0x9a, 0xdf, 0xc1, 0x6a, 0x60, 0x47, 0xa9, 0x25, 0x72, 0xea, 0x44, 0xe0, 0x74, 0x0b, 0x23, 0xaf,
615
};
616
static const ecdh_test_case ecccdh_SECP192R1_20_test_case = {
617
.name = "ECCCDH/SECP192R1 20",
618
.ecdh_type = ECCCDH,
619
.ec_str_p = &secp192r1_str_params,
620
.our_priv_key = ecccdh_SECP192R1_20_test_vector_our_priv_key,
621
.our_priv_key_len = sizeof(ecccdh_SECP192R1_20_test_vector_our_priv_key),
622
.peer_pub_key = ecccdh_SECP192R1_20_test_vector_peer_pub_key,
623
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_20_test_vector_peer_pub_key),
624
.exp_our_pub_key = ecccdh_SECP192R1_20_test_vector_our_pub_key,
625
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_20_test_vector_our_pub_key),
626
.exp_shared_secret = ecccdh_SECP192R1_20_test_vector_shared_secret,
627
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_20_test_vector_shared_secret),
628
};
629
#endif /* WITH_CURVE_SECP192R1 */
630
631
#ifdef WITH_CURVE_SECP192R1
632
#define ECCCDH_SECP192R1_SELF_TEST_21
633
/*** Tests for ECCCDH/SECP192R1 ***/
634
static const u8 ecccdh_SECP192R1_21_test_vector_our_priv_key[] = {
635
0x4a, 0x6b, 0x78, 0xa9, 0x8a, 0xc9, 0x8f, 0xa8, 0xe9, 0x9a, 0x8e, 0xce, 0x08, 0xec, 0x02, 0x51, 0x12, 0x5f, 0x85, 0xc6, 0xfd, 0x0e, 0x28, 0x9b,
636
};
637
static const u8 ecccdh_SECP192R1_21_test_vector_peer_pub_key[] = {
638
0x67, 0x00, 0xa1, 0x02, 0x43, 0x77, 0x81, 0xa9, 0x58, 0x1d, 0xa2, 0xbc, 0x25, 0xce, 0xd5, 0xab, 0xf4, 0x19, 0xda, 0x91, 0xd3, 0xc8, 0x03, 0xdf, 0x71, 0x39, 0x6c, 0x9c, 0xf0, 0x8b, 0xcd, 0x91, 0x85, 0x4e, 0x3e, 0x6e, 0x42, 0xd8, 0xc6, 0x57, 0xce, 0x0f, 0x27, 0xab, 0x77, 0xa9, 0xdc, 0x4b,
639
};
640
static const u8 ecccdh_SECP192R1_21_test_vector_our_pub_key[] = {
641
0xe7, 0x69, 0xdb, 0xbc, 0xd5, 0xce, 0x2d, 0x83, 0x51, 0x4b, 0x76, 0x8d, 0x3d, 0x2d, 0x5a, 0xa0, 0xbc, 0xd8, 0xf6, 0x6a, 0xf1, 0x5f, 0x55, 0x00, 0x2f, 0xc6, 0xd0, 0xb0, 0x39, 0xe0, 0xf2, 0x8f, 0x74, 0xfb, 0xef, 0xfe, 0x9e, 0x88, 0x3d, 0x4d, 0xd7, 0x22, 0x96, 0xe4, 0xe9, 0x5c, 0xae, 0x71,
642
};
643
static const u8 ecccdh_SECP192R1_21_test_vector_shared_secret[] = {
644
0x46, 0x07, 0x2a, 0xce, 0xfd, 0x67, 0xbf, 0xf5, 0x0d, 0xe3, 0x55, 0xca, 0x7a, 0x31, 0xfa, 0x6b, 0xe5, 0x9f, 0x26, 0xe4, 0x67, 0x58, 0x72, 0x59,
645
};
646
static const ecdh_test_case ecccdh_SECP192R1_21_test_case = {
647
.name = "ECCCDH/SECP192R1 21",
648
.ecdh_type = ECCCDH,
649
.ec_str_p = &secp192r1_str_params,
650
.our_priv_key = ecccdh_SECP192R1_21_test_vector_our_priv_key,
651
.our_priv_key_len = sizeof(ecccdh_SECP192R1_21_test_vector_our_priv_key),
652
.peer_pub_key = ecccdh_SECP192R1_21_test_vector_peer_pub_key,
653
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_21_test_vector_peer_pub_key),
654
.exp_our_pub_key = ecccdh_SECP192R1_21_test_vector_our_pub_key,
655
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_21_test_vector_our_pub_key),
656
.exp_shared_secret = ecccdh_SECP192R1_21_test_vector_shared_secret,
657
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_21_test_vector_shared_secret),
658
};
659
#endif /* WITH_CURVE_SECP192R1 */
660
661
#ifdef WITH_CURVE_SECP192R1
662
#define ECCCDH_SECP192R1_SELF_TEST_22
663
/*** Tests for ECCCDH/SECP192R1 ***/
664
static const u8 ecccdh_SECP192R1_22_test_vector_our_priv_key[] = {
665
0xc5, 0xa6, 0x49, 0x1d, 0x78, 0x84, 0x4d, 0x66, 0x17, 0xef, 0x33, 0xbe, 0x6b, 0x8b, 0xd5, 0x4d, 0xa2, 0x21, 0x45, 0x08, 0x85, 0xd5, 0x95, 0x0f,
666
};
667
static const u8 ecccdh_SECP192R1_22_test_vector_peer_pub_key[] = {
668
0xa8, 0x2f, 0x35, 0x4c, 0xf9, 0x7b, 0xee, 0x5d, 0x22, 0xdc, 0x6c, 0x07, 0x9f, 0x29, 0x02, 0xea, 0xd4, 0x4d, 0x96, 0xa8, 0xf6, 0x14, 0xf1, 0x78, 0xa6, 0x54, 0xa9, 0xaa, 0x8a, 0x1a, 0x08, 0x02, 0xf2, 0xce, 0x0e, 0xe8, 0xa0, 0xf4, 0xeb, 0xe9, 0x6d, 0xee, 0x1b, 0x37, 0x46, 0x4b, 0x1f, 0xf2,
669
};
670
static const u8 ecccdh_SECP192R1_22_test_vector_our_pub_key[] = {
671
0xdb, 0x1b, 0x24, 0xf7, 0x46, 0x6b, 0xc1, 0x54, 0xe9, 0xd7, 0xd2, 0xc3, 0xca, 0x52, 0xdc, 0xfe, 0x0b, 0xfc, 0x95, 0x63, 0xc5, 0xfd, 0xb6, 0xf3, 0x1c, 0x74, 0xfb, 0xbf, 0x5b, 0xd9, 0x99, 0x21, 0xf1, 0xa9, 0xa7, 0x44, 0xf8, 0xe1, 0xcf, 0x77, 0x0b, 0xd6, 0xa7, 0x6a, 0x77, 0x2b, 0x30, 0x03,
672
};
673
static const u8 ecccdh_SECP192R1_22_test_vector_shared_secret[] = {
674
0xec, 0x55, 0x80, 0xea, 0xbc, 0xa9, 0xf3, 0x38, 0x9d, 0x2b, 0x42, 0x7d, 0xdf, 0x6e, 0x49, 0xe2, 0x6d, 0x62, 0x9a, 0xfd, 0x03, 0xfa, 0x76, 0x6e,
675
};
676
static const ecdh_test_case ecccdh_SECP192R1_22_test_case = {
677
.name = "ECCCDH/SECP192R1 22",
678
.ecdh_type = ECCCDH,
679
.ec_str_p = &secp192r1_str_params,
680
.our_priv_key = ecccdh_SECP192R1_22_test_vector_our_priv_key,
681
.our_priv_key_len = sizeof(ecccdh_SECP192R1_22_test_vector_our_priv_key),
682
.peer_pub_key = ecccdh_SECP192R1_22_test_vector_peer_pub_key,
683
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_22_test_vector_peer_pub_key),
684
.exp_our_pub_key = ecccdh_SECP192R1_22_test_vector_our_pub_key,
685
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_22_test_vector_our_pub_key),
686
.exp_shared_secret = ecccdh_SECP192R1_22_test_vector_shared_secret,
687
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_22_test_vector_shared_secret),
688
};
689
#endif /* WITH_CURVE_SECP192R1 */
690
691
#ifdef WITH_CURVE_SECP192R1
692
#define ECCCDH_SECP192R1_SELF_TEST_23
693
/*** Tests for ECCCDH/SECP192R1 ***/
694
static const u8 ecccdh_SECP192R1_23_test_vector_our_priv_key[] = {
695
0x2b, 0xa2, 0x70, 0x3c, 0x5e, 0x23, 0xf6, 0x46, 0x3c, 0x5b, 0x88, 0xdc, 0x37, 0x29, 0x2f, 0xab, 0xd3, 0x39, 0x9b, 0x5e, 0x1f, 0xb6, 0x7c, 0x05,
696
};
697
static const u8 ecccdh_SECP192R1_23_test_vector_peer_pub_key[] = {
698
0x3c, 0xec, 0x21, 0xb2, 0x86, 0x68, 0xa1, 0x2a, 0x2c, 0xf7, 0x8e, 0x1a, 0x8e, 0x55, 0xd0, 0xef, 0xe0, 0x65, 0x15, 0x2f, 0xff, 0xc3, 0x47, 0x18, 0x10, 0x29, 0x55, 0x7b, 0xeb, 0xa4, 0xff, 0x19, 0x92, 0xbd, 0x21, 0xc2, 0x3c, 0xb4, 0x82, 0x5f, 0x6d, 0xae, 0x70, 0xe3, 0x31, 0x8f, 0xd1, 0xca,
699
};
700
static const u8 ecccdh_SECP192R1_23_test_vector_our_pub_key[] = {
701
0x75, 0x43, 0x14, 0x89, 0x06, 0xce, 0xf9, 0xb3, 0x7a, 0x71, 0xa7, 0xc0, 0x83, 0x63, 0xcd, 0xd3, 0xbb, 0xa5, 0x01, 0x42, 0xd6, 0x52, 0x41, 0xaa, 0x8b, 0x3a, 0x69, 0x73, 0xde, 0x8d, 0xc2, 0x71, 0xe2, 0x7c, 0x1e, 0xad, 0x1e, 0x96, 0x2f, 0xda, 0xae, 0x37, 0x10, 0xc7, 0x24, 0xda, 0xac, 0x38,
702
};
703
static const u8 ecccdh_SECP192R1_23_test_vector_shared_secret[] = {
704
0x7f, 0x39, 0x29, 0xdd, 0x3c, 0xbf, 0x76, 0x73, 0xbc, 0x30, 0xd8, 0x59, 0xd9, 0x0b, 0x88, 0x03, 0x07, 0x47, 0x5f, 0x80, 0x06, 0x60, 0xea, 0x32,
705
};
706
static const ecdh_test_case ecccdh_SECP192R1_23_test_case = {
707
.name = "ECCCDH/SECP192R1 23",
708
.ecdh_type = ECCCDH,
709
.ec_str_p = &secp192r1_str_params,
710
.our_priv_key = ecccdh_SECP192R1_23_test_vector_our_priv_key,
711
.our_priv_key_len = sizeof(ecccdh_SECP192R1_23_test_vector_our_priv_key),
712
.peer_pub_key = ecccdh_SECP192R1_23_test_vector_peer_pub_key,
713
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_23_test_vector_peer_pub_key),
714
.exp_our_pub_key = ecccdh_SECP192R1_23_test_vector_our_pub_key,
715
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_23_test_vector_our_pub_key),
716
.exp_shared_secret = ecccdh_SECP192R1_23_test_vector_shared_secret,
717
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_23_test_vector_shared_secret),
718
};
719
#endif /* WITH_CURVE_SECP192R1 */
720
721
#ifdef WITH_CURVE_SECP192R1
722
#define ECCCDH_SECP192R1_SELF_TEST_24
723
/*** Tests for ECCCDH/SECP192R1 ***/
724
static const u8 ecccdh_SECP192R1_24_test_vector_our_priv_key[] = {
725
0x83, 0x61, 0x18, 0xc6, 0x24, 0x8f, 0x88, 0x2e, 0x91, 0x47, 0x97, 0x6f, 0x76, 0x48, 0x26, 0xc1, 0xa2, 0x87, 0x55, 0xa6, 0x10, 0x29, 0x77, 0xd5,
726
};
727
static const u8 ecccdh_SECP192R1_24_test_vector_peer_pub_key[] = {
728
0x70, 0x82, 0x64, 0x47, 0x15, 0xb8, 0xb7, 0x31, 0xf8, 0x22, 0x8b, 0x51, 0x18, 0xe7, 0x27, 0x0d, 0x34, 0xd1, 0x81, 0xf3, 0x61, 0xa2, 0x21, 0xfc, 0x46, 0x46, 0x49, 0xd6, 0xc8, 0x8c, 0xa8, 0x96, 0x14, 0x48, 0x8a, 0x1c, 0xc7, 0xb8, 0x44, 0x2b, 0xb4, 0x2f, 0x9f, 0xb3, 0x02, 0x0a, 0x3d, 0x76,
729
};
730
static const u8 ecccdh_SECP192R1_24_test_vector_our_pub_key[] = {
731
0xfc, 0xd3, 0x45, 0xa9, 0x76, 0xc7, 0x20, 0xca, 0xaa, 0x97, 0xde, 0x66, 0x97, 0x22, 0x68, 0x25, 0x61, 0x5e, 0x12, 0x87, 0xa9, 0xef, 0xf6, 0x7e, 0x58, 0xea, 0x42, 0xed, 0xbe, 0xea, 0xfc, 0xa9, 0xff, 0x44, 0xcf, 0xd7, 0xf2, 0x9a, 0xbd, 0x2c, 0xbd, 0xe7, 0x62, 0x6d, 0x79, 0xe4, 0x22, 0xc9,
732
};
733
static const u8 ecccdh_SECP192R1_24_test_vector_shared_secret[] = {
734
0x72, 0xe8, 0x8f, 0x3e, 0xa6, 0x7d, 0x46, 0xd4, 0x6d, 0xbf, 0x83, 0x92, 0x6e, 0x7e, 0x2a, 0x6b, 0x85, 0xb5, 0x45, 0x36, 0x74, 0x1e, 0x6d, 0x2c,
735
};
736
static const ecdh_test_case ecccdh_SECP192R1_24_test_case = {
737
.name = "ECCCDH/SECP192R1 24",
738
.ecdh_type = ECCCDH,
739
.ec_str_p = &secp192r1_str_params,
740
.our_priv_key = ecccdh_SECP192R1_24_test_vector_our_priv_key,
741
.our_priv_key_len = sizeof(ecccdh_SECP192R1_24_test_vector_our_priv_key),
742
.peer_pub_key = ecccdh_SECP192R1_24_test_vector_peer_pub_key,
743
.peer_pub_key_len = sizeof(ecccdh_SECP192R1_24_test_vector_peer_pub_key),
744
.exp_our_pub_key = ecccdh_SECP192R1_24_test_vector_our_pub_key,
745
.exp_our_pub_key_len = sizeof(ecccdh_SECP192R1_24_test_vector_our_pub_key),
746
.exp_shared_secret = ecccdh_SECP192R1_24_test_vector_shared_secret,
747
.exp_shared_secret_len = sizeof(ecccdh_SECP192R1_24_test_vector_shared_secret),
748
};
749
#endif /* WITH_CURVE_SECP192R1 */
750
751
#ifdef WITH_CURVE_SECP224R1
752
#define ECCCDH_SECP224R1_SELF_TEST_0
753
/*** Tests for ECCCDH/SECP224R1 ***/
754
static const u8 ecccdh_SECP224R1_0_test_vector_our_priv_key[] = {
755
0x83, 0x46, 0xa6, 0x0f, 0xc6, 0xf2, 0x93, 0xca, 0x5a, 0x0d, 0x2a, 0xf6, 0x8b, 0xa7, 0x1d, 0x1d, 0xd3, 0x89, 0xe5, 0xe4, 0x08, 0x37, 0x94, 0x2d, 0xf3, 0xe4, 0x3c, 0xbd,
756
};
757
static const u8 ecccdh_SECP224R1_0_test_vector_peer_pub_key[] = {
758
0xaf, 0x33, 0xcd, 0x06, 0x29, 0xbc, 0x7e, 0x99, 0x63, 0x20, 0xa3, 0xf4, 0x03, 0x68, 0xf7, 0x4d, 0xe8, 0x70, 0x4f, 0xa3, 0x7b, 0x8f, 0xab, 0x69, 0xab, 0xaa, 0xe2, 0x80, 0x88, 0x20, 0x92, 0xcc, 0xbb, 0xa7, 0x93, 0x0f, 0x41, 0x9a, 0x8a, 0x4f, 0x9b, 0xb1, 0x69, 0x78, 0xbb, 0xc3, 0x83, 0x87, 0x29, 0x99, 0x25, 0x59, 0xa6, 0xf2, 0xe2, 0xd7,
759
};
760
static const u8 ecccdh_SECP224R1_0_test_vector_our_pub_key[] = {
761
0x8d, 0xe2, 0xe2, 0x6a, 0xdf, 0x72, 0xc5, 0x82, 0xd6, 0x56, 0x8e, 0xf6, 0x38, 0xc4, 0xfd, 0x59, 0xb1, 0x8d, 0xa1, 0x71, 0xbd, 0xf5, 0x01, 0xf1, 0xd9, 0x29, 0xe0, 0x48, 0x4a, 0x68, 0xa1, 0xc2, 0xb0, 0xfb, 0x22, 0x93, 0x0d, 0x12, 0x05, 0x55, 0xc1, 0xec, 0xe5, 0x0e, 0xa9, 0x8d, 0xea, 0x84, 0x07, 0xf7, 0x1b, 0xe3, 0x6e, 0xfa, 0xc0, 0xde,
762
};
763
static const u8 ecccdh_SECP224R1_0_test_vector_shared_secret[] = {
764
0x7d, 0x96, 0xf9, 0xa3, 0xbd, 0x3c, 0x05, 0xcf, 0x5c, 0xc3, 0x7f, 0xeb, 0x8b, 0x9d, 0x52, 0x09, 0xd5, 0xc2, 0x59, 0x74, 0x64, 0xde, 0xc3, 0xe9, 0x98, 0x37, 0x43, 0xe8,
765
};
766
static const ecdh_test_case ecccdh_SECP224R1_0_test_case = {
767
.name = "ECCCDH/SECP224R1 0",
768
.ecdh_type = ECCCDH,
769
.ec_str_p = &secp224r1_str_params,
770
.our_priv_key = ecccdh_SECP224R1_0_test_vector_our_priv_key,
771
.our_priv_key_len = sizeof(ecccdh_SECP224R1_0_test_vector_our_priv_key),
772
.peer_pub_key = ecccdh_SECP224R1_0_test_vector_peer_pub_key,
773
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_0_test_vector_peer_pub_key),
774
.exp_our_pub_key = ecccdh_SECP224R1_0_test_vector_our_pub_key,
775
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_0_test_vector_our_pub_key),
776
.exp_shared_secret = ecccdh_SECP224R1_0_test_vector_shared_secret,
777
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_0_test_vector_shared_secret),
778
};
779
#endif /* WITH_CURVE_SECP224R1 */
780
781
#ifdef WITH_CURVE_SECP224R1
782
#define ECCCDH_SECP224R1_SELF_TEST_1
783
/*** Tests for ECCCDH/SECP224R1 ***/
784
static const u8 ecccdh_SECP224R1_1_test_vector_our_priv_key[] = {
785
0x04, 0x3c, 0xb2, 0x16, 0xf4, 0xb7, 0x2c, 0xdf, 0x76, 0x29, 0xd6, 0x37, 0x20, 0xa5, 0x4a, 0xee, 0x0c, 0x99, 0xeb, 0x32, 0xd7, 0x44, 0x77, 0xda, 0xc0, 0xc2, 0xf7, 0x3d,
786
};
787
static const u8 ecccdh_SECP224R1_1_test_vector_peer_pub_key[] = {
788
0x13, 0xbf, 0xcd, 0x4f, 0x8e, 0x94, 0x42, 0x39, 0x3c, 0xab, 0x8f, 0xb4, 0x6b, 0x9f, 0x05, 0x66, 0xc2, 0x26, 0xb2, 0x2b, 0x37, 0x07, 0x69, 0x76, 0xf0, 0x61, 0x7a, 0x46, 0xee, 0xb2, 0x42, 0x75, 0x29, 0xb2, 0x88, 0xc6, 0x3c, 0x2f, 0x89, 0x63, 0xc1, 0xe4, 0x73, 0xdf, 0x2f, 0xca, 0x6c, 0xaa, 0x90, 0xd5, 0x2e, 0x2f, 0x8d, 0xb5, 0x6d, 0xd4,
789
};
790
static const u8 ecccdh_SECP224R1_1_test_vector_our_pub_key[] = {
791
0x2f, 0x90, 0xf5, 0xc8, 0xea, 0xc9, 0xc7, 0xde, 0xcd, 0xbb, 0x97, 0xb6, 0xc2, 0xf7, 0x15, 0xab, 0x72, 0x5e, 0x4f, 0xe4, 0x0f, 0xe6, 0xd7, 0x46, 0xef, 0xbf, 0x4e, 0x1b, 0x66, 0x89, 0x73, 0x51, 0x45, 0x4f, 0x92, 0x7a, 0x30, 0x9b, 0x26, 0x9c, 0x5a, 0x6d, 0x31, 0x33, 0x8b, 0xe4, 0xc1, 0x9a, 0x5a, 0xcf, 0xc3, 0x2c, 0xf6, 0x56, 0xf4, 0x5c,
792
};
793
static const u8 ecccdh_SECP224R1_1_test_vector_shared_secret[] = {
794
0xee, 0x93, 0xce, 0x06, 0xb8, 0x9f, 0xf7, 0x20, 0x09, 0xe8, 0x58, 0xc6, 0x8e, 0xb7, 0x08, 0xe7, 0xbc, 0x79, 0xee, 0x03, 0x00, 0xf7, 0x3b, 0xed, 0x69, 0xbb, 0xca, 0x09,
795
};
796
static const ecdh_test_case ecccdh_SECP224R1_1_test_case = {
797
.name = "ECCCDH/SECP224R1 1",
798
.ecdh_type = ECCCDH,
799
.ec_str_p = &secp224r1_str_params,
800
.our_priv_key = ecccdh_SECP224R1_1_test_vector_our_priv_key,
801
.our_priv_key_len = sizeof(ecccdh_SECP224R1_1_test_vector_our_priv_key),
802
.peer_pub_key = ecccdh_SECP224R1_1_test_vector_peer_pub_key,
803
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_1_test_vector_peer_pub_key),
804
.exp_our_pub_key = ecccdh_SECP224R1_1_test_vector_our_pub_key,
805
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_1_test_vector_our_pub_key),
806
.exp_shared_secret = ecccdh_SECP224R1_1_test_vector_shared_secret,
807
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_1_test_vector_shared_secret),
808
};
809
#endif /* WITH_CURVE_SECP224R1 */
810
811
#ifdef WITH_CURVE_SECP224R1
812
#define ECCCDH_SECP224R1_SELF_TEST_2
813
/*** Tests for ECCCDH/SECP224R1 ***/
814
static const u8 ecccdh_SECP224R1_2_test_vector_our_priv_key[] = {
815
0x5a, 0xd0, 0xdd, 0x6d, 0xba, 0xbb, 0x4f, 0x3c, 0x2e, 0xa5, 0xfe, 0x32, 0xe5, 0x61, 0xb2, 0xca, 0x55, 0x08, 0x14, 0x86, 0xdf, 0x2c, 0x7c, 0x15, 0xc9, 0x62, 0x2b, 0x08,
816
};
817
static const u8 ecccdh_SECP224R1_2_test_vector_peer_pub_key[] = {
818
0x75, 0x6d, 0xd8, 0x06, 0xb9, 0xd9, 0xc3, 0x4d, 0x89, 0x96, 0x91, 0xec, 0xb4, 0x5b, 0x77, 0x1a, 0xf4, 0x68, 0xec, 0x00, 0x44, 0x86, 0xa0, 0xfd, 0xd2, 0x83, 0x41, 0x1e, 0x4d, 0x02, 0xc2, 0xca, 0x61, 0x7b, 0xb2, 0xc5, 0xd9, 0x61, 0x3f, 0x25, 0xdd, 0x72, 0x41, 0x3d, 0x22, 0x9f, 0xd2, 0x90, 0x15, 0x13, 0xaa, 0x29, 0x50, 0x4e, 0xee, 0xfb,
819
};
820
static const u8 ecccdh_SECP224R1_2_test_vector_our_pub_key[] = {
821
0x00, 0x5b, 0xca, 0x45, 0xd7, 0x93, 0xe7, 0xfe, 0x99, 0xa8, 0x43, 0x70, 0x4e, 0xd8, 0x38, 0x31, 0x5a, 0xb1, 0x4a, 0x5f, 0x62, 0x77, 0x50, 0x7e, 0x9b, 0xc3, 0x75, 0x31, 0x43, 0xe9, 0xd4, 0x21, 0xe1, 0x48, 0x6a, 0xe5, 0x89, 0x3b, 0xfd, 0x23, 0xc2, 0x10, 0xe5, 0xc1, 0x40, 0xd7, 0xc6, 0xb1, 0xad, 0xa5, 0x9d, 0x84, 0x2c, 0x9a, 0x98, 0xde,
822
};
823
static const u8 ecccdh_SECP224R1_2_test_vector_shared_secret[] = {
824
0x3f, 0xcc, 0x01, 0xe3, 0x4d, 0x44, 0x49, 0xda, 0x2a, 0x97, 0x4b, 0x23, 0xfc, 0x36, 0xf9, 0x56, 0x67, 0x54, 0x25, 0x9d, 0x39, 0x14, 0x97, 0x90, 0xcf, 0xa1, 0xeb, 0xd3,
825
};
826
static const ecdh_test_case ecccdh_SECP224R1_2_test_case = {
827
.name = "ECCCDH/SECP224R1 2",
828
.ecdh_type = ECCCDH,
829
.ec_str_p = &secp224r1_str_params,
830
.our_priv_key = ecccdh_SECP224R1_2_test_vector_our_priv_key,
831
.our_priv_key_len = sizeof(ecccdh_SECP224R1_2_test_vector_our_priv_key),
832
.peer_pub_key = ecccdh_SECP224R1_2_test_vector_peer_pub_key,
833
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_2_test_vector_peer_pub_key),
834
.exp_our_pub_key = ecccdh_SECP224R1_2_test_vector_our_pub_key,
835
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_2_test_vector_our_pub_key),
836
.exp_shared_secret = ecccdh_SECP224R1_2_test_vector_shared_secret,
837
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_2_test_vector_shared_secret),
838
};
839
#endif /* WITH_CURVE_SECP224R1 */
840
841
#ifdef WITH_CURVE_SECP224R1
842
#define ECCCDH_SECP224R1_SELF_TEST_3
843
/*** Tests for ECCCDH/SECP224R1 ***/
844
static const u8 ecccdh_SECP224R1_3_test_vector_our_priv_key[] = {
845
0x0a, 0xa6, 0xff, 0x55, 0xa5, 0xd8, 0x20, 0xef, 0xcb, 0x4e, 0x7d, 0x10, 0xb8, 0x45, 0xea, 0x3c, 0x9f, 0x9b, 0xc5, 0xdf, 0xf8, 0x61, 0x06, 0xdb, 0x85, 0x31, 0x8e, 0x22,
846
};
847
static const u8 ecccdh_SECP224R1_3_test_vector_peer_pub_key[] = {
848
0x0f, 0x53, 0x7b, 0xf1, 0xc1, 0x12, 0x2c, 0x55, 0x65, 0x6d, 0x25, 0xe8, 0xaa, 0x84, 0x17, 0xe0, 0xb4, 0x4b, 0x15, 0x26, 0xae, 0x05, 0x23, 0x14, 0x4f, 0x99, 0x21, 0xc4, 0xf7, 0x9b, 0x26, 0xd3, 0x0e, 0x49, 0x1a, 0x77, 0x36, 0x96, 0xcc, 0x2c, 0x79, 0xb4, 0xf0, 0x59, 0x6b, 0xc5, 0xb9, 0xee, 0xba, 0xf3, 0x94, 0xd1, 0x62, 0xfb, 0x86, 0x84,
849
};
850
static const u8 ecccdh_SECP224R1_3_test_vector_our_pub_key[] = {
851
0x2f, 0x96, 0x75, 0x41, 0x31, 0xe0, 0x96, 0x81, 0x98, 0xaa, 0x78, 0xfb, 0xe8, 0xc2, 0x01, 0xdc, 0x5f, 0x35, 0x81, 0xc7, 0x92, 0xde, 0x48, 0x73, 0x40, 0xd3, 0x24, 0x48, 0x61, 0xe8, 0xa5, 0xcd, 0x79, 0x61, 0x52, 0x03, 0xb6, 0xd8, 0x9e, 0x94, 0x96, 0xf9, 0xe2, 0x36, 0xfe, 0x3b, 0x6b, 0xe8, 0x73, 0x1e, 0x74, 0x3d, 0x61, 0x55, 0x19, 0xc6,
852
};
853
static const u8 ecccdh_SECP224R1_3_test_vector_shared_secret[] = {
854
0x49, 0x12, 0x96, 0x28, 0xb2, 0x3a, 0xfc, 0xef, 0x48, 0x13, 0x9a, 0x3f, 0x6f, 0x59, 0xff, 0x5e, 0x98, 0x11, 0xaa, 0x74, 0x6a, 0xa4, 0xff, 0x33, 0xc2, 0x4b, 0xb9, 0x40,
855
};
856
static const ecdh_test_case ecccdh_SECP224R1_3_test_case = {
857
.name = "ECCCDH/SECP224R1 3",
858
.ecdh_type = ECCCDH,
859
.ec_str_p = &secp224r1_str_params,
860
.our_priv_key = ecccdh_SECP224R1_3_test_vector_our_priv_key,
861
.our_priv_key_len = sizeof(ecccdh_SECP224R1_3_test_vector_our_priv_key),
862
.peer_pub_key = ecccdh_SECP224R1_3_test_vector_peer_pub_key,
863
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_3_test_vector_peer_pub_key),
864
.exp_our_pub_key = ecccdh_SECP224R1_3_test_vector_our_pub_key,
865
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_3_test_vector_our_pub_key),
866
.exp_shared_secret = ecccdh_SECP224R1_3_test_vector_shared_secret,
867
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_3_test_vector_shared_secret),
868
};
869
#endif /* WITH_CURVE_SECP224R1 */
870
871
#ifdef WITH_CURVE_SECP224R1
872
#define ECCCDH_SECP224R1_SELF_TEST_4
873
/*** Tests for ECCCDH/SECP224R1 ***/
874
static const u8 ecccdh_SECP224R1_4_test_vector_our_priv_key[] = {
875
0xef, 0xe6, 0xe6, 0xe2, 0x5a, 0xff, 0xaf, 0x54, 0xc9, 0x8d, 0x00, 0x2a, 0xbb, 0xc6, 0x32, 0x8d, 0xa1, 0x59, 0x40, 0x5a, 0x1b, 0x75, 0x2e, 0x32, 0xdc, 0x23, 0x95, 0x0a,
876
};
877
static const u8 ecccdh_SECP224R1_4_test_vector_peer_pub_key[] = {
878
0x2b, 0x36, 0x31, 0xd2, 0xb0, 0x61, 0x79, 0xb3, 0x17, 0x4a, 0x10, 0x0f, 0x7f, 0x57, 0x13, 0x1e, 0xee, 0xa8, 0x94, 0x7b, 0xe0, 0x78, 0x6c, 0x3d, 0xc6, 0x4b, 0x22, 0x39, 0x83, 0xde, 0x29, 0xae, 0x3d, 0xad, 0x31, 0xad, 0xc0, 0x23, 0x6c, 0x6d, 0xe7, 0xf1, 0x45, 0x61, 0xca, 0x2e, 0xa0, 0x83, 0xc5, 0x27, 0x0c, 0x78, 0xa2, 0xe6, 0xcb, 0xc0,
879
};
880
static const u8 ecccdh_SECP224R1_4_test_vector_our_pub_key[] = {
881
0x35, 0x5e, 0x96, 0x29, 0x20, 0xbd, 0xe0, 0x43, 0x69, 0x5f, 0x6b, 0xff, 0xb4, 0xb3, 0x55, 0xc6, 0x3d, 0xa6, 0xf5, 0xde, 0x66, 0x5e, 0xd4, 0x6f, 0x2e, 0xc8, 0x17, 0xe2, 0x74, 0x8e, 0x09, 0x53, 0x68, 0xf6, 0x2e, 0x1d, 0x36, 0x4e, 0xdd, 0x46, 0x17, 0x19, 0x79, 0x3b, 0x40, 0x4a, 0xdb, 0xda, 0xac, 0xbc, 0xad, 0xd8, 0x89, 0x22, 0xff, 0x37,
882
};
883
static const u8 ecccdh_SECP224R1_4_test_vector_shared_secret[] = {
884
0xfc, 0xdc, 0x69, 0xa4, 0x05, 0x01, 0xd3, 0x08, 0xa6, 0x83, 0x96, 0x53, 0xa8, 0xf0, 0x43, 0x09, 0xec, 0x00, 0x23, 0x39, 0x49, 0x52, 0x29, 0x02, 0xff, 0xa5, 0xea, 0xc6,
885
};
886
static const ecdh_test_case ecccdh_SECP224R1_4_test_case = {
887
.name = "ECCCDH/SECP224R1 4",
888
.ecdh_type = ECCCDH,
889
.ec_str_p = &secp224r1_str_params,
890
.our_priv_key = ecccdh_SECP224R1_4_test_vector_our_priv_key,
891
.our_priv_key_len = sizeof(ecccdh_SECP224R1_4_test_vector_our_priv_key),
892
.peer_pub_key = ecccdh_SECP224R1_4_test_vector_peer_pub_key,
893
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_4_test_vector_peer_pub_key),
894
.exp_our_pub_key = ecccdh_SECP224R1_4_test_vector_our_pub_key,
895
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_4_test_vector_our_pub_key),
896
.exp_shared_secret = ecccdh_SECP224R1_4_test_vector_shared_secret,
897
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_4_test_vector_shared_secret),
898
};
899
#endif /* WITH_CURVE_SECP224R1 */
900
901
#ifdef WITH_CURVE_SECP224R1
902
#define ECCCDH_SECP224R1_SELF_TEST_5
903
/*** Tests for ECCCDH/SECP224R1 ***/
904
static const u8 ecccdh_SECP224R1_5_test_vector_our_priv_key[] = {
905
0x61, 0xcb, 0x29, 0x32, 0x52, 0x40, 0x01, 0xe5, 0xe9, 0xee, 0xed, 0x6d, 0xf7, 0xd9, 0xc8, 0x93, 0x5e, 0xe3, 0x32, 0x20, 0x29, 0xed, 0xd7, 0xaa, 0x8a, 0xcb, 0xfd, 0x51,
906
};
907
static const u8 ecccdh_SECP224R1_5_test_vector_peer_pub_key[] = {
908
0x45, 0x11, 0x40, 0x3d, 0xe2, 0x90, 0x59, 0xf6, 0x9a, 0x47, 0x5c, 0x5a, 0x6a, 0x5f, 0x6c, 0xab, 0xed, 0x5d, 0x9f, 0x01, 0x44, 0x36, 0xa8, 0xcb, 0x70, 0xa0, 0x23, 0x38, 0x7d, 0x2d, 0x1b, 0x62, 0xaa, 0x04, 0x6d, 0xf9, 0x34, 0x0f, 0x9c, 0x37, 0xa0, 0x87, 0xa0, 0x6b, 0x32, 0xcf, 0x7f, 0x08, 0xa2, 0x23, 0xf9, 0x92, 0x81, 0x2a, 0x82, 0x8b,
909
};
910
static const u8 ecccdh_SECP224R1_5_test_vector_our_pub_key[] = {
911
0xd5, 0x0e, 0x4a, 0xda, 0xbf, 0xd9, 0x89, 0xd7, 0xdb, 0xc7, 0xcf, 0x40, 0x52, 0x54, 0x6c, 0xc7, 0xc4, 0x47, 0xa9, 0x76, 0x30, 0x43, 0x69, 0x97, 0xad, 0x4b, 0x95, 0x36, 0x5b, 0xea, 0x50, 0x34, 0x73, 0xc5, 0xea, 0xef, 0x95, 0x52, 0xd4, 0x2c, 0x40, 0xb1, 0xf2, 0xf7, 0xca, 0x29, 0x27, 0x33, 0xb2, 0x55, 0xb9, 0xbb, 0xe1, 0xb1, 0x23, 0x37,
912
};
913
static const u8 ecccdh_SECP224R1_5_test_vector_shared_secret[] = {
914
0x82, 0x7e, 0x90, 0x25, 0xcb, 0x62, 0xe0, 0xe8, 0x37, 0xc5, 0x96, 0x06, 0x3f, 0x3b, 0x9b, 0x5a, 0x0f, 0x7a, 0xfd, 0x8d, 0x87, 0x83, 0x20, 0x00, 0x86, 0xd6, 0x1e, 0xc1,
915
};
916
static const ecdh_test_case ecccdh_SECP224R1_5_test_case = {
917
.name = "ECCCDH/SECP224R1 5",
918
.ecdh_type = ECCCDH,
919
.ec_str_p = &secp224r1_str_params,
920
.our_priv_key = ecccdh_SECP224R1_5_test_vector_our_priv_key,
921
.our_priv_key_len = sizeof(ecccdh_SECP224R1_5_test_vector_our_priv_key),
922
.peer_pub_key = ecccdh_SECP224R1_5_test_vector_peer_pub_key,
923
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_5_test_vector_peer_pub_key),
924
.exp_our_pub_key = ecccdh_SECP224R1_5_test_vector_our_pub_key,
925
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_5_test_vector_our_pub_key),
926
.exp_shared_secret = ecccdh_SECP224R1_5_test_vector_shared_secret,
927
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_5_test_vector_shared_secret),
928
};
929
#endif /* WITH_CURVE_SECP224R1 */
930
931
#ifdef WITH_CURVE_SECP224R1
932
#define ECCCDH_SECP224R1_SELF_TEST_6
933
/*** Tests for ECCCDH/SECP224R1 ***/
934
static const u8 ecccdh_SECP224R1_6_test_vector_our_priv_key[] = {
935
0x8c, 0x7a, 0xce, 0x34, 0x71, 0x71, 0xf9, 0x2d, 0xef, 0x98, 0xd8, 0x45, 0x47, 0x5f, 0xc8, 0x2e, 0x1d, 0x14, 0x96, 0xda, 0x81, 0xee, 0x58, 0xf5, 0x05, 0xb9, 0x85, 0xfa,
936
};
937
static const u8 ecccdh_SECP224R1_6_test_vector_peer_pub_key[] = {
938
0x31, 0x4a, 0x0b, 0x26, 0xdd, 0x31, 0xc2, 0x48, 0x84, 0x5d, 0x7c, 0xc1, 0x7b, 0x61, 0xca, 0xd4, 0x60, 0x82, 0x59, 0xbe, 0xd8, 0x5a, 0x58, 0xd1, 0xf1, 0xff, 0xd3, 0x78, 0x66, 0xe4, 0xb3, 0x50, 0x35, 0x2e, 0x11, 0x9e, 0xec, 0xad, 0xa3, 0x82, 0x90, 0x7f, 0x36, 0x19, 0xfd, 0x74, 0x8e, 0xa7, 0x3a, 0xe4, 0x89, 0x9d, 0xfd, 0x49, 0x63, 0x02,
939
};
940
static const u8 ecccdh_SECP224R1_6_test_vector_our_pub_key[] = {
941
0xb1, 0xa8, 0xdc, 0xac, 0x89, 0xac, 0xa2, 0x79, 0x93, 0x20, 0xb4, 0x51, 0xdf, 0x1c, 0x7f, 0xf4, 0xd9, 0x75, 0x67, 0xab, 0xb6, 0x81, 0x41, 0xc0, 0xd9, 0x5f, 0xc2, 0xaa, 0x35, 0x24, 0x95, 0x09, 0x02, 0xb1, 0x51, 0x0b, 0xdc, 0x98, 0x7d, 0x86, 0x0a, 0xfc, 0x27, 0xad, 0x87, 0x1c, 0xea, 0xea, 0x66, 0x93, 0x5a, 0xbd, 0x3c, 0x0a, 0x99, 0xa8,
942
};
943
static const u8 ecccdh_SECP224R1_6_test_vector_shared_secret[] = {
944
0x33, 0x5b, 0xa5, 0x12, 0x28, 0xd9, 0x4a, 0xcb, 0xed, 0x85, 0x1c, 0xa7, 0x82, 0x1c, 0x80, 0x1d, 0x5c, 0xb1, 0xc7, 0x97, 0x5d, 0x7a, 0xa9, 0x0a, 0x71, 0x59, 0xf8, 0xfa,
945
};
946
static const ecdh_test_case ecccdh_SECP224R1_6_test_case = {
947
.name = "ECCCDH/SECP224R1 6",
948
.ecdh_type = ECCCDH,
949
.ec_str_p = &secp224r1_str_params,
950
.our_priv_key = ecccdh_SECP224R1_6_test_vector_our_priv_key,
951
.our_priv_key_len = sizeof(ecccdh_SECP224R1_6_test_vector_our_priv_key),
952
.peer_pub_key = ecccdh_SECP224R1_6_test_vector_peer_pub_key,
953
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_6_test_vector_peer_pub_key),
954
.exp_our_pub_key = ecccdh_SECP224R1_6_test_vector_our_pub_key,
955
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_6_test_vector_our_pub_key),
956
.exp_shared_secret = ecccdh_SECP224R1_6_test_vector_shared_secret,
957
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_6_test_vector_shared_secret),
958
};
959
#endif /* WITH_CURVE_SECP224R1 */
960
961
#ifdef WITH_CURVE_SECP224R1
962
#define ECCCDH_SECP224R1_SELF_TEST_7
963
/*** Tests for ECCCDH/SECP224R1 ***/
964
static const u8 ecccdh_SECP224R1_7_test_vector_our_priv_key[] = {
965
0x38, 0x2f, 0xeb, 0x9b, 0x9b, 0xa1, 0x0f, 0x18, 0x9d, 0x99, 0xe7, 0x1a, 0x89, 0xcd, 0xfe, 0x44, 0xcb, 0x55, 0x4c, 0xec, 0x13, 0xa2, 0x12, 0x84, 0x09, 0x77, 0xfb, 0x68,
966
};
967
static const u8 ecccdh_SECP224R1_7_test_vector_peer_pub_key[] = {
968
0xab, 0xe6, 0x84, 0x3b, 0xee, 0xc2, 0xfd, 0x9e, 0x5f, 0xb6, 0x47, 0x30, 0xd0, 0xbe, 0x4d, 0x16, 0x54, 0x38, 0xce, 0x92, 0x2e, 0xd7, 0x5d, 0xd8, 0x0b, 0x46, 0x03, 0xe5, 0x6a, 0xfe, 0x86, 0x73, 0xa9, 0x6c, 0x4b, 0xa9, 0x90, 0x0a, 0xd8, 0x59, 0x95, 0xe6, 0x31, 0xe4, 0x36, 0xc6, 0xcc, 0x88, 0xa2, 0xc2, 0xb4, 0x7b, 0x7c, 0x48, 0x86, 0xb8,
969
};
970
static const u8 ecccdh_SECP224R1_7_test_vector_our_pub_key[] = {
971
0xab, 0xb6, 0xf1, 0xe3, 0x77, 0x3f, 0xf8, 0xfc, 0x73, 0xae, 0xa2, 0xa0, 0xb1, 0x07, 0x80, 0x9c, 0xe7, 0x0a, 0xdc, 0xef, 0xed, 0x6e, 0x41, 0xfc, 0x5c, 0xb4, 0x30, 0x45, 0xa9, 0x63, 0x89, 0x7a, 0xe9, 0x06, 0xc1, 0x0a, 0x05, 0x5e, 0xea, 0xdb, 0x97, 0xff, 0xdd, 0x6f, 0x74, 0x8d, 0x3e, 0x56, 0x21, 0xe5, 0xff, 0xf3, 0x04, 0xe4, 0x8b, 0xa7,
972
};
973
static const u8 ecccdh_SECP224R1_7_test_vector_shared_secret[] = {
974
0x8c, 0x2e, 0x62, 0x75, 0x94, 0x20, 0x6b, 0x34, 0xf7, 0x35, 0x6d, 0x34, 0x26, 0xeb, 0x3d, 0x79, 0xf5, 0x18, 0xef, 0x84, 0x3f, 0xbe, 0x94, 0x01, 0x4c, 0xce, 0xac, 0xe3,
975
};
976
static const ecdh_test_case ecccdh_SECP224R1_7_test_case = {
977
.name = "ECCCDH/SECP224R1 7",
978
.ecdh_type = ECCCDH,
979
.ec_str_p = &secp224r1_str_params,
980
.our_priv_key = ecccdh_SECP224R1_7_test_vector_our_priv_key,
981
.our_priv_key_len = sizeof(ecccdh_SECP224R1_7_test_vector_our_priv_key),
982
.peer_pub_key = ecccdh_SECP224R1_7_test_vector_peer_pub_key,
983
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_7_test_vector_peer_pub_key),
984
.exp_our_pub_key = ecccdh_SECP224R1_7_test_vector_our_pub_key,
985
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_7_test_vector_our_pub_key),
986
.exp_shared_secret = ecccdh_SECP224R1_7_test_vector_shared_secret,
987
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_7_test_vector_shared_secret),
988
};
989
#endif /* WITH_CURVE_SECP224R1 */
990
991
#ifdef WITH_CURVE_SECP224R1
992
#define ECCCDH_SECP224R1_SELF_TEST_8
993
/*** Tests for ECCCDH/SECP224R1 ***/
994
static const u8 ecccdh_SECP224R1_8_test_vector_our_priv_key[] = {
995
0xe0, 0xd6, 0x20, 0x35, 0x10, 0x1e, 0xf4, 0x87, 0xc4, 0x85, 0xc6, 0x0f, 0xb4, 0x50, 0x0e, 0xeb, 0xe6, 0xa3, 0x2e, 0xc6, 0x4d, 0xbe, 0x97, 0xdb, 0xe0, 0x23, 0x2c, 0x46,
996
};
997
static const u8 ecccdh_SECP224R1_8_test_vector_peer_pub_key[] = {
998
0x13, 0xcf, 0x9d, 0x6d, 0x2c, 0x9a, 0xae, 0x82, 0x74, 0xc2, 0x7d, 0x44, 0x6a, 0xfd, 0x0c, 0x88, 0x8f, 0xfd, 0xd5, 0x2a, 0xe2, 0x99, 0xa3, 0x59, 0x84, 0xd4, 0xf5, 0x27, 0xdc, 0xbe, 0xe7, 0x5b, 0x51, 0x57, 0x51, 0xf8, 0xee, 0x2a, 0xe3, 0x55, 0xe8, 0xaf, 0xd5, 0xde, 0x21, 0xc6, 0x2a, 0x93, 0x9a, 0x65, 0x07, 0xb5, 0x38, 0xcb, 0xc4, 0xaf,
999
};
1000
static const u8 ecccdh_SECP224R1_8_test_vector_our_pub_key[] = {
1001
0x88, 0x53, 0x77, 0x35, 0xe9, 0xb2, 0x3e, 0x3e, 0x0e, 0x07, 0x6f, 0x13, 0x5a, 0x82, 0xd3, 0x3f, 0x9b, 0xff, 0xb4, 0x65, 0xf3, 0xab, 0xce, 0x83, 0x22, 0xa6, 0x2a, 0x62, 0xb4, 0xc8, 0xc1, 0x23, 0x67, 0x31, 0x97, 0x87, 0x5c, 0x0b, 0xd1, 0x4e, 0xd0, 0x97, 0x60, 0x6d, 0x33, 0x0f, 0xba, 0x2b, 0x92, 0x00, 0xef, 0x65, 0xa4, 0x47, 0x64, 0xd3,
1002
};
1003
static const u8 ecccdh_SECP224R1_8_test_vector_shared_secret[] = {
1004
0x63, 0x2a, 0xbb, 0x66, 0x27, 0x28, 0xdb, 0xc9, 0x94, 0x50, 0x88, 0x73, 0xd5, 0xc5, 0x27, 0xca, 0x5e, 0xf9, 0x23, 0xc0, 0xd3, 0x1f, 0xa6, 0xc4, 0x7e, 0xf4, 0xc8, 0x25,
1005
};
1006
static const ecdh_test_case ecccdh_SECP224R1_8_test_case = {
1007
.name = "ECCCDH/SECP224R1 8",
1008
.ecdh_type = ECCCDH,
1009
.ec_str_p = &secp224r1_str_params,
1010
.our_priv_key = ecccdh_SECP224R1_8_test_vector_our_priv_key,
1011
.our_priv_key_len = sizeof(ecccdh_SECP224R1_8_test_vector_our_priv_key),
1012
.peer_pub_key = ecccdh_SECP224R1_8_test_vector_peer_pub_key,
1013
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_8_test_vector_peer_pub_key),
1014
.exp_our_pub_key = ecccdh_SECP224R1_8_test_vector_our_pub_key,
1015
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_8_test_vector_our_pub_key),
1016
.exp_shared_secret = ecccdh_SECP224R1_8_test_vector_shared_secret,
1017
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_8_test_vector_shared_secret),
1018
};
1019
#endif /* WITH_CURVE_SECP224R1 */
1020
1021
#ifdef WITH_CURVE_SECP224R1
1022
#define ECCCDH_SECP224R1_SELF_TEST_9
1023
/*** Tests for ECCCDH/SECP224R1 ***/
1024
static const u8 ecccdh_SECP224R1_9_test_vector_our_priv_key[] = {
1025
0xb9, 0x6a, 0xde, 0x5b, 0x73, 0xba, 0x72, 0xaa, 0x8b, 0x6e, 0x4d, 0x74, 0xd7, 0xbf, 0x9c, 0x58, 0xe9, 0x62, 0xff, 0x78, 0xeb, 0x54, 0x22, 0x87, 0xc7, 0xb4, 0x4b, 0xa2,
1026
};
1027
static const u8 ecccdh_SECP224R1_9_test_vector_peer_pub_key[] = {
1028
0x96, 0x5b, 0x63, 0x7c, 0x0d, 0xfb, 0xc0, 0xcf, 0x95, 0x40, 0x35, 0x68, 0x6d, 0x70, 0xf7, 0xec, 0x30, 0x92, 0x9e, 0x66, 0x4e, 0x52, 0x1d, 0xba, 0xa2, 0x28, 0x06, 0x59, 0x82, 0xa5, 0x8f, 0xf6, 0x1b, 0xc9, 0x00, 0x19, 0xbb, 0xcb, 0xb5, 0x87, 0x5d, 0x38, 0x63, 0xdb, 0x0b, 0xc2, 0xa1, 0xfa, 0x34, 0xb0, 0xad, 0x4d, 0xe1, 0xa8, 0x3f, 0x99,
1029
};
1030
static const u8 ecccdh_SECP224R1_9_test_vector_our_pub_key[] = {
1031
0x37, 0x68, 0x29, 0x26, 0xa5, 0x4f, 0x70, 0xa4, 0xc1, 0x74, 0x8f, 0x54, 0xd5, 0x0d, 0x5b, 0x00, 0x13, 0x8a, 0x05, 0x5f, 0x92, 0x4f, 0x2c, 0x65, 0xe5, 0xb0, 0xbb, 0xe4, 0x59, 0x6a, 0xfe, 0xfc, 0xdd, 0x64, 0x0d, 0x29, 0x63, 0x50, 0x15, 0xb8, 0x9b, 0xdd, 0xdd, 0x1f, 0x8c, 0x27, 0x23, 0x68, 0x6d, 0x33, 0x2e, 0x7a, 0x06, 0xca, 0x87, 0x99,
1032
};
1033
static const u8 ecccdh_SECP224R1_9_test_vector_shared_secret[] = {
1034
0x34, 0x64, 0x11, 0x41, 0xaa, 0xb0, 0x5e, 0xf5, 0x8b, 0xd3, 0x76, 0xd6, 0x09, 0x34, 0x59, 0x01, 0xfb, 0x8f, 0x63, 0x47, 0x7c, 0x6b, 0xe9, 0x09, 0x7f, 0x03, 0x7f, 0x1f,
1035
};
1036
static const ecdh_test_case ecccdh_SECP224R1_9_test_case = {
1037
.name = "ECCCDH/SECP224R1 9",
1038
.ecdh_type = ECCCDH,
1039
.ec_str_p = &secp224r1_str_params,
1040
.our_priv_key = ecccdh_SECP224R1_9_test_vector_our_priv_key,
1041
.our_priv_key_len = sizeof(ecccdh_SECP224R1_9_test_vector_our_priv_key),
1042
.peer_pub_key = ecccdh_SECP224R1_9_test_vector_peer_pub_key,
1043
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_9_test_vector_peer_pub_key),
1044
.exp_our_pub_key = ecccdh_SECP224R1_9_test_vector_our_pub_key,
1045
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_9_test_vector_our_pub_key),
1046
.exp_shared_secret = ecccdh_SECP224R1_9_test_vector_shared_secret,
1047
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_9_test_vector_shared_secret),
1048
};
1049
#endif /* WITH_CURVE_SECP224R1 */
1050
1051
#ifdef WITH_CURVE_SECP224R1
1052
#define ECCCDH_SECP224R1_SELF_TEST_10
1053
/*** Tests for ECCCDH/SECP224R1 ***/
1054
static const u8 ecccdh_SECP224R1_10_test_vector_our_priv_key[] = {
1055
0xa4, 0x0d, 0x7e, 0x12, 0x04, 0x9c, 0x71, 0xe6, 0x52, 0x2c, 0x7f, 0xf2, 0x38, 0x42, 0x24, 0x06, 0x1c, 0x3a, 0x45, 0x70, 0x58, 0xb3, 0x10, 0x55, 0x76, 0x55, 0xb8, 0x54,
1056
};
1057
static const u8 ecccdh_SECP224R1_10_test_vector_peer_pub_key[] = {
1058
0x73, 0xcc, 0x64, 0x53, 0x72, 0xca, 0x2e, 0x71, 0x63, 0x7c, 0xda, 0x94, 0x3d, 0x81, 0x48, 0xf3, 0x38, 0x2a, 0xb6, 0xdd, 0x0f, 0x2e, 0x1a, 0x49, 0xda, 0x94, 0xe1, 0x34, 0xdf, 0x5c, 0x35, 0x5c, 0x23, 0xe6, 0xe2, 0x32, 0xeb, 0xc3, 0xbe, 0xe2, 0xab, 0x18, 0x73, 0xee, 0x0d, 0x83, 0xe3, 0x38, 0x2f, 0x8e, 0x6f, 0xe6, 0x13, 0xf6, 0x34, 0x3c,
1059
};
1060
static const u8 ecccdh_SECP224R1_10_test_vector_our_pub_key[] = {
1061
0x39, 0x98, 0x01, 0x24, 0x3b, 0xfe, 0x0c, 0x2d, 0xa9, 0xb0, 0xa5, 0x3c, 0x8c, 0xa5, 0x7f, 0x2e, 0xee, 0x87, 0xaa, 0xa9, 0x4a, 0x8e, 0x4d, 0x5e, 0x02, 0x9f, 0x42, 0xca, 0xaa, 0x49, 0xe6, 0xd4, 0xb4, 0x7c, 0xee, 0x7a, 0x5c, 0x4a, 0xb7, 0x1d, 0x5a, 0x67, 0xda, 0x84, 0xe0, 0xb9, 0xb4, 0x25, 0xce, 0x3e, 0x70, 0xda, 0x68, 0xc8, 0x89, 0xe7,
1062
};
1063
static const u8 ecccdh_SECP224R1_10_test_vector_shared_secret[] = {
1064
0x4f, 0x74, 0xac, 0x85, 0x07, 0x50, 0x1a, 0x32, 0xbf, 0xc5, 0xa7, 0x8d, 0x82, 0x71, 0xc2, 0x00, 0xe8, 0x35, 0x96, 0x6e, 0x18, 0x7e, 0x8d, 0x00, 0x01, 0x1a, 0x8c, 0x75,
1065
};
1066
static const ecdh_test_case ecccdh_SECP224R1_10_test_case = {
1067
.name = "ECCCDH/SECP224R1 10",
1068
.ecdh_type = ECCCDH,
1069
.ec_str_p = &secp224r1_str_params,
1070
.our_priv_key = ecccdh_SECP224R1_10_test_vector_our_priv_key,
1071
.our_priv_key_len = sizeof(ecccdh_SECP224R1_10_test_vector_our_priv_key),
1072
.peer_pub_key = ecccdh_SECP224R1_10_test_vector_peer_pub_key,
1073
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_10_test_vector_peer_pub_key),
1074
.exp_our_pub_key = ecccdh_SECP224R1_10_test_vector_our_pub_key,
1075
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_10_test_vector_our_pub_key),
1076
.exp_shared_secret = ecccdh_SECP224R1_10_test_vector_shared_secret,
1077
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_10_test_vector_shared_secret),
1078
};
1079
#endif /* WITH_CURVE_SECP224R1 */
1080
1081
#ifdef WITH_CURVE_SECP224R1
1082
#define ECCCDH_SECP224R1_SELF_TEST_11
1083
/*** Tests for ECCCDH/SECP224R1 ***/
1084
static const u8 ecccdh_SECP224R1_11_test_vector_our_priv_key[] = {
1085
0xad, 0x25, 0x19, 0xbc, 0x72, 0x4d, 0x48, 0x4e, 0x02, 0xa6, 0x9f, 0x05, 0x14, 0x9b, 0xb0, 0x47, 0x71, 0x4b, 0xf0, 0xf5, 0x98, 0x6f, 0xac, 0x2e, 0x22, 0x2c, 0xd9, 0x46,
1086
};
1087
static const u8 ecccdh_SECP224R1_11_test_vector_peer_pub_key[] = {
1088
0x54, 0x65, 0x78, 0x21, 0x62, 0x50, 0x35, 0x4e, 0x44, 0x9e, 0x21, 0x54, 0x6d, 0xd1, 0x1c, 0xd1, 0xc5, 0x17, 0x42, 0x36, 0x73, 0x9a, 0xca, 0xd9, 0xce, 0x0f, 0x45, 0x12, 0xd2, 0xa2, 0x2f, 0xcd, 0x66, 0xd1, 0xab, 0xed, 0xc7, 0x67, 0x66, 0x83, 0x27, 0xc5, 0xcb, 0x9c, 0x59, 0x90, 0x43, 0x27, 0x62, 0x39, 0xcf, 0x3c, 0x85, 0x16, 0xaf, 0x24,
1089
};
1090
static const u8 ecccdh_SECP224R1_11_test_vector_our_pub_key[] = {
1091
0xdf, 0x9c, 0x1e, 0x0e, 0xf1, 0x5e, 0x53, 0xb9, 0xf6, 0x26, 0xe2, 0xbe, 0x1c, 0xbe, 0x89, 0x36, 0x39, 0xc0, 0x6f, 0x3e, 0x04, 0x39, 0xee, 0x95, 0xd7, 0xd4, 0xb1, 0xe3, 0x7a, 0x52, 0xa7, 0x38, 0x6a, 0xdd, 0xa2, 0x43, 0xef, 0xdf, 0x89, 0x41, 0x08, 0x5c, 0x84, 0xe3, 0x12, 0x39, 0xca, 0xb9, 0x2b, 0x80, 0x17, 0x33, 0x67, 0x48, 0x96, 0x5e,
1092
};
1093
static const u8 ecccdh_SECP224R1_11_test_vector_shared_secret[] = {
1094
0xad, 0x09, 0xc9, 0xae, 0x4d, 0x23, 0x24, 0xea, 0x81, 0xbb, 0x55, 0x5b, 0x20, 0x0d, 0x3c, 0x00, 0x3e, 0x22, 0xa6, 0x87, 0x0e, 0xe0, 0x3b, 0x52, 0xdf, 0x49, 0xe4, 0xde,
1095
};
1096
static const ecdh_test_case ecccdh_SECP224R1_11_test_case = {
1097
.name = "ECCCDH/SECP224R1 11",
1098
.ecdh_type = ECCCDH,
1099
.ec_str_p = &secp224r1_str_params,
1100
.our_priv_key = ecccdh_SECP224R1_11_test_vector_our_priv_key,
1101
.our_priv_key_len = sizeof(ecccdh_SECP224R1_11_test_vector_our_priv_key),
1102
.peer_pub_key = ecccdh_SECP224R1_11_test_vector_peer_pub_key,
1103
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_11_test_vector_peer_pub_key),
1104
.exp_our_pub_key = ecccdh_SECP224R1_11_test_vector_our_pub_key,
1105
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_11_test_vector_our_pub_key),
1106
.exp_shared_secret = ecccdh_SECP224R1_11_test_vector_shared_secret,
1107
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_11_test_vector_shared_secret),
1108
};
1109
#endif /* WITH_CURVE_SECP224R1 */
1110
1111
#ifdef WITH_CURVE_SECP224R1
1112
#define ECCCDH_SECP224R1_SELF_TEST_12
1113
/*** Tests for ECCCDH/SECP224R1 ***/
1114
static const u8 ecccdh_SECP224R1_12_test_vector_our_priv_key[] = {
1115
0x3d, 0x31, 0x2a, 0x9b, 0x9d, 0x8e, 0xd0, 0x91, 0x40, 0x90, 0x0b, 0xba, 0xc1, 0xe0, 0x95, 0x52, 0x7e, 0xbc, 0x9e, 0x3c, 0x64, 0x93, 0xbc, 0xf3, 0x66, 0x6e, 0x3a, 0x29,
1116
};
1117
static const u8 ecccdh_SECP224R1_12_test_vector_peer_pub_key[] = {
1118
0x1d, 0x46, 0xb1, 0xdc, 0x3a, 0x28, 0x12, 0x3c, 0xb5, 0x13, 0x46, 0xe6, 0x7b, 0xae, 0xc5, 0x64, 0x04, 0x86, 0x86, 0x78, 0xfa, 0xf7, 0xd0, 0xe8, 0xb2, 0xaf, 0xa2, 0x2a, 0x0e, 0xc9, 0xe6, 0x5e, 0xc9, 0x7e, 0x21, 0x83, 0x73, 0xe7, 0xfc, 0x11, 0x5c, 0x22, 0x74, 0xd5, 0xb8, 0x29, 0xa6, 0x0d, 0x93, 0xf7, 0x1e, 0x01, 0xd5, 0x81, 0x36, 0xc3,
1119
};
1120
static const u8 ecccdh_SECP224R1_12_test_vector_our_pub_key[] = {
1121
0xb4, 0xa0, 0x19, 0x8d, 0xc8, 0x81, 0x0e, 0x88, 0x44, 0x25, 0xb7, 0x50, 0x92, 0x8b, 0x0c, 0x96, 0x0c, 0x31, 0xf7, 0xa9, 0x96, 0x63, 0x40, 0x0b, 0x01, 0xa1, 0x79, 0xdf, 0x81, 0x2b, 0x60, 0x1b, 0xfc, 0x07, 0x38, 0x24, 0x2c, 0x6f, 0x86, 0xf8, 0x30, 0xf2, 0x7a, 0xcd, 0x63, 0x2c, 0xa6, 0x18, 0xa0, 0xb5, 0x28, 0x0c, 0x9d, 0x57, 0x69, 0xf7,
1122
};
1123
static const u8 ecccdh_SECP224R1_12_test_vector_shared_secret[] = {
1124
0xef, 0x02, 0x9c, 0x28, 0xc6, 0x80, 0x64, 0xb8, 0xab, 0xd2, 0x96, 0x5a, 0x38, 0xc4, 0x04, 0xfb, 0x5e, 0x94, 0x4a, 0xce, 0x57, 0xe8, 0x63, 0x8d, 0xab, 0xa9, 0xd3, 0xcd,
1125
};
1126
static const ecdh_test_case ecccdh_SECP224R1_12_test_case = {
1127
.name = "ECCCDH/SECP224R1 12",
1128
.ecdh_type = ECCCDH,
1129
.ec_str_p = &secp224r1_str_params,
1130
.our_priv_key = ecccdh_SECP224R1_12_test_vector_our_priv_key,
1131
.our_priv_key_len = sizeof(ecccdh_SECP224R1_12_test_vector_our_priv_key),
1132
.peer_pub_key = ecccdh_SECP224R1_12_test_vector_peer_pub_key,
1133
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_12_test_vector_peer_pub_key),
1134
.exp_our_pub_key = ecccdh_SECP224R1_12_test_vector_our_pub_key,
1135
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_12_test_vector_our_pub_key),
1136
.exp_shared_secret = ecccdh_SECP224R1_12_test_vector_shared_secret,
1137
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_12_test_vector_shared_secret),
1138
};
1139
#endif /* WITH_CURVE_SECP224R1 */
1140
1141
#ifdef WITH_CURVE_SECP224R1
1142
#define ECCCDH_SECP224R1_SELF_TEST_13
1143
/*** Tests for ECCCDH/SECP224R1 ***/
1144
static const u8 ecccdh_SECP224R1_13_test_vector_our_priv_key[] = {
1145
0x8c, 0xe0, 0x82, 0x2d, 0xc2, 0x4c, 0x15, 0x39, 0x95, 0x75, 0x5a, 0xc3, 0x50, 0x73, 0x7e, 0xf5, 0x06, 0x64, 0x1c, 0x7d, 0x75, 0x2b, 0x4f, 0x93, 0x00, 0xc6, 0x12, 0xed,
1146
};
1147
static const u8 ecccdh_SECP224R1_13_test_vector_peer_pub_key[] = {
1148
0x26, 0x6d, 0x03, 0x8c, 0xc7, 0xa4, 0xfe, 0x21, 0xf6, 0xc9, 0x76, 0x31, 0x8e, 0x82, 0x7b, 0x82, 0xbb, 0x5b, 0x8f, 0x74, 0x43, 0xa5, 0x52, 0x98, 0x13, 0x65, 0x06, 0xe0, 0xdf, 0x12, 0x3d, 0x98, 0xa7, 0xa2, 0x0b, 0xbd, 0xf3, 0x94, 0x3d, 0xf2, 0xe3, 0x56, 0x34, 0x22, 0xf8, 0xc0, 0xcf, 0x74, 0xd5, 0x3a, 0xaa, 0xbd, 0xd7, 0xc9, 0x73, 0xba,
1149
};
1150
static const u8 ecccdh_SECP224R1_13_test_vector_our_pub_key[] = {
1151
0x00, 0xdf, 0xc7, 0xec, 0x13, 0x76, 0x90, 0xcd, 0x6d, 0x12, 0xfd, 0xb2, 0xfd, 0x0b, 0x8c, 0x53, 0x14, 0x58, 0x21, 0x08, 0x76, 0x9c, 0x2b, 0x72, 0x2f, 0xfb, 0x39, 0x58, 0x5e, 0xef, 0x3d, 0xa4, 0xba, 0x45, 0x81, 0x27, 0x34, 0x6b, 0xb6, 0x40, 0x23, 0x86, 0x8b, 0xdd, 0xb7, 0x55, 0x8a, 0x2e, 0xcf, 0xc8, 0x13, 0x64, 0x5f, 0x4c, 0xe9, 0xfe,
1152
};
1153
static const u8 ecccdh_SECP224R1_13_test_vector_shared_secret[] = {
1154
0xf8, 0x3c, 0x16, 0x66, 0x1d, 0xfc, 0xba, 0xd0, 0x21, 0xcc, 0x3b, 0x5a, 0x5a, 0xf5, 0x1d, 0x9a, 0x18, 0xdb, 0x46, 0x53, 0x86, 0x6b, 0x3f, 0xf9, 0x07, 0x87, 0xce, 0x3e,
1155
};
1156
static const ecdh_test_case ecccdh_SECP224R1_13_test_case = {
1157
.name = "ECCCDH/SECP224R1 13",
1158
.ecdh_type = ECCCDH,
1159
.ec_str_p = &secp224r1_str_params,
1160
.our_priv_key = ecccdh_SECP224R1_13_test_vector_our_priv_key,
1161
.our_priv_key_len = sizeof(ecccdh_SECP224R1_13_test_vector_our_priv_key),
1162
.peer_pub_key = ecccdh_SECP224R1_13_test_vector_peer_pub_key,
1163
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_13_test_vector_peer_pub_key),
1164
.exp_our_pub_key = ecccdh_SECP224R1_13_test_vector_our_pub_key,
1165
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_13_test_vector_our_pub_key),
1166
.exp_shared_secret = ecccdh_SECP224R1_13_test_vector_shared_secret,
1167
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_13_test_vector_shared_secret),
1168
};
1169
#endif /* WITH_CURVE_SECP224R1 */
1170
1171
#ifdef WITH_CURVE_SECP224R1
1172
#define ECCCDH_SECP224R1_SELF_TEST_14
1173
/*** Tests for ECCCDH/SECP224R1 ***/
1174
static const u8 ecccdh_SECP224R1_14_test_vector_our_priv_key[] = {
1175
0x0f, 0xf9, 0xb4, 0x85, 0x32, 0x5a, 0xb7, 0x7f, 0x29, 0xe7, 0xbc, 0x37, 0x9f, 0xed, 0x74, 0xbf, 0xac, 0x85, 0x94, 0x82, 0xda, 0x0d, 0xee, 0x75, 0x28, 0xc1, 0x9d, 0xb2,
1176
};
1177
static const u8 ecccdh_SECP224R1_14_test_vector_peer_pub_key[] = {
1178
0xeb, 0x0a, 0x09, 0xf7, 0xa1, 0xc2, 0x36, 0xa6, 0x1f, 0x59, 0x58, 0x09, 0xec, 0x56, 0x70, 0xef, 0xd9, 0x2e, 0x45, 0x98, 0xd5, 0xe6, 0x13, 0xe0, 0x92, 0xcd, 0xfd, 0xca, 0x50, 0x78, 0x7a, 0xe2, 0xf2, 0xf1, 0x5b, 0x88, 0xbc, 0x10, 0xf7, 0xb5, 0xf0, 0xae, 0xe1, 0x41, 0x83, 0x73, 0xf1, 0x61, 0x53, 0xae, 0xbd, 0x1f, 0xba, 0x54, 0x28, 0x8d,
1179
};
1180
static const u8 ecccdh_SECP224R1_14_test_vector_our_pub_key[] = {
1181
0x7e, 0x60, 0x3e, 0x69, 0x76, 0xdb, 0x83, 0xc3, 0x60, 0x11, 0x50, 0x8f, 0xa6, 0x95, 0xd1, 0xb5, 0x15, 0x24, 0x9e, 0x2e, 0x54, 0xb4, 0x8f, 0xcb, 0xcf, 0xb9, 0x02, 0x47, 0x01, 0x79, 0xa6, 0x00, 0xce, 0x86, 0xad, 0xfc, 0xa9, 0xb1, 0xb9, 0x31, 0xfa, 0x51, 0x73, 0xd6, 0x18, 0xda, 0x09, 0xe8, 0x41, 0x80, 0x3d, 0x19, 0xb0, 0x26, 0x42, 0x86,
1182
};
1183
static const u8 ecccdh_SECP224R1_14_test_vector_shared_secret[] = {
1184
0xf5, 0x12, 0x58, 0xc6, 0x3f, 0x23, 0x2e, 0x55, 0xa6, 0x6a, 0xa2, 0x5e, 0xbd, 0x59, 0x7b, 0x20, 0x18, 0xd1, 0x05, 0x2c, 0x02, 0xee, 0xb6, 0x38, 0x66, 0x75, 0x80, 0x05,
1185
};
1186
static const ecdh_test_case ecccdh_SECP224R1_14_test_case = {
1187
.name = "ECCCDH/SECP224R1 14",
1188
.ecdh_type = ECCCDH,
1189
.ec_str_p = &secp224r1_str_params,
1190
.our_priv_key = ecccdh_SECP224R1_14_test_vector_our_priv_key,
1191
.our_priv_key_len = sizeof(ecccdh_SECP224R1_14_test_vector_our_priv_key),
1192
.peer_pub_key = ecccdh_SECP224R1_14_test_vector_peer_pub_key,
1193
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_14_test_vector_peer_pub_key),
1194
.exp_our_pub_key = ecccdh_SECP224R1_14_test_vector_our_pub_key,
1195
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_14_test_vector_our_pub_key),
1196
.exp_shared_secret = ecccdh_SECP224R1_14_test_vector_shared_secret,
1197
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_14_test_vector_shared_secret),
1198
};
1199
#endif /* WITH_CURVE_SECP224R1 */
1200
1201
#ifdef WITH_CURVE_SECP224R1
1202
#define ECCCDH_SECP224R1_SELF_TEST_15
1203
/*** Tests for ECCCDH/SECP224R1 ***/
1204
static const u8 ecccdh_SECP224R1_15_test_vector_our_priv_key[] = {
1205
0x19, 0xcf, 0x5f, 0xf6, 0x30, 0x64, 0x67, 0xf2, 0x8b, 0x9f, 0xe0, 0x67, 0x5a, 0x43, 0xc0, 0x58, 0x25, 0x52, 0xc8, 0xc1, 0x2e, 0x59, 0xce, 0x7c, 0x38, 0xf2, 0x92, 0xb1,
1206
};
1207
static const u8 ecccdh_SECP224R1_15_test_vector_peer_pub_key[] = {
1208
0x6b, 0x2f, 0x6b, 0x18, 0xa5, 0x87, 0xf5, 0x62, 0xff, 0xc6, 0x1b, 0xd9, 0xb0, 0x04, 0x73, 0x22, 0x28, 0x69, 0x86, 0xa7, 0x8f, 0x1f, 0xd1, 0x39, 0xb8, 0x4f, 0x7c, 0x24, 0x70, 0x96, 0x90, 0x8e, 0x46, 0x15, 0x26, 0x6b, 0xe5, 0x9a, 0x53, 0xcd, 0x65, 0x55, 0x15, 0x05, 0x6f, 0xf9, 0x23, 0x70, 0xa6, 0x27, 0x1a, 0x5d, 0x38, 0x23, 0xd7, 0x04,
1209
};
1210
static const u8 ecccdh_SECP224R1_15_test_vector_our_pub_key[] = {
1211
0xfc, 0x20, 0xe9, 0x06, 0xe6, 0x09, 0xc1, 0x12, 0xcf, 0xc2, 0xe0, 0xfe, 0xa6, 0x30, 0x38, 0x82, 0xc5, 0xdb, 0x94, 0xe8, 0x7e, 0x02, 0x23, 0x73, 0xab, 0x2c, 0x08, 0x2a, 0xae, 0xcd, 0xf1, 0xda, 0xa7, 0x17, 0x82, 0xbc, 0x5a, 0x26, 0xbb, 0xbd, 0x8d, 0x7e, 0x8a, 0x76, 0x49, 0x0e, 0x26, 0xab, 0xc1, 0x7d, 0xff, 0xc7, 0x74, 0xbd, 0x73, 0x41,
1212
};
1213
static const u8 ecccdh_SECP224R1_15_test_vector_shared_secret[] = {
1214
0x7f, 0xdc, 0x96, 0x9a, 0x18, 0x6f, 0xf1, 0x84, 0x29, 0xf2, 0xa2, 0x76, 0xda, 0xc4, 0x3b, 0xee, 0xa2, 0x11, 0x82, 0xd8, 0x2c, 0xe2, 0xe5, 0xa0, 0x87, 0x65, 0x52, 0xb1,
1215
};
1216
static const ecdh_test_case ecccdh_SECP224R1_15_test_case = {
1217
.name = "ECCCDH/SECP224R1 15",
1218
.ecdh_type = ECCCDH,
1219
.ec_str_p = &secp224r1_str_params,
1220
.our_priv_key = ecccdh_SECP224R1_15_test_vector_our_priv_key,
1221
.our_priv_key_len = sizeof(ecccdh_SECP224R1_15_test_vector_our_priv_key),
1222
.peer_pub_key = ecccdh_SECP224R1_15_test_vector_peer_pub_key,
1223
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_15_test_vector_peer_pub_key),
1224
.exp_our_pub_key = ecccdh_SECP224R1_15_test_vector_our_pub_key,
1225
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_15_test_vector_our_pub_key),
1226
.exp_shared_secret = ecccdh_SECP224R1_15_test_vector_shared_secret,
1227
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_15_test_vector_shared_secret),
1228
};
1229
#endif /* WITH_CURVE_SECP224R1 */
1230
1231
#ifdef WITH_CURVE_SECP224R1
1232
#define ECCCDH_SECP224R1_SELF_TEST_16
1233
/*** Tests for ECCCDH/SECP224R1 ***/
1234
static const u8 ecccdh_SECP224R1_16_test_vector_our_priv_key[] = {
1235
0x90, 0xa1, 0x53, 0x68, 0xe3, 0x53, 0x2c, 0x0b, 0x1e, 0x51, 0xe5, 0x5d, 0x13, 0x94, 0x47, 0xc2, 0xc8, 0x9b, 0xc1, 0x60, 0x71, 0x9d, 0x69, 0x72, 0x91, 0xea, 0x7c, 0x14,
1236
};
1237
static const u8 ecccdh_SECP224R1_16_test_vector_peer_pub_key[] = {
1238
0x32, 0x81, 0x01, 0xba, 0x82, 0x6a, 0xcd, 0x75, 0xff, 0x9f, 0x34, 0xd5, 0x57, 0x4c, 0xe0, 0xdb, 0xc9, 0x2f, 0x70, 0x9b, 0xad, 0x8d, 0x7a, 0x33, 0xc4, 0x79, 0x40, 0xc1, 0xdf, 0x39, 0xf1, 0xea, 0x88, 0x48, 0x8c, 0x55, 0xd5, 0x53, 0x81, 0x60, 0x87, 0x8b, 0x9c, 0xed, 0x18, 0xa8, 0x87, 0xea, 0x26, 0x1d, 0xd7, 0x12, 0xd1, 0x40, 0x24, 0xff,
1239
};
1240
static const u8 ecccdh_SECP224R1_16_test_vector_our_pub_key[] = {
1241
0xc6, 0x83, 0x7d, 0x50, 0x6e, 0x97, 0x6d, 0xa7, 0xdb, 0x3a, 0xd1, 0x26, 0x7c, 0x35, 0x9d, 0xff, 0x2e, 0xa6, 0xfb, 0x0b, 0x7f, 0x7f, 0x8e, 0x77, 0x02, 0x4c, 0x59, 0xe9, 0x67, 0xeb, 0x49, 0x1d, 0x2f, 0xc8, 0xa5, 0x30, 0xc4, 0x65, 0x25, 0xd2, 0xa8, 0xb2, 0xd7, 0xc1, 0xdf, 0x5f, 0xba, 0x1a, 0xe7, 0x40, 0xa4, 0x64, 0x9c, 0x68, 0x3e, 0xe6,
1242
};
1243
static const u8 ecccdh_SECP224R1_16_test_vector_shared_secret[] = {
1244
0x3d, 0x60, 0xab, 0x6d, 0xb2, 0xb3, 0xff, 0xe2, 0xd2, 0x9c, 0xcf, 0xf4, 0x6d, 0x05, 0x6e, 0x54, 0x23, 0x0c, 0xf3, 0x49, 0x82, 0xe2, 0x41, 0x55, 0x6e, 0xd2, 0x92, 0x0c,
1245
};
1246
static const ecdh_test_case ecccdh_SECP224R1_16_test_case = {
1247
.name = "ECCCDH/SECP224R1 16",
1248
.ecdh_type = ECCCDH,
1249
.ec_str_p = &secp224r1_str_params,
1250
.our_priv_key = ecccdh_SECP224R1_16_test_vector_our_priv_key,
1251
.our_priv_key_len = sizeof(ecccdh_SECP224R1_16_test_vector_our_priv_key),
1252
.peer_pub_key = ecccdh_SECP224R1_16_test_vector_peer_pub_key,
1253
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_16_test_vector_peer_pub_key),
1254
.exp_our_pub_key = ecccdh_SECP224R1_16_test_vector_our_pub_key,
1255
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_16_test_vector_our_pub_key),
1256
.exp_shared_secret = ecccdh_SECP224R1_16_test_vector_shared_secret,
1257
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_16_test_vector_shared_secret),
1258
};
1259
#endif /* WITH_CURVE_SECP224R1 */
1260
1261
#ifdef WITH_CURVE_SECP224R1
1262
#define ECCCDH_SECP224R1_SELF_TEST_17
1263
/*** Tests for ECCCDH/SECP224R1 ***/
1264
static const u8 ecccdh_SECP224R1_17_test_vector_our_priv_key[] = {
1265
0x8e, 0x08, 0x38, 0xe0, 0x5e, 0x17, 0x21, 0x49, 0x10, 0x67, 0xe1, 0xca, 0xbc, 0x2e, 0x80, 0x51, 0xb2, 0x90, 0xe2, 0x61, 0x6e, 0xec, 0x42, 0x7b, 0x71, 0x21, 0x89, 0x7d,
1266
};
1267
static const u8 ecccdh_SECP224R1_17_test_vector_peer_pub_key[] = {
1268
0x00, 0x81, 0xe3, 0x42, 0x70, 0x87, 0x1e, 0x2e, 0xbb, 0xd9, 0x41, 0x83, 0xf6, 0x17, 0xb4, 0xae, 0x15, 0xf0, 0x41, 0x6d, 0xd6, 0x34, 0xfe, 0x6e, 0x93, 0x4c, 0xf3, 0xc0, 0x3a, 0x1e, 0x9f, 0x38, 0xa7, 0xb9, 0x0b, 0x73, 0x17, 0xd2, 0x6b, 0x9f, 0x63, 0x11, 0x06, 0x3a, 0xb5, 0x8b, 0x26, 0x8c, 0xf4, 0x89, 0xb2, 0xe5, 0x03, 0x86, 0xd5, 0xd6,
1269
};
1270
static const u8 ecccdh_SECP224R1_17_test_vector_our_pub_key[] = {
1271
0xe9, 0x15, 0x0f, 0x77, 0x00, 0x75, 0x62, 0x60, 0x19, 0xe1, 0x8f, 0x95, 0x47, 0x3b, 0x71, 0xe6, 0x82, 0x80, 0x41, 0x79, 0x1d, 0x3f, 0x08, 0xd3, 0xfa, 0xee, 0xaa, 0x2b, 0x47, 0x5f, 0x70, 0x73, 0x5e, 0xaa, 0xe5, 0x23, 0x08, 0xa3, 0xb7, 0x63, 0xdc, 0x88, 0xef, 0xe1, 0x8a, 0xb5, 0x90, 0xeb, 0xaf, 0xa0, 0x35, 0xf6, 0xe0, 0x8b, 0x00, 0x1c,
1272
};
1273
static const u8 ecccdh_SECP224R1_17_test_vector_shared_secret[] = {
1274
0x91, 0x16, 0xd7, 0x27, 0x86, 0xf4, 0xdb, 0x5d, 0xf7, 0xa8, 0xb4, 0x30, 0x78, 0xc6, 0xab, 0x91, 0x60, 0xd4, 0x23, 0x51, 0x3d, 0x35, 0xea, 0x5e, 0x25, 0x59, 0x30, 0x6d,
1275
};
1276
static const ecdh_test_case ecccdh_SECP224R1_17_test_case = {
1277
.name = "ECCCDH/SECP224R1 17",
1278
.ecdh_type = ECCCDH,
1279
.ec_str_p = &secp224r1_str_params,
1280
.our_priv_key = ecccdh_SECP224R1_17_test_vector_our_priv_key,
1281
.our_priv_key_len = sizeof(ecccdh_SECP224R1_17_test_vector_our_priv_key),
1282
.peer_pub_key = ecccdh_SECP224R1_17_test_vector_peer_pub_key,
1283
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_17_test_vector_peer_pub_key),
1284
.exp_our_pub_key = ecccdh_SECP224R1_17_test_vector_our_pub_key,
1285
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_17_test_vector_our_pub_key),
1286
.exp_shared_secret = ecccdh_SECP224R1_17_test_vector_shared_secret,
1287
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_17_test_vector_shared_secret),
1288
};
1289
#endif /* WITH_CURVE_SECP224R1 */
1290
1291
#ifdef WITH_CURVE_SECP224R1
1292
#define ECCCDH_SECP224R1_SELF_TEST_18
1293
/*** Tests for ECCCDH/SECP224R1 ***/
1294
static const u8 ecccdh_SECP224R1_18_test_vector_our_priv_key[] = {
1295
0x38, 0x10, 0x6e, 0x93, 0xf1, 0x6a, 0x38, 0x1a, 0xdb, 0x1d, 0x72, 0xce, 0xe3, 0xda, 0x66, 0xae, 0x46, 0x2a, 0xd4, 0xbb, 0xfe, 0xa9, 0xec, 0xdf, 0x35, 0xd0, 0x81, 0x4e,
1296
};
1297
static const u8 ecccdh_SECP224R1_18_test_vector_peer_pub_key[] = {
1298
0x26, 0x23, 0x63, 0x2f, 0xdf, 0x0b, 0xd8, 0x56, 0x80, 0x5a, 0x69, 0xaa, 0x18, 0x6d, 0x41, 0x33, 0xef, 0x59, 0x04, 0xe1, 0xf6, 0x55, 0xa9, 0x72, 0xd6, 0x6c, 0xce, 0x07, 0x2c, 0xef, 0x97, 0x28, 0xdd, 0x06, 0xfb, 0x8b, 0x50, 0x15, 0x0f, 0x52, 0x9b, 0x69, 0x50, 0x76, 0xd4, 0x50, 0x79, 0x83, 0x91, 0x25, 0x85, 0xc8, 0x9b, 0xd0, 0x68, 0x2e,
1299
};
1300
static const u8 ecccdh_SECP224R1_18_test_vector_our_pub_key[] = {
1301
0x7b, 0xe6, 0xc4, 0xc9, 0x17, 0x82, 0x9a, 0xb6, 0x57, 0xdd, 0x79, 0xe8, 0x63, 0x7d, 0x7a, 0xef, 0xd2, 0xf8, 0x1f, 0x0d, 0xe7, 0x65, 0x4d, 0x95, 0x7e, 0x97, 0x65, 0x8d, 0x43, 0x0d, 0x22, 0xd9, 0xe8, 0x43, 0x83, 0x10, 0xf6, 0x1e, 0x0d, 0x43, 0xf2, 0x5f, 0xa3, 0xe3, 0x45, 0x85, 0xf4, 0x32, 0xba, 0xad, 0x27, 0xdb, 0x30, 0x21, 0xbf, 0x0d,
1302
};
1303
static const u8 ecccdh_SECP224R1_18_test_vector_shared_secret[] = {
1304
0x20, 0x7c, 0x53, 0xdc, 0xef, 0xac, 0x78, 0x9a, 0xaa, 0x02, 0x76, 0xd9, 0x20, 0x0b, 0x3a, 0x94, 0x0c, 0xe5, 0xf2, 0x29, 0x6f, 0x4c, 0xb2, 0xe8, 0x1a, 0x18, 0x5d, 0x3d,
1305
};
1306
static const ecdh_test_case ecccdh_SECP224R1_18_test_case = {
1307
.name = "ECCCDH/SECP224R1 18",
1308
.ecdh_type = ECCCDH,
1309
.ec_str_p = &secp224r1_str_params,
1310
.our_priv_key = ecccdh_SECP224R1_18_test_vector_our_priv_key,
1311
.our_priv_key_len = sizeof(ecccdh_SECP224R1_18_test_vector_our_priv_key),
1312
.peer_pub_key = ecccdh_SECP224R1_18_test_vector_peer_pub_key,
1313
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_18_test_vector_peer_pub_key),
1314
.exp_our_pub_key = ecccdh_SECP224R1_18_test_vector_our_pub_key,
1315
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_18_test_vector_our_pub_key),
1316
.exp_shared_secret = ecccdh_SECP224R1_18_test_vector_shared_secret,
1317
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_18_test_vector_shared_secret),
1318
};
1319
#endif /* WITH_CURVE_SECP224R1 */
1320
1321
#ifdef WITH_CURVE_SECP224R1
1322
#define ECCCDH_SECP224R1_SELF_TEST_19
1323
/*** Tests for ECCCDH/SECP224R1 ***/
1324
static const u8 ecccdh_SECP224R1_19_test_vector_our_priv_key[] = {
1325
0xe5, 0xd1, 0x71, 0x84, 0x31, 0xcf, 0x50, 0xf6, 0xcb, 0xd1, 0xbc, 0x80, 0x19, 0xfa, 0x16, 0x76, 0x2d, 0xfa, 0x12, 0xc9, 0x89, 0xe5, 0x99, 0x99, 0x77, 0xfb, 0x4e, 0xa2,
1326
};
1327
static const u8 ecccdh_SECP224R1_19_test_vector_peer_pub_key[] = {
1328
0x8e, 0xe4, 0xd1, 0xdc, 0xc3, 0x1d, 0xee, 0x4b, 0xf6, 0xfe, 0x21, 0xca, 0x8a, 0x58, 0x77, 0x21, 0xd9, 0x10, 0xac, 0xfb, 0x12, 0x2c, 0x16, 0xc2, 0xa7, 0x7a, 0x81, 0x52, 0x4e, 0xbf, 0x32, 0x3f, 0xff, 0x04, 0xeb, 0x47, 0x70, 0x69, 0xa0, 0xac, 0x68, 0xb3, 0x45, 0xf6, 0xb1, 0xae, 0x13, 0x4e, 0xfc, 0x31, 0x94, 0x0e, 0x51, 0x3c, 0xb9, 0x9f,
1329
};
1330
static const u8 ecccdh_SECP224R1_19_test_vector_our_pub_key[] = {
1331
0x2e, 0xa4, 0x96, 0x6e, 0x7f, 0x92, 0xed, 0x7f, 0x5c, 0xc6, 0x1f, 0xde, 0x79, 0x20, 0x45, 0xf6, 0x3b, 0x73, 0x1d, 0x6e, 0x7d, 0x0d, 0xe2, 0x57, 0x7f, 0x2d, 0x8e, 0xce, 0x1c, 0x4a, 0x7b, 0x1e, 0xde, 0x6f, 0x83, 0x91, 0x62, 0x29, 0x2d, 0xf4, 0x24, 0xbe, 0x78, 0xe8, 0x17, 0x6f, 0xb6, 0xf9, 0x42, 0xa3, 0xc0, 0x23, 0x91, 0x70, 0x0f, 0x31,
1332
};
1333
static const u8 ecccdh_SECP224R1_19_test_vector_shared_secret[] = {
1334
0x10, 0xe4, 0x67, 0xda, 0x34, 0xf4, 0x8a, 0xd7, 0x07, 0x20, 0x05, 0xbc, 0xcd, 0x6d, 0xa1, 0xb2, 0xba, 0x3f, 0x71, 0xea, 0xfa, 0x1c, 0x39, 0x38, 0x42, 0xf9, 0x1d, 0x74,
1335
};
1336
static const ecdh_test_case ecccdh_SECP224R1_19_test_case = {
1337
.name = "ECCCDH/SECP224R1 19",
1338
.ecdh_type = ECCCDH,
1339
.ec_str_p = &secp224r1_str_params,
1340
.our_priv_key = ecccdh_SECP224R1_19_test_vector_our_priv_key,
1341
.our_priv_key_len = sizeof(ecccdh_SECP224R1_19_test_vector_our_priv_key),
1342
.peer_pub_key = ecccdh_SECP224R1_19_test_vector_peer_pub_key,
1343
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_19_test_vector_peer_pub_key),
1344
.exp_our_pub_key = ecccdh_SECP224R1_19_test_vector_our_pub_key,
1345
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_19_test_vector_our_pub_key),
1346
.exp_shared_secret = ecccdh_SECP224R1_19_test_vector_shared_secret,
1347
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_19_test_vector_shared_secret),
1348
};
1349
#endif /* WITH_CURVE_SECP224R1 */
1350
1351
#ifdef WITH_CURVE_SECP224R1
1352
#define ECCCDH_SECP224R1_SELF_TEST_20
1353
/*** Tests for ECCCDH/SECP224R1 ***/
1354
static const u8 ecccdh_SECP224R1_20_test_vector_our_priv_key[] = {
1355
0x3d, 0x63, 0x56, 0x91, 0xb6, 0x2a, 0x9a, 0x92, 0x7c, 0x63, 0x39, 0x51, 0xc9, 0x36, 0x9c, 0x88, 0x62, 0xbd, 0x21, 0x19, 0xd3, 0x09, 0x70, 0xc2, 0x64, 0x47, 0x27, 0xd6,
1356
};
1357
static const u8 ecccdh_SECP224R1_20_test_vector_peer_pub_key[] = {
1358
0x97, 0xdc, 0xbe, 0x6d, 0x28, 0x33, 0x58, 0x82, 0xa6, 0xd1, 0x93, 0xcc, 0x54, 0xa1, 0x06, 0x3d, 0xd0, 0x77, 0x5d, 0xc3, 0x28, 0x56, 0x53, 0x00, 0xbb, 0x99, 0xe6, 0x91, 0xda, 0xd1, 0x1d, 0xd5, 0xec, 0xe8, 0xcf, 0xd9, 0xf9, 0x7c, 0x9a, 0x52, 0x6e, 0x4a, 0x15, 0x06, 0xe6, 0x35, 0x59, 0x69, 0xee, 0x87, 0x82, 0x6f, 0xc3, 0x8b, 0xcd, 0x24,
1359
};
1360
static const u8 ecccdh_SECP224R1_20_test_vector_our_pub_key[] = {
1361
0x43, 0x8b, 0xbb, 0x98, 0x05, 0x17, 0xaf, 0xb2, 0x0b, 0xe1, 0xd6, 0x74, 0xe3, 0xac, 0x2b, 0x31, 0xce, 0xf0, 0x7a, 0x9b, 0x23, 0xfb, 0x8f, 0x6e, 0x38, 0xe0, 0xd6, 0xc0, 0x0b, 0xe5, 0xf1, 0xc4, 0x7d, 0x58, 0xd2, 0x1b, 0x6e, 0xd2, 0x84, 0x23, 0xb3, 0x2f, 0x5a, 0x94, 0x75, 0x0d, 0xa4, 0x7e, 0xdc, 0xef, 0x33, 0xea, 0x79, 0x94, 0x2a, 0xfd,
1362
};
1363
static const u8 ecccdh_SECP224R1_20_test_vector_shared_secret[] = {
1364
0x82, 0xfd, 0x2f, 0x9c, 0x60, 0xc4, 0xf9, 0x99, 0xac, 0x00, 0xbb, 0xe6, 0x4b, 0xfc, 0x11, 0xda, 0x8f, 0xf8, 0xcd, 0xa2, 0xe4, 0x99, 0xfc, 0xed, 0x65, 0x23, 0x0b, 0xb1,
1365
};
1366
static const ecdh_test_case ecccdh_SECP224R1_20_test_case = {
1367
.name = "ECCCDH/SECP224R1 20",
1368
.ecdh_type = ECCCDH,
1369
.ec_str_p = &secp224r1_str_params,
1370
.our_priv_key = ecccdh_SECP224R1_20_test_vector_our_priv_key,
1371
.our_priv_key_len = sizeof(ecccdh_SECP224R1_20_test_vector_our_priv_key),
1372
.peer_pub_key = ecccdh_SECP224R1_20_test_vector_peer_pub_key,
1373
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_20_test_vector_peer_pub_key),
1374
.exp_our_pub_key = ecccdh_SECP224R1_20_test_vector_our_pub_key,
1375
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_20_test_vector_our_pub_key),
1376
.exp_shared_secret = ecccdh_SECP224R1_20_test_vector_shared_secret,
1377
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_20_test_vector_shared_secret),
1378
};
1379
#endif /* WITH_CURVE_SECP224R1 */
1380
1381
#ifdef WITH_CURVE_SECP224R1
1382
#define ECCCDH_SECP224R1_SELF_TEST_21
1383
/*** Tests for ECCCDH/SECP224R1 ***/
1384
static const u8 ecccdh_SECP224R1_21_test_vector_our_priv_key[] = {
1385
0xac, 0xf3, 0xc8, 0x5b, 0xbd, 0xc3, 0x79, 0xf0, 0x2f, 0x5e, 0xa3, 0x6e, 0x7f, 0x0f, 0x53, 0x09, 0x5a, 0x9e, 0x70, 0x46, 0xa2, 0x86, 0x85, 0xa8, 0x65, 0x9b, 0xf7, 0x98,
1386
};
1387
static const u8 ecccdh_SECP224R1_21_test_vector_peer_pub_key[] = {
1388
0xce, 0x91, 0x26, 0xdd, 0x53, 0x97, 0x2d, 0xea, 0x1d, 0xe1, 0xd1, 0x1e, 0xfe, 0xf9, 0x00, 0xde, 0x34, 0xb6, 0x61, 0x85, 0x9c, 0x46, 0x48, 0xc5, 0xc0, 0xe5, 0x34, 0xf7, 0xe1, 0x13, 0xb6, 0xf2, 0xc1, 0x65, 0x9d, 0x07, 0xf2, 0x71, 0x6e, 0x64, 0xa8, 0x3c, 0x18, 0xbb, 0xce, 0x34, 0x4d, 0xd2, 0x12, 0x1f, 0xe8, 0x51, 0x68, 0xea, 0xe0, 0x85,
1389
};
1390
static const u8 ecccdh_SECP224R1_21_test_vector_our_pub_key[] = {
1391
0xff, 0x75, 0x11, 0x21, 0x5c, 0x71, 0xd7, 0x96, 0xbd, 0x64, 0x6e, 0x84, 0x74, 0xbe, 0x44, 0x16, 0xb9, 0x16, 0x84, 0xce, 0x0d, 0x26, 0x9e, 0xf6, 0xf4, 0x22, 0x01, 0x3b, 0xb7, 0xbf, 0x5e, 0x79, 0xb5, 0xa9, 0x39, 0x3b, 0xb9, 0xea, 0x42, 0xc0, 0xbd, 0xb2, 0xd3, 0xc2, 0xdc, 0x80, 0x6e, 0x1a, 0x73, 0x06, 0xaa, 0x58, 0xe4, 0xfd, 0xbe, 0xa5,
1392
};
1393
static const u8 ecccdh_SECP224R1_21_test_vector_shared_secret[] = {
1394
0x53, 0x0f, 0x7e, 0x7f, 0xc9, 0x32, 0x61, 0x3b, 0x29, 0xc9, 0x81, 0xf2, 0x61, 0xcb, 0x03, 0x6c, 0xba, 0x3f, 0x1d, 0xf3, 0x86, 0x4e, 0x0e, 0x1c, 0xba, 0x26, 0x85, 0xa2,
1395
};
1396
static const ecdh_test_case ecccdh_SECP224R1_21_test_case = {
1397
.name = "ECCCDH/SECP224R1 21",
1398
.ecdh_type = ECCCDH,
1399
.ec_str_p = &secp224r1_str_params,
1400
.our_priv_key = ecccdh_SECP224R1_21_test_vector_our_priv_key,
1401
.our_priv_key_len = sizeof(ecccdh_SECP224R1_21_test_vector_our_priv_key),
1402
.peer_pub_key = ecccdh_SECP224R1_21_test_vector_peer_pub_key,
1403
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_21_test_vector_peer_pub_key),
1404
.exp_our_pub_key = ecccdh_SECP224R1_21_test_vector_our_pub_key,
1405
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_21_test_vector_our_pub_key),
1406
.exp_shared_secret = ecccdh_SECP224R1_21_test_vector_shared_secret,
1407
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_21_test_vector_shared_secret),
1408
};
1409
#endif /* WITH_CURVE_SECP224R1 */
1410
1411
#ifdef WITH_CURVE_SECP224R1
1412
#define ECCCDH_SECP224R1_SELF_TEST_22
1413
/*** Tests for ECCCDH/SECP224R1 ***/
1414
static const u8 ecccdh_SECP224R1_22_test_vector_our_priv_key[] = {
1415
0xcf, 0xfd, 0x62, 0xcb, 0x00, 0xa0, 0xe3, 0x16, 0x3f, 0xbf, 0x2c, 0x39, 0x7f, 0xad, 0xc9, 0x61, 0x82, 0x10, 0xf8, 0x6b, 0x4f, 0x54, 0xa6, 0x75, 0x28, 0x73, 0x05, 0xf0,
1416
};
1417
static const u8 ecccdh_SECP224R1_22_test_vector_peer_pub_key[] = {
1418
0x84, 0x41, 0x99, 0x67, 0xd6, 0xcf, 0xad, 0x41, 0xe7, 0x5a, 0x02, 0xb6, 0xda, 0x60, 0x5a, 0x97, 0x94, 0x9a, 0x18, 0x3a, 0x97, 0xc3, 0x06, 0xc4, 0xb4, 0x6e, 0x66, 0xa5, 0x5c, 0xc9, 0xb2, 0x59, 0x71, 0x8b, 0x1b, 0xc8, 0xb1, 0x44, 0xfd, 0xe6, 0x33, 0xa8, 0x94, 0x61, 0x6f, 0xfd, 0x59, 0xa3, 0xa6, 0xd5, 0xd8, 0xe9, 0x42, 0xc7, 0xcb, 0xb7,
1419
};
1420
static const u8 ecccdh_SECP224R1_22_test_vector_our_pub_key[] = {
1421
0x04, 0xbf, 0x4d, 0x94, 0x8f, 0x44, 0x30, 0xd1, 0x8b, 0x4e, 0xd6, 0xc9, 0x6d, 0xba, 0xf9, 0x81, 0xfa, 0x11, 0xa4, 0x03, 0xed, 0x16, 0x88, 0x7f, 0x06, 0x75, 0x49, 0x81, 0x7c, 0x13, 0x26, 0xa9, 0xce, 0xf5, 0x1f, 0x79, 0xd4, 0xe7, 0x83, 0x03, 0xd6, 0x06, 0x4b, 0x45, 0x9f, 0x61, 0x25, 0x84, 0xac, 0x2f, 0xdf, 0x59, 0x3d, 0x7d, 0x5d, 0x84,
1422
};
1423
static const u8 ecccdh_SECP224R1_22_test_vector_shared_secret[] = {
1424
0x49, 0xf6, 0xfd, 0x01, 0x39, 0x24, 0x8e, 0xf4, 0xdf, 0x2d, 0xb0, 0x5d, 0x13, 0x19, 0xbd, 0x5b, 0x14, 0x89, 0xe2, 0x49, 0x82, 0x7a, 0x45, 0xa8, 0xa5, 0xf1, 0x24, 0x27,
1425
};
1426
static const ecdh_test_case ecccdh_SECP224R1_22_test_case = {
1427
.name = "ECCCDH/SECP224R1 22",
1428
.ecdh_type = ECCCDH,
1429
.ec_str_p = &secp224r1_str_params,
1430
.our_priv_key = ecccdh_SECP224R1_22_test_vector_our_priv_key,
1431
.our_priv_key_len = sizeof(ecccdh_SECP224R1_22_test_vector_our_priv_key),
1432
.peer_pub_key = ecccdh_SECP224R1_22_test_vector_peer_pub_key,
1433
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_22_test_vector_peer_pub_key),
1434
.exp_our_pub_key = ecccdh_SECP224R1_22_test_vector_our_pub_key,
1435
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_22_test_vector_our_pub_key),
1436
.exp_shared_secret = ecccdh_SECP224R1_22_test_vector_shared_secret,
1437
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_22_test_vector_shared_secret),
1438
};
1439
#endif /* WITH_CURVE_SECP224R1 */
1440
1441
#ifdef WITH_CURVE_SECP224R1
1442
#define ECCCDH_SECP224R1_SELF_TEST_23
1443
/*** Tests for ECCCDH/SECP224R1 ***/
1444
static const u8 ecccdh_SECP224R1_23_test_vector_our_priv_key[] = {
1445
0x85, 0xf9, 0x03, 0xe4, 0x39, 0x43, 0xd1, 0x3c, 0x68, 0x93, 0x2e, 0x71, 0x0e, 0x80, 0xde, 0x52, 0xcb, 0xc0, 0xb8, 0xf1, 0xa1, 0x41, 0x8e, 0xa4, 0xda, 0x07, 0x92, 0x99,
1446
};
1447
static const u8 ecccdh_SECP224R1_23_test_vector_peer_pub_key[] = {
1448
0x7c, 0x9c, 0xac, 0x35, 0x76, 0x80, 0x63, 0xc2, 0x82, 0x7f, 0x60, 0xa7, 0xf5, 0x13, 0x88, 0xf2, 0xa8, 0xf4, 0xb7, 0xf8, 0xcd, 0x73, 0x6b, 0xd6, 0xbc, 0x33, 0x74, 0x77, 0x29, 0xee, 0x6b, 0x84, 0x9c, 0x60, 0x25, 0xd5, 0x77, 0xdb, 0xcc, 0x55, 0xfb, 0xd1, 0x70, 0x18, 0xf4, 0xed, 0xbc, 0x2e, 0xf1, 0x05, 0xb0, 0x04, 0xd6, 0x25, 0x7b, 0xcd,
1449
};
1450
static const u8 ecccdh_SECP224R1_23_test_vector_our_pub_key[] = {
1451
0x97, 0x0a, 0x4a, 0x7e, 0x01, 0xd4, 0x18, 0x84, 0x97, 0xce, 0xb4, 0x69, 0x55, 0xeb, 0x1b, 0x84, 0x2d, 0x90, 0x85, 0x81, 0x9a, 0x9b, 0x92, 0x5c, 0x84, 0x52, 0x9d, 0x3d, 0xdf, 0xa2, 0x52, 0x64, 0x80, 0xf8, 0x33, 0xea, 0x0e, 0xdb, 0xd2, 0x04, 0xe4, 0xe3, 0x65, 0xfe, 0xf3, 0x47, 0x28, 0x88, 0xfe, 0x7d, 0x96, 0x91, 0xc3, 0xeb, 0xc0, 0x9f,
1452
};
1453
static const u8 ecccdh_SECP224R1_23_test_vector_shared_secret[] = {
1454
0x8f, 0x7e, 0x34, 0xe5, 0x97, 0xae, 0x80, 0x93, 0xb9, 0x82, 0x70, 0xa7, 0x4a, 0x8d, 0xfc, 0xdb, 0xed, 0x45, 0x7f, 0x42, 0xf4, 0x3d, 0xf4, 0x87, 0xc5, 0x48, 0x71, 0x61,
1455
};
1456
static const ecdh_test_case ecccdh_SECP224R1_23_test_case = {
1457
.name = "ECCCDH/SECP224R1 23",
1458
.ecdh_type = ECCCDH,
1459
.ec_str_p = &secp224r1_str_params,
1460
.our_priv_key = ecccdh_SECP224R1_23_test_vector_our_priv_key,
1461
.our_priv_key_len = sizeof(ecccdh_SECP224R1_23_test_vector_our_priv_key),
1462
.peer_pub_key = ecccdh_SECP224R1_23_test_vector_peer_pub_key,
1463
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_23_test_vector_peer_pub_key),
1464
.exp_our_pub_key = ecccdh_SECP224R1_23_test_vector_our_pub_key,
1465
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_23_test_vector_our_pub_key),
1466
.exp_shared_secret = ecccdh_SECP224R1_23_test_vector_shared_secret,
1467
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_23_test_vector_shared_secret),
1468
};
1469
#endif /* WITH_CURVE_SECP224R1 */
1470
1471
#ifdef WITH_CURVE_SECP224R1
1472
#define ECCCDH_SECP224R1_SELF_TEST_24
1473
/*** Tests for ECCCDH/SECP224R1 ***/
1474
static const u8 ecccdh_SECP224R1_24_test_vector_our_priv_key[] = {
1475
0xcc, 0xe6, 0x48, 0x91, 0xa3, 0xd0, 0x12, 0x9f, 0xee, 0x0d, 0x4a, 0x96, 0xcf, 0xbe, 0x7a, 0xc4, 0x70, 0xb8, 0x5e, 0x96, 0x75, 0x29, 0x05, 0x7c, 0xfa, 0x31, 0xa1, 0xd9,
1476
};
1477
static const u8 ecccdh_SECP224R1_24_test_vector_peer_pub_key[] = {
1478
0x08, 0x5a, 0x76, 0x42, 0xad, 0x8e, 0x59, 0xb1, 0xa3, 0xe8, 0x72, 0x6a, 0x75, 0x47, 0xaf, 0xbe, 0xcf, 0xfd, 0xac, 0x1d, 0xab, 0x7e, 0x57, 0x23, 0x0c, 0x6a, 0x9d, 0xf4, 0xf9, 0x1c, 0x36, 0xd8, 0x81, 0xfe, 0x9b, 0x80, 0x47, 0xa3, 0x53, 0x07, 0x13, 0x55, 0x4a, 0x1a, 0xf4, 0xc2, 0x5c, 0x5a, 0x8e, 0x65, 0x4d, 0xcd, 0xcf, 0x68, 0x9f, 0x2e,
1479
};
1480
static const u8 ecccdh_SECP224R1_24_test_vector_our_pub_key[] = {
1481
0xa6, 0xb2, 0x96, 0x32, 0xdb, 0x94, 0xda, 0x21, 0x25, 0xdc, 0x1c, 0xf8, 0x0e, 0x03, 0x70, 0x26, 0x87, 0xb2, 0xac, 0xc1, 0x12, 0x20, 0x22, 0xfa, 0x21, 0x74, 0x76, 0x5a, 0x61, 0x72, 0x3e, 0xdd, 0x73, 0xe1, 0x0d, 0xae, 0xd7, 0x37, 0x75, 0x27, 0x8f, 0x19, 0x58, 0xba, 0x56, 0xf1, 0xfc, 0x9d, 0x08, 0x5e, 0xbc, 0x2b, 0x64, 0xc8, 0x4f, 0xe5,
1482
};
1483
static const u8 ecccdh_SECP224R1_24_test_vector_shared_secret[] = {
1484
0x71, 0x95, 0x4e, 0x22, 0x61, 0xe8, 0x51, 0x0b, 0xe1, 0xa0, 0x60, 0x73, 0x36, 0x71, 0xd2, 0xe9, 0xd0, 0xa2, 0xd0, 0x12, 0xeb, 0x4e, 0x09, 0x55, 0x6d, 0x69, 0x7d, 0x2a,
1485
};
1486
static const ecdh_test_case ecccdh_SECP224R1_24_test_case = {
1487
.name = "ECCCDH/SECP224R1 24",
1488
.ecdh_type = ECCCDH,
1489
.ec_str_p = &secp224r1_str_params,
1490
.our_priv_key = ecccdh_SECP224R1_24_test_vector_our_priv_key,
1491
.our_priv_key_len = sizeof(ecccdh_SECP224R1_24_test_vector_our_priv_key),
1492
.peer_pub_key = ecccdh_SECP224R1_24_test_vector_peer_pub_key,
1493
.peer_pub_key_len = sizeof(ecccdh_SECP224R1_24_test_vector_peer_pub_key),
1494
.exp_our_pub_key = ecccdh_SECP224R1_24_test_vector_our_pub_key,
1495
.exp_our_pub_key_len = sizeof(ecccdh_SECP224R1_24_test_vector_our_pub_key),
1496
.exp_shared_secret = ecccdh_SECP224R1_24_test_vector_shared_secret,
1497
.exp_shared_secret_len = sizeof(ecccdh_SECP224R1_24_test_vector_shared_secret),
1498
};
1499
#endif /* WITH_CURVE_SECP224R1 */
1500
1501
#ifdef WITH_CURVE_SECP256R1
1502
#define ECCCDH_SECP256R1_SELF_TEST_0
1503
/*** Tests for ECCCDH/SECP256R1 ***/
1504
static const u8 ecccdh_SECP256R1_0_test_vector_our_priv_key[] = {
1505
0x7d, 0x7d, 0xc5, 0xf7, 0x1e, 0xb2, 0x9d, 0xda, 0xf8, 0x0d, 0x62, 0x14, 0x63, 0x2e, 0xea, 0xe0, 0x3d, 0x90, 0x58, 0xaf, 0x1f, 0xb6, 0xd2, 0x2e, 0xd8, 0x0b, 0xad, 0xb6, 0x2b, 0xc1, 0xa5, 0x34,
1506
};
1507
static const u8 ecccdh_SECP256R1_0_test_vector_peer_pub_key[] = {
1508
0x70, 0x0c, 0x48, 0xf7, 0x7f, 0x56, 0x58, 0x4c, 0x5c, 0xc6, 0x32, 0xca, 0x65, 0x64, 0x0d, 0xb9, 0x1b, 0x6b, 0xac, 0xce, 0x3a, 0x4d, 0xf6, 0xb4, 0x2c, 0xe7, 0xcc, 0x83, 0x88, 0x33, 0xd2, 0x87, 0xdb, 0x71, 0xe5, 0x09, 0xe3, 0xfd, 0x9b, 0x06, 0x0d, 0xdb, 0x20, 0xba, 0x5c, 0x51, 0xdc, 0xc5, 0x94, 0x8d, 0x46, 0xfb, 0xf6, 0x40, 0xdf, 0xe0, 0x44, 0x17, 0x82, 0xca, 0xb8, 0x5f, 0xa4, 0xac,
1509
};
1510
static const u8 ecccdh_SECP256R1_0_test_vector_our_pub_key[] = {
1511
0xea, 0xd2, 0x18, 0x59, 0x01, 0x19, 0xe8, 0x87, 0x6b, 0x29, 0x14, 0x6f, 0xf8, 0x9c, 0xa6, 0x17, 0x70, 0xc4, 0xed, 0xbb, 0xf9, 0x7d, 0x38, 0xce, 0x38, 0x5e, 0xd2, 0x81, 0xd8, 0xa6, 0xb2, 0x30, 0x28, 0xaf, 0x61, 0x28, 0x1f, 0xd3, 0x5e, 0x2f, 0xa7, 0x00, 0x25, 0x23, 0xac, 0xc8, 0x5a, 0x42, 0x9c, 0xb0, 0x6e, 0xe6, 0x64, 0x83, 0x25, 0x38, 0x9f, 0x59, 0xed, 0xfc, 0xe1, 0x40, 0x51, 0x41,
1512
};
1513
static const u8 ecccdh_SECP256R1_0_test_vector_shared_secret[] = {
1514
0x46, 0xfc, 0x62, 0x10, 0x64, 0x20, 0xff, 0x01, 0x2e, 0x54, 0xa4, 0x34, 0xfb, 0xdd, 0x2d, 0x25, 0xcc, 0xc5, 0x85, 0x20, 0x60, 0x56, 0x1e, 0x68, 0x04, 0x0d, 0xd7, 0x77, 0x89, 0x97, 0xbd, 0x7b,
1515
};
1516
static const ecdh_test_case ecccdh_SECP256R1_0_test_case = {
1517
.name = "ECCCDH/SECP256R1 0",
1518
.ecdh_type = ECCCDH,
1519
.ec_str_p = &secp256r1_str_params,
1520
.our_priv_key = ecccdh_SECP256R1_0_test_vector_our_priv_key,
1521
.our_priv_key_len = sizeof(ecccdh_SECP256R1_0_test_vector_our_priv_key),
1522
.peer_pub_key = ecccdh_SECP256R1_0_test_vector_peer_pub_key,
1523
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_0_test_vector_peer_pub_key),
1524
.exp_our_pub_key = ecccdh_SECP256R1_0_test_vector_our_pub_key,
1525
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_0_test_vector_our_pub_key),
1526
.exp_shared_secret = ecccdh_SECP256R1_0_test_vector_shared_secret,
1527
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_0_test_vector_shared_secret),
1528
};
1529
#endif /* WITH_CURVE_SECP256R1 */
1530
1531
#ifdef WITH_CURVE_SECP256R1
1532
#define ECCCDH_SECP256R1_SELF_TEST_1
1533
/*** Tests for ECCCDH/SECP256R1 ***/
1534
static const u8 ecccdh_SECP256R1_1_test_vector_our_priv_key[] = {
1535
0x38, 0xf6, 0x5d, 0x6d, 0xce, 0x47, 0x67, 0x60, 0x44, 0xd5, 0x8c, 0xe5, 0x13, 0x95, 0x82, 0xd5, 0x68, 0xf6, 0x4b, 0xb1, 0x60, 0x98, 0xd1, 0x79, 0xdb, 0xab, 0x07, 0x74, 0x1d, 0xd5, 0xca, 0xf5,
1536
};
1537
static const u8 ecccdh_SECP256R1_1_test_vector_peer_pub_key[] = {
1538
0x80, 0x9f, 0x04, 0x28, 0x9c, 0x64, 0x34, 0x8c, 0x01, 0x51, 0x5e, 0xb0, 0x3d, 0x5c, 0xe7, 0xac, 0x1a, 0x8c, 0xb9, 0x49, 0x8f, 0x5c, 0xaa, 0x50, 0x19, 0x7e, 0x58, 0xd4, 0x3a, 0x86, 0xa7, 0xae, 0xb2, 0x9d, 0x84, 0xe8, 0x11, 0x19, 0x7f, 0x25, 0xeb, 0xa8, 0xf5, 0x19, 0x40, 0x92, 0xcb, 0x6f, 0xf4, 0x40, 0xe2, 0x6d, 0x44, 0x21, 0x01, 0x13, 0x72, 0x46, 0x1f, 0x57, 0x92, 0x71, 0xcd, 0xa3,
1539
};
1540
static const u8 ecccdh_SECP256R1_1_test_vector_our_pub_key[] = {
1541
0x11, 0x9f, 0x2f, 0x04, 0x79, 0x02, 0x78, 0x2a, 0xb0, 0xc9, 0xe2, 0x7a, 0x54, 0xaf, 0xf5, 0xeb, 0x9b, 0x96, 0x48, 0x29, 0xca, 0x99, 0xc0, 0x6b, 0x02, 0xdd, 0xba, 0x95, 0xb0, 0xa3, 0xf6, 0xd0, 0x8f, 0x52, 0xb7, 0x26, 0x66, 0x4c, 0xac, 0x36, 0x6f, 0xc9, 0x8a, 0xc7, 0xa0, 0x12, 0xb2, 0x68, 0x2c, 0xbd, 0x96, 0x2e, 0x5a, 0xcb, 0x54, 0x46, 0x71, 0xd4, 0x1b, 0x94, 0x45, 0x70, 0x4d, 0x1d,
1542
};
1543
static const u8 ecccdh_SECP256R1_1_test_vector_shared_secret[] = {
1544
0x05, 0x7d, 0x63, 0x60, 0x96, 0xcb, 0x80, 0xb6, 0x7a, 0x8c, 0x03, 0x8c, 0x89, 0x0e, 0x88, 0x7d, 0x1a, 0xdf, 0xa4, 0x19, 0x5e, 0x9b, 0x3c, 0xe2, 0x41, 0xc8, 0xa7, 0x78, 0xc5, 0x9c, 0xda, 0x67,
1545
};
1546
static const ecdh_test_case ecccdh_SECP256R1_1_test_case = {
1547
.name = "ECCCDH/SECP256R1 1",
1548
.ecdh_type = ECCCDH,
1549
.ec_str_p = &secp256r1_str_params,
1550
.our_priv_key = ecccdh_SECP256R1_1_test_vector_our_priv_key,
1551
.our_priv_key_len = sizeof(ecccdh_SECP256R1_1_test_vector_our_priv_key),
1552
.peer_pub_key = ecccdh_SECP256R1_1_test_vector_peer_pub_key,
1553
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_1_test_vector_peer_pub_key),
1554
.exp_our_pub_key = ecccdh_SECP256R1_1_test_vector_our_pub_key,
1555
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_1_test_vector_our_pub_key),
1556
.exp_shared_secret = ecccdh_SECP256R1_1_test_vector_shared_secret,
1557
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_1_test_vector_shared_secret),
1558
};
1559
#endif /* WITH_CURVE_SECP256R1 */
1560
1561
#ifdef WITH_CURVE_SECP256R1
1562
#define ECCCDH_SECP256R1_SELF_TEST_2
1563
/*** Tests for ECCCDH/SECP256R1 ***/
1564
static const u8 ecccdh_SECP256R1_2_test_vector_our_priv_key[] = {
1565
0x1a, 0xcc, 0xfa, 0xf1, 0xb9, 0x77, 0x12, 0xb8, 0x5a, 0x6f, 0x54, 0xb1, 0x48, 0x98, 0x5a, 0x1b, 0xdc, 0x4c, 0x9b, 0xec, 0x0b, 0xd2, 0x58, 0xca, 0xd4, 0xb3, 0xd6, 0x03, 0xf4, 0x9f, 0x32, 0xc8,
1566
};
1567
static const u8 ecccdh_SECP256R1_2_test_vector_peer_pub_key[] = {
1568
0xa2, 0x33, 0x9c, 0x12, 0xd4, 0xa0, 0x3c, 0x33, 0x54, 0x6d, 0xe5, 0x33, 0x26, 0x8b, 0x4a, 0xd6, 0x67, 0xde, 0xbf, 0x45, 0x8b, 0x46, 0x4d, 0x77, 0x44, 0x36, 0x36, 0x44, 0x0e, 0xe7, 0xfe, 0xc3, 0xef, 0x48, 0xa3, 0xab, 0x26, 0xe2, 0x02, 0x20, 0xbc, 0xda, 0x2c, 0x18, 0x51, 0x07, 0x68, 0x39, 0xda, 0xe8, 0x8e, 0xae, 0x96, 0x28, 0x69, 0xa4, 0x97, 0xbf, 0x73, 0xcb, 0x66, 0xfa, 0xf5, 0x36,
1569
};
1570
static const u8 ecccdh_SECP256R1_2_test_vector_our_pub_key[] = {
1571
0xd9, 0xf2, 0xb7, 0x9c, 0x17, 0x28, 0x45, 0xbf, 0xdb, 0x56, 0x0b, 0xbb, 0x01, 0x44, 0x7c, 0xa5, 0xec, 0xc0, 0x47, 0x0a, 0x09, 0x51, 0x3b, 0x61, 0x26, 0x90, 0x2c, 0x6b, 0x4f, 0x8d, 0x10, 0x51, 0xf8, 0x15, 0xef, 0x5e, 0xc3, 0x21, 0x28, 0xd3, 0x48, 0x78, 0x34, 0x76, 0x46, 0x78, 0x70, 0x2e, 0x64, 0xe1, 0x64, 0xff, 0x73, 0x15, 0x18, 0x5e, 0x23, 0xaf, 0xf5, 0xfa, 0xcd, 0x96, 0xd7, 0xbc,
1572
};
1573
static const u8 ecccdh_SECP256R1_2_test_vector_shared_secret[] = {
1574
0x2d, 0x45, 0x7b, 0x78, 0xb4, 0x61, 0x41, 0x32, 0x47, 0x76, 0x18, 0xa5, 0xb0, 0x77, 0x96, 0x5e, 0xc9, 0x07, 0x30, 0xa8, 0xc8, 0x1a, 0x1c, 0x75, 0xd6, 0xd4, 0xec, 0x68, 0x00, 0x5d, 0x67, 0xec,
1575
};
1576
static const ecdh_test_case ecccdh_SECP256R1_2_test_case = {
1577
.name = "ECCCDH/SECP256R1 2",
1578
.ecdh_type = ECCCDH,
1579
.ec_str_p = &secp256r1_str_params,
1580
.our_priv_key = ecccdh_SECP256R1_2_test_vector_our_priv_key,
1581
.our_priv_key_len = sizeof(ecccdh_SECP256R1_2_test_vector_our_priv_key),
1582
.peer_pub_key = ecccdh_SECP256R1_2_test_vector_peer_pub_key,
1583
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_2_test_vector_peer_pub_key),
1584
.exp_our_pub_key = ecccdh_SECP256R1_2_test_vector_our_pub_key,
1585
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_2_test_vector_our_pub_key),
1586
.exp_shared_secret = ecccdh_SECP256R1_2_test_vector_shared_secret,
1587
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_2_test_vector_shared_secret),
1588
};
1589
#endif /* WITH_CURVE_SECP256R1 */
1590
1591
#ifdef WITH_CURVE_SECP256R1
1592
#define ECCCDH_SECP256R1_SELF_TEST_3
1593
/*** Tests for ECCCDH/SECP256R1 ***/
1594
static const u8 ecccdh_SECP256R1_3_test_vector_our_priv_key[] = {
1595
0x20, 0x7c, 0x43, 0xa7, 0x9b, 0xfe, 0xe0, 0x3d, 0xb6, 0xf4, 0xb9, 0x44, 0xf5, 0x3d, 0x2f, 0xb7, 0x6c, 0xc4, 0x9e, 0xf1, 0xc9, 0xc4, 0xd3, 0x4d, 0x51, 0xb6, 0xc6, 0x5c, 0x4d, 0xb6, 0x93, 0x2d,
1596
};
1597
static const u8 ecccdh_SECP256R1_3_test_vector_peer_pub_key[] = {
1598
0xdf, 0x39, 0x89, 0xb9, 0xfa, 0x55, 0x49, 0x57, 0x19, 0xb3, 0xcf, 0x46, 0xdc, 0xcd, 0x28, 0xb5, 0x15, 0x3f, 0x78, 0x08, 0x19, 0x1d, 0xd5, 0x18, 0xef, 0xf0, 0xc3, 0xcf, 0xf2, 0xb7, 0x05, 0xed, 0x42, 0x22, 0x94, 0xff, 0x46, 0x00, 0x34, 0x29, 0xd7, 0x39, 0xa3, 0x32, 0x06, 0xc8, 0x75, 0x25, 0x52, 0xc8, 0xba, 0x54, 0xa2, 0x70, 0xde, 0xfc, 0x06, 0xe2, 0x21, 0xe0, 0xfe, 0xaf, 0x6a, 0xc4,
1599
};
1600
static const u8 ecccdh_SECP256R1_3_test_vector_our_pub_key[] = {
1601
0x24, 0x27, 0x7c, 0x33, 0xf4, 0x50, 0x46, 0x2d, 0xcb, 0x3d, 0x48, 0x01, 0xd5, 0x7b, 0x9c, 0xed, 0x05, 0x18, 0x8f, 0x16, 0xc2, 0x8e, 0xda, 0x87, 0x32, 0x58, 0x04, 0x8c, 0xd1, 0x60, 0x7e, 0x0d, 0xc4, 0x78, 0x97, 0x53, 0xe2, 0xb1, 0xf6, 0x3b, 0x32, 0xff, 0x01, 0x4e, 0xc4, 0x2c, 0xd6, 0xa6, 0x9f, 0xac, 0x81, 0xdf, 0xe6, 0xd0, 0xd6, 0xfd, 0x4a, 0xf3, 0x72, 0xae, 0x27, 0xc4, 0x6f, 0x88,
1602
};
1603
static const u8 ecccdh_SECP256R1_3_test_vector_shared_secret[] = {
1604
0x96, 0x44, 0x12, 0x59, 0x53, 0x4b, 0x80, 0xf6, 0xae, 0xe3, 0xd2, 0x87, 0xa6, 0xbb, 0x17, 0xb5, 0x09, 0x4d, 0xd4, 0x27, 0x7d, 0x9e, 0x29, 0x4f, 0x8f, 0xe7, 0x3e, 0x48, 0xbf, 0x2a, 0x00, 0x24,
1605
};
1606
static const ecdh_test_case ecccdh_SECP256R1_3_test_case = {
1607
.name = "ECCCDH/SECP256R1 3",
1608
.ecdh_type = ECCCDH,
1609
.ec_str_p = &secp256r1_str_params,
1610
.our_priv_key = ecccdh_SECP256R1_3_test_vector_our_priv_key,
1611
.our_priv_key_len = sizeof(ecccdh_SECP256R1_3_test_vector_our_priv_key),
1612
.peer_pub_key = ecccdh_SECP256R1_3_test_vector_peer_pub_key,
1613
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_3_test_vector_peer_pub_key),
1614
.exp_our_pub_key = ecccdh_SECP256R1_3_test_vector_our_pub_key,
1615
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_3_test_vector_our_pub_key),
1616
.exp_shared_secret = ecccdh_SECP256R1_3_test_vector_shared_secret,
1617
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_3_test_vector_shared_secret),
1618
};
1619
#endif /* WITH_CURVE_SECP256R1 */
1620
1621
#ifdef WITH_CURVE_SECP256R1
1622
#define ECCCDH_SECP256R1_SELF_TEST_4
1623
/*** Tests for ECCCDH/SECP256R1 ***/
1624
static const u8 ecccdh_SECP256R1_4_test_vector_our_priv_key[] = {
1625
0x59, 0x13, 0x7e, 0x38, 0x15, 0x23, 0x50, 0xb1, 0x95, 0xc9, 0x71, 0x8d, 0x39, 0x67, 0x3d, 0x51, 0x98, 0x38, 0x05, 0x5a, 0xd9, 0x08, 0xdd, 0x47, 0x57, 0x15, 0x2f, 0xd8, 0x25, 0x5c, 0x09, 0xbf,
1626
};
1627
static const u8 ecccdh_SECP256R1_4_test_vector_peer_pub_key[] = {
1628
0x41, 0x19, 0x2d, 0x28, 0x13, 0xe7, 0x95, 0x61, 0xe6, 0xa1, 0xd6, 0xf5, 0x3c, 0x8b, 0xc1, 0xa4, 0x33, 0xa1, 0x99, 0xc8, 0x35, 0xe1, 0x41, 0xb0, 0x5a, 0x74, 0xa9, 0x7b, 0x0f, 0xae, 0xb9, 0x22, 0x1a, 0xf9, 0x8c, 0xc4, 0x5e, 0x98, 0xa7, 0xe0, 0x41, 0xb0, 0x1c, 0xf3, 0x5f, 0x46, 0x2b, 0x75, 0x62, 0x28, 0x13, 0x51, 0xc8, 0xeb, 0xf3, 0xff, 0xa0, 0x2e, 0x33, 0xa0, 0x72, 0x2a, 0x13, 0x28,
1629
};
1630
static const u8 ecccdh_SECP256R1_4_test_vector_our_pub_key[] = {
1631
0xa8, 0xc5, 0xfd, 0xce, 0x8b, 0x62, 0xc5, 0xad, 0xa5, 0x98, 0xf1, 0x41, 0xad, 0xb3, 0xb2, 0x6c, 0xf2, 0x54, 0xc2, 0x80, 0xb2, 0x85, 0x7a, 0x63, 0xd2, 0xad, 0x78, 0x3a, 0x73, 0x11, 0x5f, 0x6b, 0x80, 0x6e, 0x1a, 0xaf, 0xec, 0x4a, 0xf8, 0x0a, 0x0d, 0x78, 0x6b, 0x3d, 0xe4, 0x53, 0x75, 0xb5, 0x17, 0xa7, 0xe5, 0xb5, 0x1f, 0xfb, 0x2c, 0x35, 0x65, 0x37, 0xc9, 0xe6, 0xef, 0x22, 0x7d, 0x4a,
1632
};
1633
static const u8 ecccdh_SECP256R1_4_test_vector_shared_secret[] = {
1634
0x19, 0xd4, 0x4c, 0x8d, 0x63, 0xe8, 0xe8, 0xdd, 0x12, 0xc2, 0x2a, 0x87, 0xb8, 0xcd, 0x4e, 0xce, 0x27, 0xac, 0xdd, 0xe0, 0x4d, 0xbf, 0x47, 0xf7, 0xf2, 0x75, 0x37, 0xa6, 0x99, 0x9a, 0x8e, 0x62,
1635
};
1636
static const ecdh_test_case ecccdh_SECP256R1_4_test_case = {
1637
.name = "ECCCDH/SECP256R1 4",
1638
.ecdh_type = ECCCDH,
1639
.ec_str_p = &secp256r1_str_params,
1640
.our_priv_key = ecccdh_SECP256R1_4_test_vector_our_priv_key,
1641
.our_priv_key_len = sizeof(ecccdh_SECP256R1_4_test_vector_our_priv_key),
1642
.peer_pub_key = ecccdh_SECP256R1_4_test_vector_peer_pub_key,
1643
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_4_test_vector_peer_pub_key),
1644
.exp_our_pub_key = ecccdh_SECP256R1_4_test_vector_our_pub_key,
1645
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_4_test_vector_our_pub_key),
1646
.exp_shared_secret = ecccdh_SECP256R1_4_test_vector_shared_secret,
1647
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_4_test_vector_shared_secret),
1648
};
1649
#endif /* WITH_CURVE_SECP256R1 */
1650
1651
#ifdef WITH_CURVE_SECP256R1
1652
#define ECCCDH_SECP256R1_SELF_TEST_5
1653
/*** Tests for ECCCDH/SECP256R1 ***/
1654
static const u8 ecccdh_SECP256R1_5_test_vector_our_priv_key[] = {
1655
0xf5, 0xf8, 0xe0, 0x17, 0x46, 0x10, 0xa6, 0x61, 0x27, 0x79, 0x79, 0xb5, 0x8c, 0xe5, 0xc9, 0x0f, 0xee, 0x6c, 0x9b, 0x3b, 0xb3, 0x46, 0xa9, 0x0a, 0x71, 0x96, 0x25, 0x5e, 0x40, 0xb1, 0x32, 0xef,
1656
};
1657
static const u8 ecccdh_SECP256R1_5_test_vector_peer_pub_key[] = {
1658
0x33, 0xe8, 0x20, 0x92, 0xa0, 0xf1, 0xfb, 0x38, 0xf5, 0x64, 0x9d, 0x58, 0x67, 0xfb, 0xa2, 0x8b, 0x50, 0x31, 0x72, 0xb7, 0x03, 0x55, 0x74, 0xbf, 0x8e, 0x5b, 0x71, 0x00, 0xa3, 0x05, 0x27, 0x92, 0xf2, 0xcf, 0x6b, 0x60, 0x1e, 0x0a, 0x05, 0x94, 0x5e, 0x33, 0x55, 0x50, 0xbf, 0x64, 0x8d, 0x78, 0x2f, 0x46, 0x18, 0x6c, 0x77, 0x2c, 0x0f, 0x20, 0xd3, 0xcd, 0x0d, 0x6b, 0x8c, 0xa1, 0x4b, 0x2f,
1659
};
1660
static const u8 ecccdh_SECP256R1_5_test_vector_our_pub_key[] = {
1661
0x7b, 0x86, 0x1d, 0xcd, 0x28, 0x44, 0xa5, 0xa8, 0x36, 0x3f, 0x6b, 0x8e, 0xf8, 0xd4, 0x93, 0x64, 0x0f, 0x55, 0x87, 0x92, 0x17, 0x18, 0x9d, 0x80, 0x32, 0x6a, 0xad, 0x94, 0x80, 0xdf, 0xc1, 0x49, 0xc4, 0x67, 0x5b, 0x45, 0xee, 0xb3, 0x06, 0x40, 0x5f, 0x6c, 0x33, 0xc3, 0x8b, 0xc6, 0x9e, 0xb2, 0xbd, 0xec, 0x9b, 0x75, 0xad, 0x5a, 0xf4, 0x70, 0x6a, 0xab, 0x84, 0x54, 0x3b, 0x9c, 0xc6, 0x3a,
1662
};
1663
static const u8 ecccdh_SECP256R1_5_test_vector_shared_secret[] = {
1664
0x66, 0x4e, 0x45, 0xd5, 0xbb, 0xa4, 0xac, 0x93, 0x1c, 0xd6, 0x5d, 0x52, 0x01, 0x7e, 0x4b, 0xe9, 0xb1, 0x9a, 0x51, 0x5f, 0x66, 0x9b, 0xea, 0x47, 0x03, 0x54, 0x2a, 0x2c, 0x52, 0x5c, 0xd3, 0xd3,
1665
};
1666
static const ecdh_test_case ecccdh_SECP256R1_5_test_case = {
1667
.name = "ECCCDH/SECP256R1 5",
1668
.ecdh_type = ECCCDH,
1669
.ec_str_p = &secp256r1_str_params,
1670
.our_priv_key = ecccdh_SECP256R1_5_test_vector_our_priv_key,
1671
.our_priv_key_len = sizeof(ecccdh_SECP256R1_5_test_vector_our_priv_key),
1672
.peer_pub_key = ecccdh_SECP256R1_5_test_vector_peer_pub_key,
1673
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_5_test_vector_peer_pub_key),
1674
.exp_our_pub_key = ecccdh_SECP256R1_5_test_vector_our_pub_key,
1675
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_5_test_vector_our_pub_key),
1676
.exp_shared_secret = ecccdh_SECP256R1_5_test_vector_shared_secret,
1677
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_5_test_vector_shared_secret),
1678
};
1679
#endif /* WITH_CURVE_SECP256R1 */
1680
1681
#ifdef WITH_CURVE_SECP256R1
1682
#define ECCCDH_SECP256R1_SELF_TEST_6
1683
/*** Tests for ECCCDH/SECP256R1 ***/
1684
static const u8 ecccdh_SECP256R1_6_test_vector_our_priv_key[] = {
1685
0x3b, 0x58, 0x9a, 0xf7, 0xdb, 0x03, 0x45, 0x9c, 0x23, 0x06, 0x8b, 0x64, 0xf6, 0x3f, 0x28, 0xd3, 0xc3, 0xc6, 0xbc, 0x25, 0xb5, 0xbf, 0x76, 0xac, 0x05, 0xf3, 0x54, 0x82, 0x88, 0x8b, 0x51, 0x90,
1686
};
1687
static const u8 ecccdh_SECP256R1_6_test_vector_peer_pub_key[] = {
1688
0x6a, 0x9e, 0x0c, 0x3f, 0x91, 0x6e, 0x4e, 0x31, 0x5c, 0x91, 0x14, 0x7b, 0xe5, 0x71, 0x68, 0x6d, 0x90, 0x46, 0x4e, 0x8b, 0xf9, 0x81, 0xd3, 0x4a, 0x90, 0xb6, 0x35, 0x3b, 0xca, 0x6e, 0xeb, 0xa7, 0x40, 0xf9, 0xbe, 0xad, 0x39, 0xc2, 0xf2, 0xbc, 0xc2, 0x60, 0x2f, 0x75, 0xb8, 0xa7, 0x3e, 0xc7, 0xbd, 0xff, 0xcb, 0xce, 0xad, 0x15, 0x9d, 0x01, 0x74, 0xc6, 0xc4, 0xd3, 0xc5, 0x35, 0x7f, 0x05,
1689
};
1690
static const u8 ecccdh_SECP256R1_6_test_vector_our_pub_key[] = {
1691
0x9f, 0xb3, 0x8e, 0x2d, 0x58, 0xea, 0x1b, 0xaf, 0x76, 0x22, 0xe9, 0x67, 0x20, 0x10, 0x1c, 0xae, 0x3c, 0xde, 0x4b, 0xa6, 0xc1, 0xe9, 0xfa, 0x26, 0xd9, 0xb1, 0xde, 0x08, 0x99, 0x10, 0x28, 0x63, 0xd5, 0x56, 0x1b, 0x90, 0x04, 0x06, 0xed, 0xf5, 0x08, 0x02, 0xdd, 0x7d, 0x73, 0xe8, 0x93, 0x95, 0xf8, 0xae, 0xd7, 0x2f, 0xba, 0x0e, 0x1d, 0x1b, 0x61, 0xfe, 0x1d, 0x22, 0x30, 0x22, 0x60, 0xf0,
1692
};
1693
static const u8 ecccdh_SECP256R1_6_test_vector_shared_secret[] = {
1694
0xca, 0x34, 0x2d, 0xaa, 0x50, 0xdc, 0x09, 0xd6, 0x1b, 0xe7, 0xc1, 0x96, 0xc8, 0x5e, 0x60, 0xa8, 0x0c, 0x5c, 0xb0, 0x49, 0x31, 0x74, 0x68, 0x20, 0xbe, 0x54, 0x8c, 0xdd, 0xe0, 0x55, 0x67, 0x9d,
1695
};
1696
static const ecdh_test_case ecccdh_SECP256R1_6_test_case = {
1697
.name = "ECCCDH/SECP256R1 6",
1698
.ecdh_type = ECCCDH,
1699
.ec_str_p = &secp256r1_str_params,
1700
.our_priv_key = ecccdh_SECP256R1_6_test_vector_our_priv_key,
1701
.our_priv_key_len = sizeof(ecccdh_SECP256R1_6_test_vector_our_priv_key),
1702
.peer_pub_key = ecccdh_SECP256R1_6_test_vector_peer_pub_key,
1703
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_6_test_vector_peer_pub_key),
1704
.exp_our_pub_key = ecccdh_SECP256R1_6_test_vector_our_pub_key,
1705
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_6_test_vector_our_pub_key),
1706
.exp_shared_secret = ecccdh_SECP256R1_6_test_vector_shared_secret,
1707
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_6_test_vector_shared_secret),
1708
};
1709
#endif /* WITH_CURVE_SECP256R1 */
1710
1711
#ifdef WITH_CURVE_SECP256R1
1712
#define ECCCDH_SECP256R1_SELF_TEST_7
1713
/*** Tests for ECCCDH/SECP256R1 ***/
1714
static const u8 ecccdh_SECP256R1_7_test_vector_our_priv_key[] = {
1715
0xd8, 0xbf, 0x92, 0x9a, 0x20, 0xea, 0x74, 0x36, 0xb2, 0x46, 0x1b, 0x54, 0x1a, 0x11, 0xc8, 0x0e, 0x61, 0xd8, 0x26, 0xc0, 0xa4, 0xc9, 0xd3, 0x22, 0xb3, 0x1d, 0xd5, 0x4e, 0x7f, 0x58, 0xb9, 0xc8,
1716
};
1717
static const u8 ecccdh_SECP256R1_7_test_vector_peer_pub_key[] = {
1718
0xa9, 0xc0, 0xac, 0xad, 0xe5, 0x5c, 0x2a, 0x73, 0xea, 0xd1, 0xa8, 0x6f, 0xb0, 0xa9, 0x71, 0x32, 0x23, 0xc8, 0x24, 0x75, 0x79, 0x1c, 0xd0, 0xe2, 0x10, 0xb0, 0x46, 0x41, 0x2c, 0xe2, 0x24, 0xbb, 0xf6, 0xde, 0x0a, 0xfa, 0x20, 0xe9, 0x3e, 0x07, 0x84, 0x67, 0xc0, 0x53, 0xd2, 0x41, 0x90, 0x3e, 0xda, 0xd7, 0x34, 0xc6, 0xb4, 0x03, 0xba, 0x75, 0x8c, 0x2b, 0x5f, 0xf0, 0x4c, 0x9d, 0x42, 0x29,
1719
};
1720
static const u8 ecccdh_SECP256R1_7_test_vector_our_pub_key[] = {
1721
0x20, 0xf0, 0x76, 0x31, 0xe4, 0xa6, 0x51, 0x2a, 0x89, 0xad, 0x48, 0x7c, 0x4e, 0x9d, 0x63, 0x03, 0x9e, 0x57, 0x9c, 0xb0, 0xd7, 0xa5, 0x56, 0xcb, 0x9e, 0x66, 0x1c, 0xd5, 0x9c, 0x1e, 0x7f, 0xa4, 0x6d, 0xe9, 0x18, 0x46, 0xb3, 0xee, 0xe8, 0xa5, 0xec, 0x09, 0xc2, 0xab, 0x1f, 0x41, 0xe2, 0x1b, 0xd8, 0x36, 0x20, 0xcc, 0xdd, 0x1b, 0xdc, 0xe3, 0xab, 0x7e, 0xa6, 0xe0, 0x2d, 0xd2, 0x74, 0xf5,
1722
};
1723
static const u8 ecccdh_SECP256R1_7_test_vector_shared_secret[] = {
1724
0x35, 0xaa, 0x9b, 0x52, 0x53, 0x6a, 0x46, 0x1b, 0xfd, 0xe4, 0xe8, 0x5f, 0xc7, 0x56, 0xbe, 0x92, 0x8c, 0x7d, 0xe9, 0x79, 0x23, 0xf0, 0x41, 0x6c, 0x7a, 0x3a, 0xc8, 0xf8, 0x8b, 0x3d, 0x44, 0x89,
1725
};
1726
static const ecdh_test_case ecccdh_SECP256R1_7_test_case = {
1727
.name = "ECCCDH/SECP256R1 7",
1728
.ecdh_type = ECCCDH,
1729
.ec_str_p = &secp256r1_str_params,
1730
.our_priv_key = ecccdh_SECP256R1_7_test_vector_our_priv_key,
1731
.our_priv_key_len = sizeof(ecccdh_SECP256R1_7_test_vector_our_priv_key),
1732
.peer_pub_key = ecccdh_SECP256R1_7_test_vector_peer_pub_key,
1733
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_7_test_vector_peer_pub_key),
1734
.exp_our_pub_key = ecccdh_SECP256R1_7_test_vector_our_pub_key,
1735
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_7_test_vector_our_pub_key),
1736
.exp_shared_secret = ecccdh_SECP256R1_7_test_vector_shared_secret,
1737
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_7_test_vector_shared_secret),
1738
};
1739
#endif /* WITH_CURVE_SECP256R1 */
1740
1741
#ifdef WITH_CURVE_SECP256R1
1742
#define ECCCDH_SECP256R1_SELF_TEST_8
1743
/*** Tests for ECCCDH/SECP256R1 ***/
1744
static const u8 ecccdh_SECP256R1_8_test_vector_our_priv_key[] = {
1745
0x0f, 0x98, 0x83, 0xba, 0x0e, 0xf3, 0x2e, 0xe7, 0x5d, 0xed, 0x0d, 0x8b, 0xda, 0x39, 0xa5, 0x14, 0x6a, 0x29, 0xf1, 0xf2, 0x50, 0x7b, 0x3b, 0xd4, 0x58, 0xdb, 0xea, 0x0b, 0x2b, 0xb0, 0x5b, 0x4d,
1746
};
1747
static const u8 ecccdh_SECP256R1_8_test_vector_peer_pub_key[] = {
1748
0x94, 0xe9, 0x4f, 0x16, 0xa9, 0x82, 0x55, 0xff, 0xf2, 0xb9, 0xac, 0x0c, 0x95, 0x98, 0xaa, 0xc3, 0x54, 0x87, 0xb3, 0x23, 0x2d, 0x32, 0x31, 0xbd, 0x93, 0xb7, 0xdb, 0x7d, 0xf3, 0x6f, 0x9e, 0xb9, 0xd8, 0x04, 0x9a, 0x43, 0x57, 0x9c, 0xfa, 0x90, 0xb8, 0x09, 0x3a, 0x94, 0x41, 0x6c, 0xbe, 0xfb, 0xf9, 0x33, 0x86, 0xf1, 0x5b, 0x3f, 0x6e, 0x19, 0x0b, 0x6e, 0x34, 0x55, 0xfe, 0xdf, 0xe6, 0x9a,
1749
};
1750
static const u8 ecccdh_SECP256R1_8_test_vector_our_pub_key[] = {
1751
0xab, 0xb6, 0x1b, 0x42, 0x3b, 0xe5, 0xd6, 0xc2, 0x6e, 0x21, 0xc6, 0x05, 0x83, 0x2c, 0x91, 0x42, 0xdc, 0x1d, 0xfe, 0x5a, 0x5f, 0xff, 0x28, 0x72, 0x67, 0x37, 0x93, 0x6e, 0x6f, 0xbf, 0x51, 0x6d, 0x73, 0x3d, 0x25, 0x13, 0xef, 0x58, 0xbe, 0xab, 0x20, 0x20, 0x90, 0x58, 0x6f, 0xac, 0x91, 0xbf, 0x0f, 0xee, 0x31, 0xe8, 0x0a, 0xb3, 0x34, 0x73, 0xab, 0x23, 0xa2, 0xd8, 0x9e, 0x58, 0xfa, 0xd6,
1752
};
1753
static const u8 ecccdh_SECP256R1_8_test_vector_shared_secret[] = {
1754
0x60, 0x5c, 0x16, 0x17, 0x8a, 0x9b, 0xc8, 0x75, 0xdc, 0xbf, 0xf5, 0x4d, 0x63, 0xfe, 0x00, 0xdf, 0x69, 0x9c, 0x03, 0xe8, 0xa8, 0x88, 0xe9, 0xe9, 0x4d, 0xfb, 0xab, 0x90, 0xb2, 0x5f, 0x39, 0xb4,
1755
};
1756
static const ecdh_test_case ecccdh_SECP256R1_8_test_case = {
1757
.name = "ECCCDH/SECP256R1 8",
1758
.ecdh_type = ECCCDH,
1759
.ec_str_p = &secp256r1_str_params,
1760
.our_priv_key = ecccdh_SECP256R1_8_test_vector_our_priv_key,
1761
.our_priv_key_len = sizeof(ecccdh_SECP256R1_8_test_vector_our_priv_key),
1762
.peer_pub_key = ecccdh_SECP256R1_8_test_vector_peer_pub_key,
1763
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_8_test_vector_peer_pub_key),
1764
.exp_our_pub_key = ecccdh_SECP256R1_8_test_vector_our_pub_key,
1765
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_8_test_vector_our_pub_key),
1766
.exp_shared_secret = ecccdh_SECP256R1_8_test_vector_shared_secret,
1767
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_8_test_vector_shared_secret),
1768
};
1769
#endif /* WITH_CURVE_SECP256R1 */
1770
1771
#ifdef WITH_CURVE_SECP256R1
1772
#define ECCCDH_SECP256R1_SELF_TEST_9
1773
/*** Tests for ECCCDH/SECP256R1 ***/
1774
static const u8 ecccdh_SECP256R1_9_test_vector_our_priv_key[] = {
1775
0x2b, 0xee, 0xdb, 0x04, 0xb0, 0x5c, 0x69, 0x88, 0xf6, 0xa6, 0x75, 0x00, 0xbb, 0x81, 0x3f, 0xaf, 0x2c, 0xae, 0x0d, 0x58, 0x0c, 0x92, 0x53, 0xb6, 0x33, 0x9e, 0x4a, 0x33, 0x37, 0xbb, 0x6c, 0x08,
1776
};
1777
static const u8 ecccdh_SECP256R1_9_test_vector_peer_pub_key[] = {
1778
0xe0, 0x99, 0xbf, 0x2a, 0x4d, 0x55, 0x74, 0x60, 0xb5, 0x54, 0x44, 0x30, 0xbb, 0xf6, 0xda, 0x11, 0x00, 0x4d, 0x12, 0x7c, 0xb5, 0xd6, 0x7f, 0x64, 0xab, 0x07, 0xc9, 0x4f, 0xcd, 0xf5, 0x27, 0x4f, 0xd9, 0xc5, 0x0d, 0xbe, 0x70, 0xd7, 0x14, 0xed, 0xb5, 0xe2, 0x21, 0xf4, 0xe0, 0x20, 0x61, 0x0e, 0xeb, 0x62, 0x70, 0x51, 0x7e, 0x68, 0x8c, 0xa6, 0x4f, 0xb0, 0xe9, 0x8c, 0x7e, 0xf8, 0xc1, 0xc5,
1779
};
1780
static const u8 ecccdh_SECP256R1_9_test_vector_our_pub_key[] = {
1781
0x3d, 0x63, 0xe4, 0x29, 0xcb, 0x5f, 0xa8, 0x95, 0xa9, 0x24, 0x71, 0x29, 0xbf, 0x4e, 0x48, 0xe8, 0x9f, 0x35, 0xd7, 0xb1, 0x1d, 0xe8, 0x15, 0x8e, 0xfe, 0xb3, 0xe1, 0x06, 0xa2, 0xa8, 0x73, 0x95, 0x0c, 0xae, 0x9e, 0x47, 0x7e, 0xf4, 0x1e, 0x7c, 0x8c, 0x10, 0x64, 0x37, 0x9b, 0xb7, 0xb5, 0x54, 0xdd, 0xcb, 0xca, 0xe7, 0x9f, 0x98, 0x14, 0x28, 0x1f, 0x1e, 0x50, 0xf0, 0x40, 0x3c, 0x61, 0xf3,
1782
};
1783
static const u8 ecccdh_SECP256R1_9_test_vector_shared_secret[] = {
1784
0xf9, 0x6e, 0x40, 0xa1, 0xb7, 0x28, 0x40, 0x85, 0x4b, 0xb6, 0x2b, 0xc1, 0x3c, 0x40, 0xcc, 0x27, 0x95, 0xe3, 0x73, 0xd4, 0xe7, 0x15, 0x98, 0x0b, 0x26, 0x14, 0x76, 0x83, 0x5a, 0x09, 0x2e, 0x0b,
1785
};
1786
static const ecdh_test_case ecccdh_SECP256R1_9_test_case = {
1787
.name = "ECCCDH/SECP256R1 9",
1788
.ecdh_type = ECCCDH,
1789
.ec_str_p = &secp256r1_str_params,
1790
.our_priv_key = ecccdh_SECP256R1_9_test_vector_our_priv_key,
1791
.our_priv_key_len = sizeof(ecccdh_SECP256R1_9_test_vector_our_priv_key),
1792
.peer_pub_key = ecccdh_SECP256R1_9_test_vector_peer_pub_key,
1793
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_9_test_vector_peer_pub_key),
1794
.exp_our_pub_key = ecccdh_SECP256R1_9_test_vector_our_pub_key,
1795
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_9_test_vector_our_pub_key),
1796
.exp_shared_secret = ecccdh_SECP256R1_9_test_vector_shared_secret,
1797
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_9_test_vector_shared_secret),
1798
};
1799
#endif /* WITH_CURVE_SECP256R1 */
1800
1801
#ifdef WITH_CURVE_SECP256R1
1802
#define ECCCDH_SECP256R1_SELF_TEST_10
1803
/*** Tests for ECCCDH/SECP256R1 ***/
1804
static const u8 ecccdh_SECP256R1_10_test_vector_our_priv_key[] = {
1805
0x77, 0xc1, 0x5d, 0xcf, 0x44, 0x61, 0x0e, 0x41, 0x69, 0x6b, 0xab, 0x75, 0x89, 0x43, 0xef, 0xf1, 0x40, 0x93, 0x33, 0xe4, 0xd5, 0xa1, 0x1b, 0xbe, 0x72, 0xc8, 0xf6, 0xc3, 0x95, 0xe9, 0xf8, 0x48,
1806
};
1807
static const u8 ecccdh_SECP256R1_10_test_vector_peer_pub_key[] = {
1808
0xf7, 0x5a, 0x5f, 0xe5, 0x6b, 0xda, 0x34, 0xf3, 0xc1, 0x39, 0x62, 0x96, 0x62, 0x6e, 0xf0, 0x12, 0xdc, 0x07, 0xe4, 0x82, 0x58, 0x38, 0x77, 0x8a, 0x64, 0x5c, 0x82, 0x48, 0xcf, 0xf0, 0x16, 0x58, 0x33, 0xbb, 0xdf, 0x1b, 0x17, 0x72, 0xd8, 0x05, 0x9d, 0xf5, 0x68, 0xb0, 0x61, 0xf3, 0xf1, 0x12, 0x2f, 0x28, 0xa8, 0xd8, 0x19, 0x16, 0x7c, 0x97, 0xbe, 0x44, 0x8e, 0x3d, 0xc3, 0xfb, 0x0c, 0x3c,
1809
};
1810
static const u8 ecccdh_SECP256R1_10_test_vector_our_pub_key[] = {
1811
0xad, 0x5d, 0x13, 0xc3, 0xdb, 0x50, 0x8d, 0xdc, 0xd3, 0x84, 0x57, 0xe5, 0x99, 0x14, 0x34, 0xa2, 0x51, 0xbe, 0xd4, 0x9c, 0xf5, 0xdd, 0xcb, 0x59, 0xcd, 0xee, 0x73, 0x86, 0x5f, 0x13, 0x8c, 0x9f, 0x62, 0xce, 0xc1, 0xe7, 0x05, 0x88, 0xaa, 0x4f, 0xdf, 0xc7, 0xb9, 0xa0, 0x9d, 0xaa, 0x67, 0x80, 0x81, 0xc0, 0x4e, 0x12, 0x08, 0xb9, 0xd6, 0x62, 0xb8, 0xa2, 0x21, 0x4b, 0xf8, 0xe8, 0x1a, 0x21,
1812
};
1813
static const u8 ecccdh_SECP256R1_10_test_vector_shared_secret[] = {
1814
0x83, 0x88, 0xfa, 0x79, 0xc4, 0xba, 0xbd, 0xca, 0x02, 0xa8, 0xe8, 0xa3, 0x4f, 0x9e, 0x43, 0x55, 0x49, 0x76, 0xe4, 0x20, 0xa4, 0xad, 0x27, 0x3c, 0x81, 0xb2, 0x6e, 0x42, 0x28, 0xe9, 0xd3, 0xa3,
1815
};
1816
static const ecdh_test_case ecccdh_SECP256R1_10_test_case = {
1817
.name = "ECCCDH/SECP256R1 10",
1818
.ecdh_type = ECCCDH,
1819
.ec_str_p = &secp256r1_str_params,
1820
.our_priv_key = ecccdh_SECP256R1_10_test_vector_our_priv_key,
1821
.our_priv_key_len = sizeof(ecccdh_SECP256R1_10_test_vector_our_priv_key),
1822
.peer_pub_key = ecccdh_SECP256R1_10_test_vector_peer_pub_key,
1823
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_10_test_vector_peer_pub_key),
1824
.exp_our_pub_key = ecccdh_SECP256R1_10_test_vector_our_pub_key,
1825
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_10_test_vector_our_pub_key),
1826
.exp_shared_secret = ecccdh_SECP256R1_10_test_vector_shared_secret,
1827
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_10_test_vector_shared_secret),
1828
};
1829
#endif /* WITH_CURVE_SECP256R1 */
1830
1831
#ifdef WITH_CURVE_SECP256R1
1832
#define ECCCDH_SECP256R1_SELF_TEST_11
1833
/*** Tests for ECCCDH/SECP256R1 ***/
1834
static const u8 ecccdh_SECP256R1_11_test_vector_our_priv_key[] = {
1835
0x42, 0xa8, 0x3b, 0x98, 0x50, 0x11, 0xd1, 0x23, 0x03, 0xdb, 0x1a, 0x80, 0x0f, 0x26, 0x10, 0xf7, 0x4a, 0xa7, 0x1c, 0xdf, 0x19, 0xc6, 0x7d, 0x54, 0xce, 0x6c, 0x9e, 0xd9, 0x51, 0xe9, 0x09, 0x3e,
1836
};
1837
static const u8 ecccdh_SECP256R1_11_test_vector_peer_pub_key[] = {
1838
0x2d, 0xb4, 0x54, 0x0d, 0x50, 0x23, 0x07, 0x56, 0x15, 0x8a, 0xbf, 0x61, 0xd9, 0x83, 0x57, 0x12, 0xb6, 0x48, 0x6c, 0x74, 0x31, 0x21, 0x83, 0xcc, 0xef, 0xca, 0xef, 0x27, 0x97, 0xb7, 0x67, 0x4d, 0x62, 0xf5, 0x7f, 0x31, 0x4e, 0x3f, 0x34, 0x95, 0xdc, 0x4e, 0x09, 0x90, 0x12, 0xf5, 0xe0, 0xba, 0x71, 0x77, 0x0f, 0x96, 0x60, 0xa1, 0xea, 0xda, 0x54, 0x10, 0x4c, 0xdf, 0xde, 0x77, 0x24, 0x3e,
1839
};
1840
static const u8 ecccdh_SECP256R1_11_test_vector_our_pub_key[] = {
1841
0xab, 0x48, 0xca, 0xa6, 0x1e, 0xa3, 0x5f, 0x13, 0xf8, 0xed, 0x07, 0xff, 0xa6, 0xa1, 0x3e, 0x8d, 0xb2, 0x24, 0xdf, 0xec, 0xfa, 0xe1, 0xa7, 0xdf, 0x8b, 0x1b, 0xb6, 0xeb, 0xaf, 0x0c, 0xb9, 0x7d, 0x12, 0x74, 0x53, 0x0c, 0xa2, 0xc3, 0x85, 0xa3, 0x21, 0x8b, 0xdd, 0xfb, 0xcb, 0xf0, 0xb4, 0x02, 0x4c, 0x9b, 0xad, 0xd5, 0x24, 0x3b, 0xff, 0x83, 0x4e, 0xbf, 0xf2, 0x4a, 0x86, 0x18, 0xdc, 0xcb,
1842
};
1843
static const u8 ecccdh_SECP256R1_11_test_vector_shared_secret[] = {
1844
0x72, 0x87, 0x7c, 0xea, 0x33, 0xcc, 0xc4, 0x71, 0x50, 0x38, 0xd4, 0xbc, 0xbd, 0xfe, 0x0e, 0x43, 0xf4, 0x2a, 0x9e, 0x2c, 0x0c, 0x3b, 0x01, 0x7f, 0xc2, 0x37, 0x0f, 0x4b, 0x9a, 0xcb, 0xda, 0x4a,
1845
};
1846
static const ecdh_test_case ecccdh_SECP256R1_11_test_case = {
1847
.name = "ECCCDH/SECP256R1 11",
1848
.ecdh_type = ECCCDH,
1849
.ec_str_p = &secp256r1_str_params,
1850
.our_priv_key = ecccdh_SECP256R1_11_test_vector_our_priv_key,
1851
.our_priv_key_len = sizeof(ecccdh_SECP256R1_11_test_vector_our_priv_key),
1852
.peer_pub_key = ecccdh_SECP256R1_11_test_vector_peer_pub_key,
1853
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_11_test_vector_peer_pub_key),
1854
.exp_our_pub_key = ecccdh_SECP256R1_11_test_vector_our_pub_key,
1855
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_11_test_vector_our_pub_key),
1856
.exp_shared_secret = ecccdh_SECP256R1_11_test_vector_shared_secret,
1857
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_11_test_vector_shared_secret),
1858
};
1859
#endif /* WITH_CURVE_SECP256R1 */
1860
1861
#ifdef WITH_CURVE_SECP256R1
1862
#define ECCCDH_SECP256R1_SELF_TEST_12
1863
/*** Tests for ECCCDH/SECP256R1 ***/
1864
static const u8 ecccdh_SECP256R1_12_test_vector_our_priv_key[] = {
1865
0xce, 0xed, 0x35, 0x50, 0x7b, 0x5c, 0x93, 0xea, 0xd5, 0x98, 0x91, 0x19, 0xb9, 0xba, 0x34, 0x2c, 0xfe, 0x38, 0xe6, 0xe6, 0x38, 0xba, 0x6e, 0xea, 0x34, 0x3a, 0x55, 0x47, 0x5d, 0xe2, 0x80, 0x0b,
1866
};
1867
static const u8 ecccdh_SECP256R1_12_test_vector_peer_pub_key[] = {
1868
0xcd, 0x94, 0xfc, 0x94, 0x97, 0xe8, 0x99, 0x07, 0x50, 0x30, 0x9e, 0x9a, 0x85, 0x34, 0xfd, 0x11, 0x4b, 0x0a, 0x6e, 0x54, 0xda, 0x89, 0xc4, 0x79, 0x61, 0x01, 0x89, 0x70, 0x41, 0xd1, 0x4e, 0xcb, 0xc3, 0xde, 0xf4, 0xb5, 0xfe, 0x04, 0xfa, 0xee, 0x0a, 0x11, 0x93, 0x22, 0x29, 0xff, 0xf5, 0x63, 0x63, 0x7b, 0xfd, 0xee, 0x0e, 0x79, 0xc6, 0xde, 0xea, 0xf4, 0x49, 0xf8, 0x54, 0x01, 0xc5, 0xc4,
1869
};
1870
static const u8 ecccdh_SECP256R1_12_test_vector_our_pub_key[] = {
1871
0x9a, 0x8c, 0xd9, 0xbd, 0x72, 0xe7, 0x17, 0x52, 0xdf, 0x91, 0x44, 0x0f, 0x77, 0xc5, 0x47, 0x50, 0x9a, 0x84, 0xdf, 0x98, 0x11, 0x4e, 0x7d, 0xe4, 0xf2, 0x6c, 0xdb, 0x39, 0x23, 0x4a, 0x62, 0x5d, 0xd0, 0x7c, 0xfc, 0x84, 0xc8, 0xe1, 0x44, 0xfa, 0xb2, 0x83, 0x9f, 0x51, 0x89, 0xbb, 0x1d, 0x7c, 0x88, 0x63, 0x1d, 0x57, 0x9b, 0xbc, 0x58, 0x01, 0x2e, 0xd9, 0xa2, 0x32, 0x7d, 0xa5, 0x2f, 0x62,
1872
};
1873
static const u8 ecccdh_SECP256R1_12_test_vector_shared_secret[] = {
1874
0xe4, 0xe7, 0x40, 0x8d, 0x85, 0xff, 0x0e, 0x0e, 0x9c, 0x83, 0x80, 0x03, 0xf2, 0x8c, 0xdb, 0xd5, 0x24, 0x7c, 0xdc, 0xe3, 0x1f, 0x32, 0xf6, 0x24, 0x94, 0xb7, 0x0e, 0x5f, 0x1b, 0xc3, 0x63, 0x07,
1875
};
1876
static const ecdh_test_case ecccdh_SECP256R1_12_test_case = {
1877
.name = "ECCCDH/SECP256R1 12",
1878
.ecdh_type = ECCCDH,
1879
.ec_str_p = &secp256r1_str_params,
1880
.our_priv_key = ecccdh_SECP256R1_12_test_vector_our_priv_key,
1881
.our_priv_key_len = sizeof(ecccdh_SECP256R1_12_test_vector_our_priv_key),
1882
.peer_pub_key = ecccdh_SECP256R1_12_test_vector_peer_pub_key,
1883
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_12_test_vector_peer_pub_key),
1884
.exp_our_pub_key = ecccdh_SECP256R1_12_test_vector_our_pub_key,
1885
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_12_test_vector_our_pub_key),
1886
.exp_shared_secret = ecccdh_SECP256R1_12_test_vector_shared_secret,
1887
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_12_test_vector_shared_secret),
1888
};
1889
#endif /* WITH_CURVE_SECP256R1 */
1890
1891
#ifdef WITH_CURVE_SECP256R1
1892
#define ECCCDH_SECP256R1_SELF_TEST_13
1893
/*** Tests for ECCCDH/SECP256R1 ***/
1894
static const u8 ecccdh_SECP256R1_13_test_vector_our_priv_key[] = {
1895
0x43, 0xe0, 0xe9, 0xd9, 0x5a, 0xf4, 0xdc, 0x36, 0x48, 0x3c, 0xdd, 0x19, 0x68, 0xd2, 0xb7, 0xee, 0xb8, 0x61, 0x1f, 0xcc, 0xe7, 0x7f, 0x3a, 0x4e, 0x7d, 0x05, 0x9a, 0xe4, 0x3e, 0x50, 0x96, 0x04,
1896
};
1897
static const u8 ecccdh_SECP256R1_13_test_vector_peer_pub_key[] = {
1898
0x15, 0xb9, 0xe4, 0x67, 0xaf, 0x4d, 0x29, 0x0c, 0x41, 0x74, 0x02, 0xe0, 0x40, 0x42, 0x6f, 0xe4, 0xcf, 0x23, 0x6b, 0xae, 0x72, 0xba, 0xa3, 0x92, 0xed, 0x89, 0x78, 0x0d, 0xfc, 0xcd, 0xb4, 0x71, 0xcd, 0xf4, 0xe9, 0x17, 0x0f, 0xb9, 0x04, 0x30, 0x2b, 0x8f, 0xd9, 0x3a, 0x82, 0x0b, 0xa8, 0xcc, 0x7e, 0xd4, 0xef, 0xd3, 0xa6, 0xf2, 0xd6, 0xb0, 0x5b, 0x80, 0xb2, 0xff, 0x2a, 0xee, 0x4e, 0x77,
1899
};
1900
static const u8 ecccdh_SECP256R1_13_test_vector_our_pub_key[] = {
1901
0xf9, 0x89, 0xcf, 0x8e, 0xe9, 0x56, 0xa8, 0x2e, 0x7e, 0xbd, 0x98, 0x81, 0xcd, 0xbf, 0xb2, 0xfd, 0x94, 0x61, 0x89, 0xb0, 0x8d, 0xb5, 0x35, 0x59, 0xbc, 0x8c, 0xfd, 0xd4, 0x80, 0x71, 0xeb, 0x14, 0x5e, 0xff, 0x28, 0xf1, 0xa1, 0x8a, 0x61, 0x6b, 0x04, 0xb7, 0xd3, 0x37, 0x86, 0x86, 0x79, 0xf6, 0xdd, 0x84, 0xf9, 0xa7, 0xb3, 0xd7, 0xb6, 0xf8, 0xaf, 0x27, 0x6c, 0x19, 0x61, 0x1a, 0x54, 0x1d,
1902
};
1903
static const u8 ecccdh_SECP256R1_13_test_vector_shared_secret[] = {
1904
0xed, 0x56, 0xbc, 0xf6, 0x95, 0xb7, 0x34, 0x14, 0x2c, 0x24, 0xec, 0xb1, 0xfc, 0x1b, 0xb6, 0x4d, 0x08, 0xf1, 0x75, 0xeb, 0x24, 0x3a, 0x31, 0xf3, 0x7b, 0x3d, 0x9b, 0xb4, 0x40, 0x7f, 0x3b, 0x96,
1905
};
1906
static const ecdh_test_case ecccdh_SECP256R1_13_test_case = {
1907
.name = "ECCCDH/SECP256R1 13",
1908
.ecdh_type = ECCCDH,
1909
.ec_str_p = &secp256r1_str_params,
1910
.our_priv_key = ecccdh_SECP256R1_13_test_vector_our_priv_key,
1911
.our_priv_key_len = sizeof(ecccdh_SECP256R1_13_test_vector_our_priv_key),
1912
.peer_pub_key = ecccdh_SECP256R1_13_test_vector_peer_pub_key,
1913
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_13_test_vector_peer_pub_key),
1914
.exp_our_pub_key = ecccdh_SECP256R1_13_test_vector_our_pub_key,
1915
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_13_test_vector_our_pub_key),
1916
.exp_shared_secret = ecccdh_SECP256R1_13_test_vector_shared_secret,
1917
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_13_test_vector_shared_secret),
1918
};
1919
#endif /* WITH_CURVE_SECP256R1 */
1920
1921
#ifdef WITH_CURVE_SECP256R1
1922
#define ECCCDH_SECP256R1_SELF_TEST_14
1923
/*** Tests for ECCCDH/SECP256R1 ***/
1924
static const u8 ecccdh_SECP256R1_14_test_vector_our_priv_key[] = {
1925
0xb2, 0xf3, 0x60, 0x0d, 0xf3, 0x36, 0x8e, 0xf8, 0xa0, 0xbb, 0x85, 0xab, 0x22, 0xf4, 0x1f, 0xc0, 0xe5, 0xf4, 0xfd, 0xd5, 0x4b, 0xe8, 0x16, 0x7a, 0x5c, 0x3c, 0xd4, 0xb0, 0x8d, 0xb0, 0x49, 0x03,
1926
};
1927
static const u8 ecccdh_SECP256R1_14_test_vector_peer_pub_key[] = {
1928
0x49, 0xc5, 0x03, 0xba, 0x6c, 0x4f, 0xa6, 0x05, 0x18, 0x2e, 0x18, 0x6b, 0x5e, 0x81, 0x11, 0x3f, 0x07, 0x5b, 0xc1, 0x1d, 0xcf, 0xd5, 0x1c, 0x93, 0x2f, 0xb2, 0x1e, 0x95, 0x1e, 0xee, 0x2f, 0xa1, 0x8a, 0xf7, 0x06, 0xff, 0x09, 0x22, 0xd8, 0x7b, 0x3f, 0x0c, 0x5e, 0x4e, 0x31, 0xd8, 0xb2, 0x59, 0xae, 0xb2, 0x60, 0xa9, 0x26, 0x96, 0x43, 0xed, 0x52, 0x0a, 0x13, 0xbb, 0x25, 0xda, 0x59, 0x24,
1929
};
1930
static const u8 ecccdh_SECP256R1_14_test_vector_our_pub_key[] = {
1931
0x69, 0xc6, 0x27, 0x62, 0x5b, 0x36, 0xa4, 0x29, 0xc3, 0x98, 0xb4, 0x5c, 0x38, 0x67, 0x7c, 0xb3, 0x5d, 0x8b, 0xeb, 0x1c, 0xf7, 0x8a, 0x57, 0x1e, 0x40, 0xe9, 0x9f, 0xe4, 0xea, 0xc1, 0xcd, 0x4e, 0x81, 0x69, 0x01, 0x12, 0xb0, 0xa8, 0x8f, 0x20, 0xf7, 0x13, 0x6b, 0x28, 0xd7, 0xd4, 0x7e, 0x5f, 0xbc, 0x2a, 0xda, 0x3c, 0x8e, 0xdd, 0x87, 0x58, 0x9b, 0xc1, 0x9e, 0xc9, 0x59, 0x06, 0x37, 0xbd,
1932
};
1933
static const u8 ecccdh_SECP256R1_14_test_vector_shared_secret[] = {
1934
0xbc, 0x5c, 0x70, 0x55, 0x08, 0x9f, 0xc9, 0xd6, 0xc8, 0x9f, 0x83, 0xc1, 0xea, 0x1a, 0xda, 0x87, 0x9d, 0x99, 0x34, 0xb2, 0xea, 0x28, 0xfc, 0xf4, 0xe4, 0xa7, 0xe9, 0x84, 0xb2, 0x8a, 0xd2, 0xcf,
1935
};
1936
static const ecdh_test_case ecccdh_SECP256R1_14_test_case = {
1937
.name = "ECCCDH/SECP256R1 14",
1938
.ecdh_type = ECCCDH,
1939
.ec_str_p = &secp256r1_str_params,
1940
.our_priv_key = ecccdh_SECP256R1_14_test_vector_our_priv_key,
1941
.our_priv_key_len = sizeof(ecccdh_SECP256R1_14_test_vector_our_priv_key),
1942
.peer_pub_key = ecccdh_SECP256R1_14_test_vector_peer_pub_key,
1943
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_14_test_vector_peer_pub_key),
1944
.exp_our_pub_key = ecccdh_SECP256R1_14_test_vector_our_pub_key,
1945
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_14_test_vector_our_pub_key),
1946
.exp_shared_secret = ecccdh_SECP256R1_14_test_vector_shared_secret,
1947
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_14_test_vector_shared_secret),
1948
};
1949
#endif /* WITH_CURVE_SECP256R1 */
1950
1951
#ifdef WITH_CURVE_SECP256R1
1952
#define ECCCDH_SECP256R1_SELF_TEST_15
1953
/*** Tests for ECCCDH/SECP256R1 ***/
1954
static const u8 ecccdh_SECP256R1_15_test_vector_our_priv_key[] = {
1955
0x40, 0x02, 0x53, 0x43, 0x07, 0xf8, 0xb6, 0x2a, 0x9b, 0xf6, 0x7f, 0xf6, 0x41, 0xdd, 0xc6, 0x0f, 0xef, 0x59, 0x3b, 0x17, 0xc3, 0x34, 0x12, 0x39, 0xe9, 0x5b, 0xdb, 0x3e, 0x57, 0x9b, 0xfd, 0xc8,
1956
};
1957
static const u8 ecccdh_SECP256R1_15_test_vector_peer_pub_key[] = {
1958
0x19, 0xb3, 0x8d, 0xe3, 0x9f, 0xdd, 0x2f, 0x70, 0xf7, 0x09, 0x16, 0x31, 0xa4, 0xf7, 0x5d, 0x19, 0x93, 0x74, 0x0b, 0xa9, 0x42, 0x91, 0x62, 0xc2, 0xa4, 0x53, 0x12, 0x40, 0x16, 0x36, 0xb2, 0x9c, 0x09, 0xae, 0xd7, 0x23, 0x2b, 0x28, 0xe0, 0x60, 0x94, 0x17, 0x41, 0xb6, 0x82, 0x8b, 0xcd, 0xfa, 0x2b, 0xc4, 0x9c, 0xc8, 0x44, 0xf3, 0x77, 0x36, 0x11, 0x50, 0x4f, 0x82, 0xa3, 0x90, 0xa5, 0xae,
1959
};
1960
static const u8 ecccdh_SECP256R1_15_test_vector_our_pub_key[] = {
1961
0x5f, 0xe9, 0x64, 0x67, 0x13, 0x15, 0xa1, 0x8a, 0xa6, 0x8a, 0x2a, 0x6e, 0x3d, 0xd1, 0xfd, 0xe7, 0xe2, 0x3b, 0x8c, 0xe7, 0x18, 0x14, 0x71, 0xcf, 0xac, 0x43, 0xc9, 0x9e, 0x1a, 0xe8, 0x02, 0x62, 0xd5, 0x82, 0x7b, 0xe2, 0x82, 0xe6, 0x2c, 0x84, 0xde, 0x53, 0x1b, 0x96, 0x38, 0x84, 0xba, 0x83, 0x2d, 0xb5, 0xd6, 0xb2, 0xc3, 0xa2, 0x56, 0xf0, 0xe6, 0x04, 0xfe, 0x7e, 0x6b, 0x8a, 0x7f, 0x72,
1962
};
1963
static const u8 ecccdh_SECP256R1_15_test_vector_shared_secret[] = {
1964
0x9a, 0x4e, 0x8e, 0x65, 0x7f, 0x6b, 0x0e, 0x09, 0x7f, 0x47, 0x95, 0x4a, 0x63, 0xc7, 0x5d, 0x74, 0xfc, 0xba, 0x71, 0xa3, 0x0d, 0x83, 0x65, 0x1e, 0x3e, 0x5a, 0x91, 0xaa, 0x7c, 0xcd, 0x83, 0x43,
1965
};
1966
static const ecdh_test_case ecccdh_SECP256R1_15_test_case = {
1967
.name = "ECCCDH/SECP256R1 15",
1968
.ecdh_type = ECCCDH,
1969
.ec_str_p = &secp256r1_str_params,
1970
.our_priv_key = ecccdh_SECP256R1_15_test_vector_our_priv_key,
1971
.our_priv_key_len = sizeof(ecccdh_SECP256R1_15_test_vector_our_priv_key),
1972
.peer_pub_key = ecccdh_SECP256R1_15_test_vector_peer_pub_key,
1973
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_15_test_vector_peer_pub_key),
1974
.exp_our_pub_key = ecccdh_SECP256R1_15_test_vector_our_pub_key,
1975
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_15_test_vector_our_pub_key),
1976
.exp_shared_secret = ecccdh_SECP256R1_15_test_vector_shared_secret,
1977
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_15_test_vector_shared_secret),
1978
};
1979
#endif /* WITH_CURVE_SECP256R1 */
1980
1981
#ifdef WITH_CURVE_SECP256R1
1982
#define ECCCDH_SECP256R1_SELF_TEST_16
1983
/*** Tests for ECCCDH/SECP256R1 ***/
1984
static const u8 ecccdh_SECP256R1_16_test_vector_our_priv_key[] = {
1985
0x4d, 0xfa, 0x12, 0xde, 0xfc, 0x60, 0x31, 0x90, 0x21, 0xb6, 0x81, 0xb3, 0xff, 0x84, 0xa1, 0x0a, 0x51, 0x19, 0x58, 0xc8, 0x50, 0x93, 0x9e, 0xd4, 0x56, 0x35, 0x93, 0x4b, 0xa4, 0x97, 0x91, 0x47,
1986
};
1987
static const u8 ecccdh_SECP256R1_16_test_vector_peer_pub_key[] = {
1988
0x2c, 0x91, 0xc6, 0x1f, 0x33, 0xad, 0xfe, 0x93, 0x11, 0xc9, 0x42, 0xfd, 0xbf, 0xf6, 0xba, 0x47, 0x02, 0x0f, 0xef, 0xf4, 0x16, 0xb7, 0xbb, 0x63, 0xce, 0xc1, 0x3f, 0xaf, 0x9b, 0x09, 0x99, 0x54, 0x6c, 0xab, 0x31, 0xb0, 0x64, 0x19, 0xe5, 0x22, 0x1f, 0xca, 0x01, 0x4f, 0xb8, 0x4e, 0xc8, 0x70, 0x62, 0x2a, 0x1b, 0x12, 0xba, 0xb5, 0xae, 0x43, 0x68, 0x2a, 0xa7, 0xea, 0x73, 0xea, 0x08, 0xd0,
1989
};
1990
static const u8 ecccdh_SECP256R1_16_test_vector_our_pub_key[] = {
1991
0xc9, 0xb2, 0xb8, 0x49, 0x6f, 0x14, 0x40, 0xbd, 0x4a, 0x2d, 0x1e, 0x52, 0x75, 0x2f, 0xd3, 0x72, 0x83, 0x5b, 0x36, 0x48, 0x85, 0xe1, 0x54, 0xa7, 0xda, 0xc4, 0x92, 0x95, 0xf2, 0x81, 0xec, 0x7c, 0xfb, 0xe6, 0xb9, 0x26, 0xa8, 0xa4, 0xde, 0x26, 0xcc, 0xc8, 0x3b, 0x80, 0x2b, 0x12, 0x12, 0x40, 0x07, 0x54, 0xbe, 0x25, 0xd9, 0xf3, 0xee, 0xaf, 0x00, 0x8b, 0x09, 0x87, 0x0a, 0xe7, 0x63, 0x21,
1992
};
1993
static const u8 ecccdh_SECP256R1_16_test_vector_shared_secret[] = {
1994
0x3c, 0xa1, 0xfc, 0x7a, 0xd8, 0x58, 0xfb, 0x1a, 0x6a, 0xba, 0x23, 0x25, 0x42, 0xf3, 0xe2, 0xa7, 0x49, 0xff, 0xc7, 0x20, 0x3a, 0x23, 0x74, 0xa3, 0xf3, 0xd3, 0x26, 0x7f, 0x1f, 0xc9, 0x7b, 0x78,
1995
};
1996
static const ecdh_test_case ecccdh_SECP256R1_16_test_case = {
1997
.name = "ECCCDH/SECP256R1 16",
1998
.ecdh_type = ECCCDH,
1999
.ec_str_p = &secp256r1_str_params,
2000
.our_priv_key = ecccdh_SECP256R1_16_test_vector_our_priv_key,
2001
.our_priv_key_len = sizeof(ecccdh_SECP256R1_16_test_vector_our_priv_key),
2002
.peer_pub_key = ecccdh_SECP256R1_16_test_vector_peer_pub_key,
2003
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_16_test_vector_peer_pub_key),
2004
.exp_our_pub_key = ecccdh_SECP256R1_16_test_vector_our_pub_key,
2005
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_16_test_vector_our_pub_key),
2006
.exp_shared_secret = ecccdh_SECP256R1_16_test_vector_shared_secret,
2007
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_16_test_vector_shared_secret),
2008
};
2009
#endif /* WITH_CURVE_SECP256R1 */
2010
2011
#ifdef WITH_CURVE_SECP256R1
2012
#define ECCCDH_SECP256R1_SELF_TEST_17
2013
/*** Tests for ECCCDH/SECP256R1 ***/
2014
static const u8 ecccdh_SECP256R1_17_test_vector_our_priv_key[] = {
2015
0x13, 0x31, 0xf6, 0xd8, 0x74, 0xa4, 0xed, 0x3b, 0xc4, 0xa2, 0xc6, 0xe9, 0xc7, 0x43, 0x31, 0xd3, 0x03, 0x97, 0x96, 0x31, 0x4b, 0xee, 0xe3, 0xb7, 0x15, 0x2f, 0xcd, 0xba, 0x55, 0x56, 0x30, 0x4e,
2016
};
2017
static const u8 ecccdh_SECP256R1_17_test_vector_peer_pub_key[] = {
2018
0xa2, 0x8a, 0x2e, 0xdf, 0x58, 0x02, 0x56, 0x68, 0xf7, 0x24, 0xaa, 0xf8, 0x3a, 0x50, 0x95, 0x6b, 0x7a, 0xc1, 0xcf, 0xbb, 0xff, 0x79, 0xb0, 0x8c, 0x3b, 0xf8, 0x7d, 0xfd, 0x28, 0x28, 0xd7, 0x67, 0xdf, 0xa7, 0xbf, 0xff, 0xd4, 0xc7, 0x66, 0xb8, 0x6a, 0xbe, 0xaf, 0x5c, 0x99, 0xb6, 0xe5, 0x0c, 0xb9, 0xcc, 0xc9, 0xd9, 0xd0, 0x0b, 0x7f, 0xfc, 0x78, 0x04, 0xb0, 0x49, 0x1b, 0x67, 0xbc, 0x03,
2019
};
2020
static const u8 ecccdh_SECP256R1_17_test_vector_our_pub_key[] = {
2021
0x59, 0xe1, 0xe1, 0x01, 0x52, 0x10, 0x46, 0xad, 0x9c, 0xf1, 0xd0, 0x82, 0xe9, 0xd2, 0xec, 0x7d, 0xd2, 0x25, 0x30, 0xcc, 0xe0, 0x64, 0x99, 0x1f, 0x1e, 0x55, 0xc5, 0xbc, 0xf5, 0xfc, 0xb5, 0x91, 0x48, 0x2f, 0x4f, 0x67, 0x31, 0x76, 0xc8, 0xfd, 0xaa, 0x0b, 0xb6, 0xe5, 0x9b, 0x15, 0xa3, 0xe4, 0x74, 0x54, 0xe3, 0xa0, 0x42, 0x97, 0xd3, 0x86, 0x3c, 0x93, 0x38, 0xd9, 0x8a, 0xdd, 0x1f, 0x37,
2022
};
2023
static const u8 ecccdh_SECP256R1_17_test_vector_shared_secret[] = {
2024
0x1a, 0xaa, 0xbe, 0x7e, 0xe6, 0xe4, 0xa6, 0xfa, 0x73, 0x22, 0x91, 0x20, 0x24, 0x33, 0xa2, 0x37, 0xdf, 0x1b, 0x49, 0xbc, 0x53, 0x86, 0x6b, 0xfb, 0xe0, 0x0d, 0xb9, 0x6a, 0x0f, 0x58, 0x22, 0x4f,
2025
};
2026
static const ecdh_test_case ecccdh_SECP256R1_17_test_case = {
2027
.name = "ECCCDH/SECP256R1 17",
2028
.ecdh_type = ECCCDH,
2029
.ec_str_p = &secp256r1_str_params,
2030
.our_priv_key = ecccdh_SECP256R1_17_test_vector_our_priv_key,
2031
.our_priv_key_len = sizeof(ecccdh_SECP256R1_17_test_vector_our_priv_key),
2032
.peer_pub_key = ecccdh_SECP256R1_17_test_vector_peer_pub_key,
2033
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_17_test_vector_peer_pub_key),
2034
.exp_our_pub_key = ecccdh_SECP256R1_17_test_vector_our_pub_key,
2035
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_17_test_vector_our_pub_key),
2036
.exp_shared_secret = ecccdh_SECP256R1_17_test_vector_shared_secret,
2037
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_17_test_vector_shared_secret),
2038
};
2039
#endif /* WITH_CURVE_SECP256R1 */
2040
2041
#ifdef WITH_CURVE_SECP256R1
2042
#define ECCCDH_SECP256R1_SELF_TEST_18
2043
/*** Tests for ECCCDH/SECP256R1 ***/
2044
static const u8 ecccdh_SECP256R1_18_test_vector_our_priv_key[] = {
2045
0xdd, 0x5e, 0x9f, 0x70, 0xae, 0x74, 0x00, 0x73, 0xca, 0x02, 0x04, 0xdf, 0x60, 0x76, 0x3f, 0xb6, 0x03, 0x6c, 0x45, 0x70, 0x9b, 0xf4, 0xa7, 0xbb, 0x4e, 0x67, 0x14, 0x12, 0xfa, 0xd6, 0x5d, 0xa3,
2046
};
2047
static const u8 ecccdh_SECP256R1_18_test_vector_peer_pub_key[] = {
2048
0xa2, 0xef, 0x85, 0x7a, 0x08, 0x1f, 0x9d, 0x6e, 0xb2, 0x06, 0xa8, 0x1c, 0x4c, 0xf7, 0x8a, 0x80, 0x2b, 0xdf, 0x59, 0x8a, 0xe3, 0x80, 0xc8, 0x88, 0x6e, 0xcd, 0x85, 0xfd, 0xc1, 0xed, 0x76, 0x44, 0x56, 0x3c, 0x4c, 0x20, 0x41, 0x9f, 0x07, 0xbc, 0x17, 0xd0, 0x53, 0x9f, 0xad, 0xe1, 0x85, 0x5e, 0x34, 0x83, 0x95, 0x15, 0xb8, 0x92, 0xc0, 0xf5, 0xd2, 0x65, 0x61, 0xf9, 0x7f, 0xa0, 0x4d, 0x1a,
2049
};
2050
static const u8 ecccdh_SECP256R1_18_test_vector_our_pub_key[] = {
2051
0x30, 0xb9, 0xdb, 0x2e, 0x2e, 0x97, 0x7b, 0xcd, 0xc9, 0x8c, 0xb8, 0x7d, 0xd7, 0x36, 0xcb, 0xd8, 0xe7, 0x85, 0x52, 0x12, 0x19, 0x25, 0xcf, 0x16, 0xe1, 0x93, 0x36, 0x57, 0xc2, 0xfb, 0x23, 0x14, 0x6a, 0x45, 0x02, 0x88, 0x00, 0xb8, 0x12, 0x91, 0xbc, 0xe5, 0xc2, 0xe1, 0xfe, 0xd7, 0xde, 0xd6, 0x50, 0x62, 0x0e, 0xbb, 0xe6, 0x05, 0x0c, 0x6f, 0x3a, 0x7f, 0x0d, 0xfb, 0x46, 0x73, 0xab, 0x5c,
2052
};
2053
static const u8 ecccdh_SECP256R1_18_test_vector_shared_secret[] = {
2054
0x43, 0x0e, 0x6a, 0x4f, 0xba, 0x44, 0x49, 0xd7, 0x00, 0xd2, 0x73, 0x3e, 0x55, 0x7f, 0x66, 0xa3, 0xbf, 0x3d, 0x50, 0x51, 0x7c, 0x12, 0x71, 0xb1, 0xdd, 0xae, 0x11, 0x61, 0xb7, 0xac, 0x79, 0x8c,
2055
};
2056
static const ecdh_test_case ecccdh_SECP256R1_18_test_case = {
2057
.name = "ECCCDH/SECP256R1 18",
2058
.ecdh_type = ECCCDH,
2059
.ec_str_p = &secp256r1_str_params,
2060
.our_priv_key = ecccdh_SECP256R1_18_test_vector_our_priv_key,
2061
.our_priv_key_len = sizeof(ecccdh_SECP256R1_18_test_vector_our_priv_key),
2062
.peer_pub_key = ecccdh_SECP256R1_18_test_vector_peer_pub_key,
2063
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_18_test_vector_peer_pub_key),
2064
.exp_our_pub_key = ecccdh_SECP256R1_18_test_vector_our_pub_key,
2065
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_18_test_vector_our_pub_key),
2066
.exp_shared_secret = ecccdh_SECP256R1_18_test_vector_shared_secret,
2067
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_18_test_vector_shared_secret),
2068
};
2069
#endif /* WITH_CURVE_SECP256R1 */
2070
2071
#ifdef WITH_CURVE_SECP256R1
2072
#define ECCCDH_SECP256R1_SELF_TEST_19
2073
/*** Tests for ECCCDH/SECP256R1 ***/
2074
static const u8 ecccdh_SECP256R1_19_test_vector_our_priv_key[] = {
2075
0x5a, 0xe0, 0x26, 0xcf, 0xc0, 0x60, 0xd5, 0x56, 0x00, 0x71, 0x7e, 0x55, 0xb8, 0xa1, 0x2e, 0x11, 0x6d, 0x1d, 0x0d, 0xf3, 0x4a, 0xf8, 0x31, 0x97, 0x90, 0x57, 0x60, 0x7c, 0x2d, 0x9c, 0x2f, 0x76,
2076
};
2077
static const u8 ecccdh_SECP256R1_19_test_vector_peer_pub_key[] = {
2078
0xcc, 0xd8, 0xa2, 0xd8, 0x6b, 0xc9, 0x2f, 0x2e, 0x01, 0xbc, 0xe4, 0xd6, 0x92, 0x2c, 0xf7, 0xfe, 0x16, 0x26, 0xae, 0xd0, 0x44, 0x68, 0x5e, 0x95, 0xe2, 0xee, 0xbd, 0x46, 0x45, 0x05, 0xf0, 0x1f, 0xe9, 0xdd, 0xd5, 0x83, 0xa9, 0x63, 0x5a, 0x66, 0x77, 0x77, 0xd5, 0xb8, 0xa8, 0xf3, 0x1b, 0x0f, 0x79, 0xeb, 0xa1, 0x2c, 0x75, 0x02, 0x34, 0x10, 0xb5, 0x4b, 0x85, 0x67, 0xdd, 0xdc, 0x0f, 0x38,
2079
};
2080
static const u8 ecccdh_SECP256R1_19_test_vector_our_pub_key[] = {
2081
0x46, 0xc9, 0xeb, 0xd1, 0xa4, 0xa3, 0xc8, 0xc0, 0xb6, 0xd5, 0x72, 0xb5, 0xdc, 0xfb, 0xa1, 0x24, 0x67, 0x60, 0x32, 0x08, 0xa9, 0xcb, 0x5d, 0x2a, 0xcf, 0xbb, 0x73, 0x3c, 0x40, 0xcf, 0x63, 0x91, 0x46, 0xc9, 0x13, 0xa2, 0x7d, 0x04, 0x41, 0x85, 0xd3, 0x8b, 0x46, 0x7a, 0xce, 0x01, 0x1e, 0x04, 0xd4, 0xd9, 0xbb, 0xbb, 0x8c, 0xb9, 0xae, 0x25, 0xfa, 0x92, 0xaa, 0xf1, 0x5a, 0x59, 0x5e, 0x86,
2082
};
2083
static const u8 ecccdh_SECP256R1_19_test_vector_shared_secret[] = {
2084
0x1c, 0xe9, 0xe6, 0x74, 0x05, 0x29, 0x49, 0x9f, 0x98, 0xd1, 0xf1, 0xd7, 0x13, 0x29, 0x14, 0x7a, 0x33, 0xdf, 0x1d, 0x05, 0xe4, 0x76, 0x5b, 0x53, 0x9b, 0x11, 0xcf, 0x61, 0x5d, 0x69, 0x74, 0xd3,
2085
};
2086
static const ecdh_test_case ecccdh_SECP256R1_19_test_case = {
2087
.name = "ECCCDH/SECP256R1 19",
2088
.ecdh_type = ECCCDH,
2089
.ec_str_p = &secp256r1_str_params,
2090
.our_priv_key = ecccdh_SECP256R1_19_test_vector_our_priv_key,
2091
.our_priv_key_len = sizeof(ecccdh_SECP256R1_19_test_vector_our_priv_key),
2092
.peer_pub_key = ecccdh_SECP256R1_19_test_vector_peer_pub_key,
2093
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_19_test_vector_peer_pub_key),
2094
.exp_our_pub_key = ecccdh_SECP256R1_19_test_vector_our_pub_key,
2095
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_19_test_vector_our_pub_key),
2096
.exp_shared_secret = ecccdh_SECP256R1_19_test_vector_shared_secret,
2097
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_19_test_vector_shared_secret),
2098
};
2099
#endif /* WITH_CURVE_SECP256R1 */
2100
2101
#ifdef WITH_CURVE_SECP256R1
2102
#define ECCCDH_SECP256R1_SELF_TEST_20
2103
/*** Tests for ECCCDH/SECP256R1 ***/
2104
static const u8 ecccdh_SECP256R1_20_test_vector_our_priv_key[] = {
2105
0xb6, 0x01, 0xac, 0x42, 0x5d, 0x5d, 0xbf, 0x9e, 0x17, 0x35, 0xc5, 0xe2, 0xd5, 0xbd, 0xb7, 0x9c, 0xa9, 0x8b, 0x3d, 0x5b, 0xe4, 0xa2, 0xcf, 0xd6, 0xf2, 0x27, 0x3f, 0x15, 0x0e, 0x06, 0x4d, 0x9d,
2106
};
2107
static const u8 ecccdh_SECP256R1_20_test_vector_peer_pub_key[] = {
2108
0xc1, 0x88, 0xff, 0xc8, 0x94, 0x7f, 0x73, 0x01, 0xfb, 0x7b, 0x53, 0xe3, 0x67, 0x46, 0x09, 0x7c, 0x21, 0x34, 0xbf, 0x9c, 0xc9, 0x81, 0xba, 0x74, 0xb4, 0xe9, 0xc4, 0x36, 0x1f, 0x59, 0x5e, 0x4e, 0xbf, 0x7d, 0x2f, 0x20, 0x56, 0xe7, 0x24, 0x21, 0xef, 0x39, 0x3f, 0x0c, 0x0f, 0x2b, 0x0e, 0x00, 0x13, 0x0e, 0x3c, 0xac, 0x4a, 0xbb, 0xcc, 0x00, 0x28, 0x61, 0x68, 0xe8, 0x5e, 0xc5, 0x50, 0x51,
2109
};
2110
static const u8 ecccdh_SECP256R1_20_test_vector_our_pub_key[] = {
2111
0x7c, 0x9e, 0x95, 0x08, 0x41, 0xd2, 0x6c, 0x8d, 0xde, 0x89, 0x94, 0x39, 0x8b, 0x8f, 0x5d, 0x47, 0x5a, 0x02, 0x2b, 0xc6, 0x3d, 0xe7, 0x77, 0x3f, 0xcf, 0x8d, 0x55, 0x2e, 0x01, 0xf1, 0xba, 0x0a, 0xcc, 0x42, 0xb9, 0x88, 0x5c, 0x9b, 0x3b, 0xee, 0x0f, 0x8d, 0x8c, 0x57, 0xd3, 0xa8, 0xf6, 0x35, 0x50, 0x16, 0xc0, 0x19, 0xc4, 0x06, 0x2f, 0xa2, 0x2c, 0xff, 0x2f, 0x20, 0x9b, 0x5c, 0xc2, 0xe1,
2112
};
2113
static const u8 ecccdh_SECP256R1_20_test_vector_shared_secret[] = {
2114
0x46, 0x90, 0xe3, 0x74, 0x3c, 0x07, 0xd6, 0x43, 0xf1, 0xbc, 0x18, 0x36, 0x36, 0xab, 0x2a, 0x9c, 0xb9, 0x36, 0xa6, 0x0a, 0x80, 0x21, 0x13, 0xc4, 0x9b, 0xb1, 0xb3, 0xf2, 0xd0, 0x66, 0x16, 0x60,
2115
};
2116
static const ecdh_test_case ecccdh_SECP256R1_20_test_case = {
2117
.name = "ECCCDH/SECP256R1 20",
2118
.ecdh_type = ECCCDH,
2119
.ec_str_p = &secp256r1_str_params,
2120
.our_priv_key = ecccdh_SECP256R1_20_test_vector_our_priv_key,
2121
.our_priv_key_len = sizeof(ecccdh_SECP256R1_20_test_vector_our_priv_key),
2122
.peer_pub_key = ecccdh_SECP256R1_20_test_vector_peer_pub_key,
2123
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_20_test_vector_peer_pub_key),
2124
.exp_our_pub_key = ecccdh_SECP256R1_20_test_vector_our_pub_key,
2125
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_20_test_vector_our_pub_key),
2126
.exp_shared_secret = ecccdh_SECP256R1_20_test_vector_shared_secret,
2127
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_20_test_vector_shared_secret),
2128
};
2129
#endif /* WITH_CURVE_SECP256R1 */
2130
2131
#ifdef WITH_CURVE_SECP256R1
2132
#define ECCCDH_SECP256R1_SELF_TEST_21
2133
/*** Tests for ECCCDH/SECP256R1 ***/
2134
static const u8 ecccdh_SECP256R1_21_test_vector_our_priv_key[] = {
2135
0xfe, 0xfb, 0x1d, 0xda, 0x18, 0x45, 0x31, 0x2b, 0x5f, 0xce, 0x6b, 0x81, 0xb2, 0xbe, 0x20, 0x5a, 0xf2, 0xf3, 0xa2, 0x74, 0xf5, 0xa2, 0x12, 0xf6, 0x6c, 0x0d, 0x9f, 0xc3, 0x3d, 0x7a, 0xe5, 0x35,
2136
};
2137
static const u8 ecccdh_SECP256R1_21_test_vector_peer_pub_key[] = {
2138
0x31, 0x7e, 0x10, 0x20, 0xff, 0x53, 0xfc, 0xce, 0xf1, 0x8b, 0xf4, 0x7b, 0xb7, 0xf2, 0xdd, 0x77, 0x07, 0xfb, 0x7b, 0x7a, 0x75, 0x78, 0xe0, 0x4f, 0x35, 0xb3, 0xbe, 0xed, 0x22, 0x2a, 0x0e, 0xb6, 0x09, 0x42, 0x0c, 0xe5, 0xa1, 0x9d, 0x77, 0xc6, 0xfe, 0x1e, 0xe5, 0x87, 0xe6, 0xa4, 0x9f, 0xba, 0xf8, 0xf2, 0x80, 0xe8, 0xdf, 0x03, 0x3d, 0x75, 0x40, 0x33, 0x02, 0xe5, 0xa2, 0x7d, 0xb2, 0xae,
2139
};
2140
static const u8 ecccdh_SECP256R1_21_test_vector_our_pub_key[] = {
2141
0x38, 0xb5, 0x4d, 0xb8, 0x55, 0x00, 0xcb, 0x20, 0xc6, 0x10, 0x56, 0xed, 0xd3, 0xd8, 0x8b, 0x6a, 0x9d, 0xc2, 0x67, 0x80, 0xa0, 0x47, 0xf2, 0x13, 0xa6, 0xe1, 0xb9, 0x00, 0xf7, 0x65, 0x96, 0xeb, 0x63, 0x87, 0xe4, 0xe5, 0x78, 0x15, 0x71, 0xe4, 0xeb, 0x8a, 0xe6, 0x29, 0x91, 0xa3, 0x3b, 0x5d, 0xc3, 0x33, 0x01, 0xc5, 0xbc, 0x7e, 0x12, 0x5d, 0x53, 0x79, 0x4a, 0x39, 0x16, 0x0d, 0x8f, 0xd0,
2142
};
2143
static const u8 ecccdh_SECP256R1_21_test_vector_shared_secret[] = {
2144
0x30, 0xc2, 0x26, 0x1b, 0xd0, 0x00, 0x4e, 0x61, 0xfe, 0xda, 0x2c, 0x16, 0xaa, 0x5e, 0x21, 0xff, 0xa8, 0xd7, 0xe7, 0xf7, 0xdb, 0xf6, 0xec, 0x37, 0x9a, 0x43, 0xb4, 0x8e, 0x4b, 0x36, 0xae, 0xb0,
2145
};
2146
static const ecdh_test_case ecccdh_SECP256R1_21_test_case = {
2147
.name = "ECCCDH/SECP256R1 21",
2148
.ecdh_type = ECCCDH,
2149
.ec_str_p = &secp256r1_str_params,
2150
.our_priv_key = ecccdh_SECP256R1_21_test_vector_our_priv_key,
2151
.our_priv_key_len = sizeof(ecccdh_SECP256R1_21_test_vector_our_priv_key),
2152
.peer_pub_key = ecccdh_SECP256R1_21_test_vector_peer_pub_key,
2153
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_21_test_vector_peer_pub_key),
2154
.exp_our_pub_key = ecccdh_SECP256R1_21_test_vector_our_pub_key,
2155
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_21_test_vector_our_pub_key),
2156
.exp_shared_secret = ecccdh_SECP256R1_21_test_vector_shared_secret,
2157
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_21_test_vector_shared_secret),
2158
};
2159
#endif /* WITH_CURVE_SECP256R1 */
2160
2161
#ifdef WITH_CURVE_SECP256R1
2162
#define ECCCDH_SECP256R1_SELF_TEST_22
2163
/*** Tests for ECCCDH/SECP256R1 ***/
2164
static const u8 ecccdh_SECP256R1_22_test_vector_our_priv_key[] = {
2165
0x33, 0x4a, 0xe0, 0xc4, 0x69, 0x3d, 0x23, 0x93, 0x5a, 0x7e, 0x8e, 0x04, 0x3e, 0xbb, 0xde, 0x21, 0xe1, 0x68, 0xa7, 0xcb, 0xa3, 0xfa, 0x50, 0x7c, 0x9b, 0xe4, 0x1d, 0x76, 0x81, 0xe0, 0x49, 0xce,
2166
};
2167
static const u8 ecccdh_SECP256R1_22_test_vector_peer_pub_key[] = {
2168
0x45, 0xfb, 0x02, 0xb2, 0xce, 0xb9, 0xd7, 0xc7, 0x9d, 0x9c, 0x2f, 0xa9, 0x3e, 0x9c, 0x79, 0x67, 0xc2, 0xfa, 0x4d, 0xf5, 0x78, 0x9f, 0x96, 0x40, 0xb2, 0x42, 0x64, 0xb1, 0xe5, 0x24, 0xfc, 0xb1, 0x5c, 0x6e, 0x8e, 0xcf, 0x1f, 0x7d, 0x30, 0x23, 0x89, 0x3b, 0x7b, 0x1c, 0xa1, 0xe4, 0xd1, 0x78, 0x97, 0x2e, 0xe2, 0xa2, 0x30, 0x75, 0x7d, 0xdc, 0x56, 0x4f, 0xfe, 0x37, 0xf5, 0xc5, 0xa3, 0x21,
2169
};
2170
static const u8 ecccdh_SECP256R1_22_test_vector_our_pub_key[] = {
2171
0x3f, 0x2b, 0xf1, 0x58, 0x9a, 0xbf, 0x30, 0x47, 0xbf, 0x3e, 0x54, 0xac, 0x9a, 0x95, 0x37, 0x9b, 0xff, 0x95, 0xf8, 0xf5, 0x54, 0x05, 0xf6, 0x4e, 0xca, 0x36, 0xa7, 0xee, 0xbe, 0x8f, 0xfc, 0xa7, 0x52, 0x12, 0xa9, 0x4e, 0x66, 0xc5, 0xae, 0x9a, 0x89, 0x91, 0x87, 0x2f, 0x66, 0xa7, 0x27, 0x23, 0xd8, 0x0e, 0xc5, 0xb2, 0xe9, 0x25, 0x74, 0x5c, 0x45, 0x6f, 0x53, 0x71, 0x94, 0x3b, 0x3a, 0x06,
2172
};
2173
static const u8 ecccdh_SECP256R1_22_test_vector_shared_secret[] = {
2174
0x2a, 0xda, 0xe4, 0xa1, 0x38, 0xa2, 0x39, 0xdc, 0xd9, 0x3c, 0x24, 0x3a, 0x38, 0x03, 0xc3, 0xe4, 0xcf, 0x96, 0xe3, 0x7f, 0xe1, 0x4e, 0x6a, 0x9b, 0x71, 0x7b, 0xe9, 0x59, 0x99, 0x59, 0xb1, 0x1c,
2175
};
2176
static const ecdh_test_case ecccdh_SECP256R1_22_test_case = {
2177
.name = "ECCCDH/SECP256R1 22",
2178
.ecdh_type = ECCCDH,
2179
.ec_str_p = &secp256r1_str_params,
2180
.our_priv_key = ecccdh_SECP256R1_22_test_vector_our_priv_key,
2181
.our_priv_key_len = sizeof(ecccdh_SECP256R1_22_test_vector_our_priv_key),
2182
.peer_pub_key = ecccdh_SECP256R1_22_test_vector_peer_pub_key,
2183
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_22_test_vector_peer_pub_key),
2184
.exp_our_pub_key = ecccdh_SECP256R1_22_test_vector_our_pub_key,
2185
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_22_test_vector_our_pub_key),
2186
.exp_shared_secret = ecccdh_SECP256R1_22_test_vector_shared_secret,
2187
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_22_test_vector_shared_secret),
2188
};
2189
#endif /* WITH_CURVE_SECP256R1 */
2190
2191
#ifdef WITH_CURVE_SECP256R1
2192
#define ECCCDH_SECP256R1_SELF_TEST_23
2193
/*** Tests for ECCCDH/SECP256R1 ***/
2194
static const u8 ecccdh_SECP256R1_23_test_vector_our_priv_key[] = {
2195
0x2c, 0x4b, 0xde, 0x40, 0x21, 0x4f, 0xcc, 0x3b, 0xfc, 0x47, 0xd4, 0xcf, 0x43, 0x4b, 0x62, 0x9a, 0xcb, 0xe9, 0x15, 0x7f, 0x8f, 0xd0, 0x28, 0x25, 0x40, 0x33, 0x1d, 0xe7, 0x94, 0x2c, 0xf0, 0x9d,
2196
};
2197
static const u8 ecccdh_SECP256R1_23_test_vector_peer_pub_key[] = {
2198
0xa1, 0x9e, 0xf7, 0xbf, 0xf9, 0x8a, 0xda, 0x78, 0x18, 0x42, 0xfb, 0xfc, 0x51, 0xa4, 0x7a, 0xff, 0x39, 0xb5, 0x93, 0x5a, 0x1c, 0x7d, 0x96, 0x25, 0xc8, 0xd3, 0x23, 0xd5, 0x11, 0xc9, 0x2d, 0xe6, 0xe9, 0xc1, 0x84, 0xdf, 0x75, 0xc9, 0x55, 0xe0, 0x2e, 0x02, 0xe4, 0x00, 0xff, 0xe4, 0x5f, 0x78, 0xf3, 0x39, 0xe1, 0xaf, 0xe6, 0xd0, 0x56, 0xfb, 0x32, 0x45, 0xf4, 0x70, 0x0c, 0xe6, 0x06, 0xef,
2199
};
2200
static const u8 ecccdh_SECP256R1_23_test_vector_our_pub_key[] = {
2201
0x29, 0xc0, 0x80, 0x7f, 0x10, 0xcb, 0xc4, 0x2f, 0xb4, 0x5c, 0x99, 0x89, 0xda, 0x50, 0x68, 0x1e, 0xea, 0xd7, 0x16, 0xda, 0xa7, 0xb9, 0xe9, 0x1f, 0xd3, 0x2e, 0x06, 0x2f, 0x5e, 0xb9, 0x2c, 0xa0, 0xff, 0x1d, 0x6d, 0x19, 0x55, 0xd7, 0x37, 0x6b, 0x2d, 0xa2, 0x4f, 0xe1, 0x16, 0x3a, 0x27, 0x16, 0x59, 0x13, 0x63, 0x41, 0xbc, 0x2e, 0xb1, 0x19, 0x5f, 0xc7, 0x06, 0xdc, 0x62, 0xe7, 0xf3, 0x4d,
2202
};
2203
static const u8 ecccdh_SECP256R1_23_test_vector_shared_secret[] = {
2204
0x2e, 0x27, 0x7e, 0xc3, 0x0f, 0x5e, 0xa0, 0x7d, 0x6c, 0xe5, 0x13, 0x14, 0x9b, 0x94, 0x79, 0xb9, 0x6e, 0x07, 0xf4, 0xb6, 0x91, 0x3b, 0x1b, 0x5c, 0x11, 0x30, 0x5c, 0x14, 0x44, 0xa1, 0xbc, 0x0b,
2205
};
2206
static const ecdh_test_case ecccdh_SECP256R1_23_test_case = {
2207
.name = "ECCCDH/SECP256R1 23",
2208
.ecdh_type = ECCCDH,
2209
.ec_str_p = &secp256r1_str_params,
2210
.our_priv_key = ecccdh_SECP256R1_23_test_vector_our_priv_key,
2211
.our_priv_key_len = sizeof(ecccdh_SECP256R1_23_test_vector_our_priv_key),
2212
.peer_pub_key = ecccdh_SECP256R1_23_test_vector_peer_pub_key,
2213
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_23_test_vector_peer_pub_key),
2214
.exp_our_pub_key = ecccdh_SECP256R1_23_test_vector_our_pub_key,
2215
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_23_test_vector_our_pub_key),
2216
.exp_shared_secret = ecccdh_SECP256R1_23_test_vector_shared_secret,
2217
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_23_test_vector_shared_secret),
2218
};
2219
#endif /* WITH_CURVE_SECP256R1 */
2220
2221
#ifdef WITH_CURVE_SECP256R1
2222
#define ECCCDH_SECP256R1_SELF_TEST_24
2223
/*** Tests for ECCCDH/SECP256R1 ***/
2224
static const u8 ecccdh_SECP256R1_24_test_vector_our_priv_key[] = {
2225
0x85, 0xa2, 0x68, 0xf9, 0xd7, 0x77, 0x2f, 0x99, 0x0c, 0x36, 0xb4, 0x2b, 0x0a, 0x33, 0x1a, 0xdc, 0x92, 0xb5, 0x94, 0x1d, 0xe0, 0xb8, 0x62, 0xd5, 0xd8, 0x9a, 0x34, 0x7c, 0xbf, 0x8f, 0xaa, 0xb0,
2226
};
2227
static const u8 ecccdh_SECP256R1_24_test_vector_peer_pub_key[] = {
2228
0x35, 0x6c, 0x5a, 0x44, 0x4c, 0x04, 0x9a, 0x52, 0xfe, 0xe0, 0xad, 0xeb, 0x7e, 0x5d, 0x82, 0xae, 0x5a, 0xa8, 0x30, 0x30, 0xbf, 0xff, 0x31, 0xbb, 0xf8, 0xce, 0x20, 0x96, 0xcf, 0x16, 0x1c, 0x4b, 0x57, 0xd1, 0x28, 0xde, 0x8b, 0x2a, 0x57, 0xa0, 0x94, 0xd1, 0xa0, 0x01, 0xe5, 0x72, 0x17, 0x3f, 0x96, 0xe8, 0x86, 0x6a, 0xe3, 0x52, 0xbf, 0x29, 0xcd, 0xda, 0xf9, 0x2f, 0xc8, 0x5b, 0x2f, 0x92,
2229
};
2230
static const u8 ecccdh_SECP256R1_24_test_vector_our_pub_key[] = {
2231
0x9c, 0xf4, 0xb9, 0x85, 0x81, 0xca, 0x17, 0x79, 0x45, 0x3c, 0xc8, 0x16, 0xff, 0x28, 0xb4, 0x10, 0x0a, 0xf5, 0x6c, 0xf1, 0xbf, 0x2e, 0x5b, 0xc3, 0x12, 0xd8, 0x3b, 0x6b, 0x1b, 0x21, 0xd3, 0x33, 0x7a, 0x55, 0x04, 0xfc, 0xac, 0x52, 0x31, 0xa0, 0xd1, 0x2d, 0x65, 0x82, 0x18, 0x28, 0x48, 0x68, 0x22, 0x9c, 0x84, 0x4a, 0x04, 0xa3, 0x45, 0x0d, 0x6c, 0x73, 0x81, 0xab, 0xe0, 0x80, 0xbf, 0x3b,
2232
};
2233
static const u8 ecccdh_SECP256R1_24_test_vector_shared_secret[] = {
2234
0x1e, 0x51, 0x37, 0x3b, 0xd2, 0xc6, 0x04, 0x4c, 0x12, 0x9c, 0x43, 0x6e, 0x74, 0x2a, 0x55, 0xbe, 0x2a, 0x66, 0x8a, 0x85, 0xae, 0x08, 0x44, 0x1b, 0x67, 0x56, 0x44, 0x5d, 0xf5, 0x49, 0x38, 0x57,
2235
};
2236
static const ecdh_test_case ecccdh_SECP256R1_24_test_case = {
2237
.name = "ECCCDH/SECP256R1 24",
2238
.ecdh_type = ECCCDH,
2239
.ec_str_p = &secp256r1_str_params,
2240
.our_priv_key = ecccdh_SECP256R1_24_test_vector_our_priv_key,
2241
.our_priv_key_len = sizeof(ecccdh_SECP256R1_24_test_vector_our_priv_key),
2242
.peer_pub_key = ecccdh_SECP256R1_24_test_vector_peer_pub_key,
2243
.peer_pub_key_len = sizeof(ecccdh_SECP256R1_24_test_vector_peer_pub_key),
2244
.exp_our_pub_key = ecccdh_SECP256R1_24_test_vector_our_pub_key,
2245
.exp_our_pub_key_len = sizeof(ecccdh_SECP256R1_24_test_vector_our_pub_key),
2246
.exp_shared_secret = ecccdh_SECP256R1_24_test_vector_shared_secret,
2247
.exp_shared_secret_len = sizeof(ecccdh_SECP256R1_24_test_vector_shared_secret),
2248
};
2249
#endif /* WITH_CURVE_SECP256R1 */
2250
2251
#ifdef WITH_CURVE_SECP384R1
2252
#define ECCCDH_SECP384R1_SELF_TEST_0
2253
/*** Tests for ECCCDH/SECP384R1 ***/
2254
static const u8 ecccdh_SECP384R1_0_test_vector_our_priv_key[] = {
2255
0x3c, 0xc3, 0x12, 0x2a, 0x68, 0xf0, 0xd9, 0x50, 0x27, 0xad, 0x38, 0xc0, 0x67, 0x91, 0x6b, 0xa0, 0xeb, 0x8c, 0x38, 0x89, 0x4d, 0x22, 0xe1, 0xb1, 0x56, 0x18, 0xb6, 0x81, 0x8a, 0x66, 0x17, 0x74, 0xad, 0x46, 0x3b, 0x20, 0x5d, 0xa8, 0x8c, 0xf6, 0x99, 0xab, 0x4d, 0x43, 0xc9, 0xcf, 0x98, 0xa1,
2256
};
2257
static const u8 ecccdh_SECP384R1_0_test_vector_peer_pub_key[] = {
2258
0xa7, 0xc7, 0x6b, 0x97, 0x0c, 0x3b, 0x5f, 0xe8, 0xb0, 0x5d, 0x28, 0x38, 0xae, 0x04, 0xab, 0x47, 0x69, 0x7b, 0x9e, 0xaf, 0x52, 0xe7, 0x64, 0x59, 0x2e, 0xfd, 0xa2, 0x7f, 0xe7, 0x51, 0x32, 0x72, 0x73, 0x44, 0x66, 0xb4, 0x00, 0x09, 0x1a, 0xdb, 0xf2, 0xd6, 0x8c, 0x58, 0xe0, 0xc5, 0x00, 0x66, 0xac, 0x68, 0xf1, 0x9f, 0x2e, 0x1c, 0xb8, 0x79, 0xae, 0xd4, 0x3a, 0x99, 0x69, 0xb9, 0x1a, 0x08, 0x39, 0xc4, 0xc3, 0x8a, 0x49, 0x74, 0x9b, 0x66, 0x1e, 0xfe, 0xdf, 0x24, 0x34, 0x51, 0x91, 0x5e, 0xd0, 0x90, 0x5a, 0x32, 0xb0, 0x60, 0x99, 0x2b, 0x46, 0x8c, 0x64, 0x76, 0x6f, 0xc8, 0x43, 0x7a,
2259
};
2260
static const u8 ecccdh_SECP384R1_0_test_vector_our_pub_key[] = {
2261
0x98, 0x03, 0x80, 0x7f, 0x2f, 0x6d, 0x2f, 0xd9, 0x66, 0xcd, 0xd0, 0x29, 0x0b, 0xd4, 0x10, 0xc0, 0x19, 0x03, 0x52, 0xfb, 0xec, 0x7f, 0xf6, 0x24, 0x7d, 0xe1, 0x30, 0x2d, 0xf8, 0x6f, 0x25, 0xd3, 0x4f, 0xe4, 0xa9, 0x7b, 0xef, 0x60, 0xcf, 0xf5, 0x48, 0x35, 0x5c, 0x01, 0x5d, 0xbb, 0x3e, 0x5f, 0xba, 0x26, 0xca, 0x69, 0xec, 0x2f, 0x5b, 0x5d, 0x9d, 0xad, 0x20, 0xcc, 0x9d, 0xa7, 0x11, 0x38, 0x3a, 0x9d, 0xbe, 0x34, 0xea, 0x3f, 0xa5, 0xa2, 0xaf, 0x75, 0xb4, 0x65, 0x02, 0x62, 0x9a, 0xd5, 0x4d, 0xd8, 0xb7, 0xd7, 0x3a, 0x8a, 0xbb, 0x06, 0xa3, 0xa3, 0xbe, 0x47, 0xd6, 0x50, 0xcc, 0x99,
2262
};
2263
static const u8 ecccdh_SECP384R1_0_test_vector_shared_secret[] = {
2264
0x5f, 0x9d, 0x29, 0xdc, 0x5e, 0x31, 0xa1, 0x63, 0x06, 0x03, 0x56, 0x21, 0x36, 0x69, 0xc8, 0xce, 0x13, 0x2e, 0x22, 0xf5, 0x7c, 0x9a, 0x04, 0xf4, 0x0b, 0xa7, 0xfc, 0xea, 0xd4, 0x93, 0xb4, 0x57, 0xe5, 0x62, 0x1e, 0x76, 0x6c, 0x40, 0xa2, 0xe3, 0xd4, 0xd6, 0xa0, 0x4b, 0x25, 0xe5, 0x33, 0xf1,
2265
};
2266
static const ecdh_test_case ecccdh_SECP384R1_0_test_case = {
2267
.name = "ECCCDH/SECP384R1 0",
2268
.ecdh_type = ECCCDH,
2269
.ec_str_p = &secp384r1_str_params,
2270
.our_priv_key = ecccdh_SECP384R1_0_test_vector_our_priv_key,
2271
.our_priv_key_len = sizeof(ecccdh_SECP384R1_0_test_vector_our_priv_key),
2272
.peer_pub_key = ecccdh_SECP384R1_0_test_vector_peer_pub_key,
2273
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_0_test_vector_peer_pub_key),
2274
.exp_our_pub_key = ecccdh_SECP384R1_0_test_vector_our_pub_key,
2275
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_0_test_vector_our_pub_key),
2276
.exp_shared_secret = ecccdh_SECP384R1_0_test_vector_shared_secret,
2277
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_0_test_vector_shared_secret),
2278
};
2279
#endif /* WITH_CURVE_SECP384R1 */
2280
2281
#ifdef WITH_CURVE_SECP384R1
2282
#define ECCCDH_SECP384R1_SELF_TEST_1
2283
/*** Tests for ECCCDH/SECP384R1 ***/
2284
static const u8 ecccdh_SECP384R1_1_test_vector_our_priv_key[] = {
2285
0x92, 0x86, 0x0c, 0x21, 0xbd, 0xe0, 0x61, 0x65, 0xf8, 0xe9, 0x00, 0xc6, 0x87, 0xf8, 0xef, 0x0a, 0x05, 0xd1, 0x4f, 0x29, 0x0b, 0x3f, 0x07, 0xd8, 0xb3, 0xa8, 0xcc, 0x64, 0x04, 0x36, 0x6e, 0x5d, 0x51, 0x19, 0xcd, 0x6d, 0x03, 0xfb, 0x12, 0xdc, 0x58, 0xe8, 0x9f, 0x13, 0xdf, 0x9c, 0xd7, 0x83,
2286
};
2287
static const u8 ecccdh_SECP384R1_1_test_vector_peer_pub_key[] = {
2288
0x30, 0xf4, 0x3f, 0xcf, 0x2b, 0x6b, 0x00, 0xde, 0x53, 0xf6, 0x24, 0xf1, 0x54, 0x30, 0x90, 0x68, 0x18, 0x39, 0x71, 0x7d, 0x53, 0xc7, 0xc9, 0x55, 0xd1, 0xd6, 0x9e, 0xfa, 0xf0, 0x34, 0x9b, 0x73, 0x63, 0xac, 0xb4, 0x47, 0x24, 0x01, 0x01, 0xcb, 0xb3, 0xaf, 0x66, 0x41, 0xce, 0x4b, 0x88, 0xe0, 0x25, 0xe4, 0x6c, 0x0c, 0x54, 0xf0, 0x16, 0x2a, 0x77, 0xef, 0xcc, 0x27, 0xb6, 0xea, 0x79, 0x20, 0x02, 0xae, 0x2b, 0xa8, 0x27, 0x14, 0x29, 0x9c, 0x86, 0x08, 0x57, 0xa6, 0x81, 0x53, 0xab, 0x62, 0xe5, 0x25, 0xec, 0x05, 0x30, 0xd8, 0x1b, 0x5a, 0xa1, 0x58, 0x97, 0x98, 0x1e, 0x85, 0x87, 0x57,
2289
};
2290
static const u8 ecccdh_SECP384R1_1_test_vector_our_pub_key[] = {
2291
0xea, 0x40, 0x18, 0xf5, 0xa3, 0x07, 0xc3, 0x79, 0x18, 0x0b, 0xf6, 0xa6, 0x2f, 0xd2, 0xce, 0xce, 0xeb, 0xee, 0xb7, 0xd4, 0xdf, 0x06, 0x3a, 0x66, 0xfb, 0x83, 0x8a, 0xa3, 0x52, 0x43, 0x41, 0x97, 0x91, 0xf7, 0xe2, 0xc9, 0xd4, 0x80, 0x3c, 0x93, 0x19, 0xaa, 0x0e, 0xb0, 0x3c, 0x41, 0x6b, 0x66, 0x68, 0x83, 0x5a, 0x91, 0x48, 0x4f, 0x05, 0xef, 0x02, 0x82, 0x84, 0xdf, 0x64, 0x36, 0xfb, 0x88, 0xff, 0xeb, 0xab, 0xcd, 0xd6, 0x9a, 0xb0, 0x13, 0x3e, 0x67, 0x35, 0xa1, 0xbc, 0xfb, 0x37, 0x20, 0x3d, 0x10, 0xd3, 0x40, 0xa8, 0x32, 0x8a, 0x7b, 0x68, 0x77, 0x0c, 0xa7, 0x58, 0x78, 0xa1, 0xa6,
2292
};
2293
static const u8 ecccdh_SECP384R1_1_test_vector_shared_secret[] = {
2294
0xa2, 0x37, 0x42, 0xa2, 0xc2, 0x67, 0xd7, 0x42, 0x5f, 0xda, 0x94, 0xb9, 0x3f, 0x93, 0xbb, 0xcc, 0x24, 0x79, 0x1a, 0xc5, 0x1c, 0xd8, 0xfd, 0x50, 0x1a, 0x23, 0x8d, 0x40, 0x81, 0x2f, 0x4c, 0xbf, 0xc5, 0x9a, 0xac, 0x95, 0x20, 0xd7, 0x58, 0xcf, 0x78, 0x9c, 0x76, 0x30, 0x0c, 0x69, 0xd2, 0xff,
2295
};
2296
static const ecdh_test_case ecccdh_SECP384R1_1_test_case = {
2297
.name = "ECCCDH/SECP384R1 1",
2298
.ecdh_type = ECCCDH,
2299
.ec_str_p = &secp384r1_str_params,
2300
.our_priv_key = ecccdh_SECP384R1_1_test_vector_our_priv_key,
2301
.our_priv_key_len = sizeof(ecccdh_SECP384R1_1_test_vector_our_priv_key),
2302
.peer_pub_key = ecccdh_SECP384R1_1_test_vector_peer_pub_key,
2303
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_1_test_vector_peer_pub_key),
2304
.exp_our_pub_key = ecccdh_SECP384R1_1_test_vector_our_pub_key,
2305
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_1_test_vector_our_pub_key),
2306
.exp_shared_secret = ecccdh_SECP384R1_1_test_vector_shared_secret,
2307
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_1_test_vector_shared_secret),
2308
};
2309
#endif /* WITH_CURVE_SECP384R1 */
2310
2311
#ifdef WITH_CURVE_SECP384R1
2312
#define ECCCDH_SECP384R1_SELF_TEST_2
2313
/*** Tests for ECCCDH/SECP384R1 ***/
2314
static const u8 ecccdh_SECP384R1_2_test_vector_our_priv_key[] = {
2315
0x12, 0xcf, 0x6a, 0x22, 0x3a, 0x72, 0x35, 0x25, 0x43, 0x83, 0x0f, 0x3f, 0x18, 0x53, 0x0d, 0x5c, 0xb3, 0x7f, 0x26, 0x88, 0x0a, 0x0b, 0x29, 0x44, 0x82, 0xc8, 0xa8, 0xef, 0x8a, 0xfa, 0xd0, 0x9a, 0xa7, 0x8b, 0x7d, 0xc2, 0xf2, 0x78, 0x9a, 0x78, 0xc6, 0x6a, 0xf5, 0xd1, 0xcc, 0x55, 0x38, 0x53,
2316
};
2317
static const u8 ecccdh_SECP384R1_2_test_vector_peer_pub_key[] = {
2318
0x1a, 0xef, 0xbf, 0xa2, 0xc6, 0xc8, 0xc8, 0x55, 0xa1, 0xa2, 0x16, 0x77, 0x45, 0x50, 0xb7, 0x9a, 0x24, 0xcd, 0xa3, 0x76, 0x07, 0xbb, 0x1f, 0x7c, 0xc9, 0x06, 0x65, 0x0e, 0xe4, 0xb3, 0x81, 0x6d, 0x68, 0xf6, 0xa9, 0xc7, 0x5d, 0xa6, 0xe4, 0x24, 0x2c, 0xeb, 0xfb, 0x66, 0x52, 0xf6, 0x51, 0x80, 0x41, 0x9d, 0x28, 0xb7, 0x23, 0xeb, 0xad, 0xb7, 0x65, 0x8f, 0xce, 0xbb, 0x9a, 0xd9, 0xb7, 0xad, 0xea, 0x67, 0x4f, 0x1d, 0xa3, 0xdc, 0x6b, 0x63, 0x97, 0xb5, 0x5d, 0xa0, 0xf6, 0x1a, 0x3e, 0xdd, 0xac, 0xb4, 0xac, 0xdb, 0x14, 0x44, 0x1c, 0xb2, 0x14, 0xb0, 0x4a, 0x08, 0x44, 0xc0, 0x2f, 0xa3,
2319
};
2320
static const u8 ecccdh_SECP384R1_2_test_vector_our_pub_key[] = {
2321
0xfc, 0xfc, 0xea, 0x08, 0x5e, 0x8c, 0xf7, 0x4d, 0x0d, 0xce, 0xd1, 0x62, 0x0b, 0xa8, 0x42, 0x36, 0x94, 0xf9, 0x03, 0xa2, 0x19, 0xbb, 0xf9, 0x01, 0xb0, 0xb5, 0x9d, 0x6a, 0xc8, 0x1b, 0xaa, 0xd3, 0x16, 0xa2, 0x42, 0xba, 0x32, 0xbd, 0xe8, 0x5c, 0xb2, 0x48, 0x11, 0x9b, 0x85, 0x2f, 0xab, 0x66, 0x97, 0x2e, 0x3c, 0x68, 0xc7, 0xab, 0x40, 0x2c, 0x58, 0x36, 0xf2, 0xa1, 0x6e, 0xd4, 0x51, 0xa3, 0x31, 0x20, 0xa7, 0x75, 0x0a, 0x60, 0x39, 0xf3, 0xff, 0x15, 0x38, 0x8e, 0xe6, 0x22, 0xb7, 0x06, 0x5f, 0x71, 0x22, 0xbf, 0x6d, 0x51, 0xae, 0xfb, 0xc2, 0x9b, 0x37, 0xb0, 0x34, 0x04, 0x58, 0x1b,
2322
};
2323
static const u8 ecccdh_SECP384R1_2_test_vector_shared_secret[] = {
2324
0x3d, 0x2e, 0x64, 0x0f, 0x35, 0x08, 0x05, 0xee, 0xd1, 0xff, 0x43, 0xb4, 0x0a, 0x72, 0xb2, 0xab, 0xed, 0x0a, 0x51, 0x8b, 0xce, 0xbe, 0x8f, 0x2d, 0x15, 0xb1, 0x11, 0xb6, 0x77, 0x32, 0x23, 0xda, 0x3c, 0x34, 0x89, 0x12, 0x1d, 0xb1, 0x73, 0xd4, 0x14, 0xb5, 0xbd, 0x5a, 0xd7, 0x15, 0x34, 0x35,
2325
};
2326
static const ecdh_test_case ecccdh_SECP384R1_2_test_case = {
2327
.name = "ECCCDH/SECP384R1 2",
2328
.ecdh_type = ECCCDH,
2329
.ec_str_p = &secp384r1_str_params,
2330
.our_priv_key = ecccdh_SECP384R1_2_test_vector_our_priv_key,
2331
.our_priv_key_len = sizeof(ecccdh_SECP384R1_2_test_vector_our_priv_key),
2332
.peer_pub_key = ecccdh_SECP384R1_2_test_vector_peer_pub_key,
2333
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_2_test_vector_peer_pub_key),
2334
.exp_our_pub_key = ecccdh_SECP384R1_2_test_vector_our_pub_key,
2335
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_2_test_vector_our_pub_key),
2336
.exp_shared_secret = ecccdh_SECP384R1_2_test_vector_shared_secret,
2337
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_2_test_vector_shared_secret),
2338
};
2339
#endif /* WITH_CURVE_SECP384R1 */
2340
2341
#ifdef WITH_CURVE_SECP384R1
2342
#define ECCCDH_SECP384R1_SELF_TEST_3
2343
/*** Tests for ECCCDH/SECP384R1 ***/
2344
static const u8 ecccdh_SECP384R1_3_test_vector_our_priv_key[] = {
2345
0x8d, 0xd4, 0x80, 0x63, 0xa3, 0xa0, 0x58, 0xc3, 0x34, 0xb5, 0xcc, 0x7a, 0x4c, 0xe0, 0x7d, 0x02, 0xe5, 0xee, 0x6d, 0x8f, 0x1f, 0x3c, 0x51, 0xa1, 0x60, 0x09, 0x62, 0xcb, 0xab, 0x46, 0x26, 0x90, 0xae, 0x3c, 0xd9, 0x74, 0xfb, 0x39, 0xe4, 0x0b, 0x0e, 0x84, 0x3d, 0xaa, 0x0f, 0xd3, 0x2d, 0xe1,
2346
};
2347
static const u8 ecccdh_SECP384R1_3_test_vector_peer_pub_key[] = {
2348
0x8b, 0xc0, 0x89, 0x32, 0x6e, 0xc5, 0x5b, 0x9c, 0xf5, 0x9b, 0x34, 0xf0, 0xeb, 0x75, 0x4d, 0x93, 0x59, 0x6c, 0xa2, 0x90, 0xfc, 0xb3, 0x44, 0x4c, 0x83, 0xd4, 0xde, 0x3a, 0x56, 0x07, 0x03, 0x7e, 0xc3, 0x97, 0x68, 0x3f, 0x8c, 0xef, 0x07, 0xea, 0xb2, 0xfe, 0x35, 0x7e, 0xae, 0x36, 0xc4, 0x49, 0xd9, 0xd1, 0x6c, 0xe8, 0xac, 0x85, 0xb3, 0xf1, 0xe9, 0x45, 0x68, 0x52, 0x1a, 0xae, 0x53, 0x4e, 0x67, 0x13, 0x9e, 0x31, 0x0e, 0xc7, 0x26, 0x93, 0x52, 0x6a, 0xa2, 0xe9, 0x27, 0xb5, 0xb3, 0x22, 0xc9, 0x5a, 0x1a, 0x03, 0x3c, 0x22, 0x9c, 0xb6, 0x77, 0x0c, 0x95, 0x7c, 0xd3, 0x14, 0x8d, 0xd7,
2349
};
2350
static const u8 ecccdh_SECP384R1_3_test_vector_our_pub_key[] = {
2351
0xe3, 0x8c, 0x98, 0x46, 0x24, 0x81, 0x23, 0xc3, 0x42, 0x18, 0x61, 0xea, 0x4d, 0x32, 0x66, 0x9a, 0x7b, 0x5c, 0x3c, 0x08, 0x37, 0x6a, 0xd2, 0x81, 0x04, 0x39, 0x94, 0x94, 0xc8, 0x4f, 0xf5, 0xef, 0xa3, 0x89, 0x4a, 0xdb, 0x2c, 0x6c, 0xbe, 0x8c, 0x3c, 0x91, 0x3e, 0xf2, 0xee, 0xc5, 0xbd, 0x3c, 0x9f, 0xa8, 0x40, 0x24, 0xa1, 0x02, 0x87, 0x96, 0xdf, 0x84, 0x02, 0x1f, 0x7b, 0x6c, 0x9d, 0x02, 0xf0, 0xf4, 0xbd, 0x1a, 0x61, 0x2a, 0x03, 0xcb, 0xf7, 0x5a, 0x0b, 0xee, 0xa4, 0x3f, 0xef, 0x8a, 0xe8, 0x4b, 0x48, 0xc6, 0x01, 0x72, 0xaa, 0xdf, 0x09, 0xc1, 0xad, 0x01, 0x6d, 0x0b, 0xf3, 0xce,
2352
};
2353
static const u8 ecccdh_SECP384R1_3_test_vector_shared_secret[] = {
2354
0x6a, 0x42, 0xcf, 0xc3, 0x92, 0xab, 0xa0, 0xbf, 0xd3, 0xd1, 0x7b, 0x7c, 0xcf, 0x06, 0x2b, 0x91, 0xfc, 0x09, 0xbb, 0xf3, 0x41, 0x76, 0x12, 0xd0, 0x2a, 0x90, 0xbd, 0xde, 0x62, 0xae, 0x40, 0xc5, 0x4b, 0xb2, 0xe5, 0x6e, 0x16, 0x7d, 0x6b, 0x70, 0xdb, 0x67, 0x00, 0x97, 0xeb, 0x8d, 0xb8, 0x54,
2355
};
2356
static const ecdh_test_case ecccdh_SECP384R1_3_test_case = {
2357
.name = "ECCCDH/SECP384R1 3",
2358
.ecdh_type = ECCCDH,
2359
.ec_str_p = &secp384r1_str_params,
2360
.our_priv_key = ecccdh_SECP384R1_3_test_vector_our_priv_key,
2361
.our_priv_key_len = sizeof(ecccdh_SECP384R1_3_test_vector_our_priv_key),
2362
.peer_pub_key = ecccdh_SECP384R1_3_test_vector_peer_pub_key,
2363
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_3_test_vector_peer_pub_key),
2364
.exp_our_pub_key = ecccdh_SECP384R1_3_test_vector_our_pub_key,
2365
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_3_test_vector_our_pub_key),
2366
.exp_shared_secret = ecccdh_SECP384R1_3_test_vector_shared_secret,
2367
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_3_test_vector_shared_secret),
2368
};
2369
#endif /* WITH_CURVE_SECP384R1 */
2370
2371
#ifdef WITH_CURVE_SECP384R1
2372
#define ECCCDH_SECP384R1_SELF_TEST_4
2373
/*** Tests for ECCCDH/SECP384R1 ***/
2374
static const u8 ecccdh_SECP384R1_4_test_vector_our_priv_key[] = {
2375
0x84, 0xec, 0xe6, 0xcc, 0x34, 0x29, 0x30, 0x9b, 0xd5, 0xb2, 0x3e, 0x95, 0x97, 0x93, 0xed, 0x2b, 0x11, 0x1e, 0xc5, 0xcb, 0x43, 0xb6, 0xc1, 0x80, 0x85, 0xfc, 0xae, 0xa9, 0xef, 0xa0, 0x68, 0x5d, 0x98, 0xa6, 0x26, 0x2e, 0xe0, 0xd3, 0x30, 0xee, 0x25, 0x0b, 0xc8, 0xa6, 0x7d, 0x0e, 0x73, 0x3f,
2376
};
2377
static const u8 ecccdh_SECP384R1_4_test_vector_peer_pub_key[] = {
2378
0xeb, 0x95, 0x2e, 0x2d, 0x9a, 0xc0, 0xc2, 0x0c, 0x6c, 0xc4, 0x8f, 0xb2, 0x25, 0xc2, 0xad, 0x15, 0x4f, 0x53, 0xc8, 0x75, 0x0b, 0x00, 0x3f, 0xd3, 0xb4, 0xed, 0x8e, 0xd1, 0xdc, 0x0d, 0xef, 0xac, 0x61, 0xbc, 0xdd, 0xe0, 0x2a, 0x2b, 0xcf, 0xee, 0x70, 0x67, 0xd7, 0x5d, 0x34, 0x2e, 0xd2, 0xb0, 0xf1, 0x82, 0x82, 0x05, 0xba, 0xec, 0xe8, 0x2d, 0x1b, 0x26, 0x7d, 0x0d, 0x7f, 0xf2, 0xf9, 0xc9, 0xe1, 0x5b, 0x69, 0xa7, 0x2d, 0xf4, 0x70, 0x58, 0xa9, 0x7f, 0x38, 0x91, 0x00, 0x5d, 0x1f, 0xb3, 0x88, 0x58, 0xf5, 0x60, 0x3d, 0xe8, 0x40, 0xe5, 0x91, 0xdf, 0xa4, 0xf6, 0xe7, 0xd4, 0x89, 0xe1,
2379
};
2380
static const u8 ecccdh_SECP384R1_4_test_vector_our_pub_key[] = {
2381
0x32, 0x22, 0x06, 0x3a, 0x29, 0x97, 0xb3, 0x02, 0xee, 0x60, 0xee, 0x19, 0x61, 0x10, 0x8f, 0xf4, 0xc7, 0xac, 0xf1, 0xc0, 0xef, 0x1d, 0x5f, 0xb0, 0xd1, 0x64, 0xb8, 0x4b, 0xce, 0x71, 0xc4, 0x31, 0x70, 0x5c, 0xb9, 0xae, 0xa9, 0xa4, 0x5f, 0x5d, 0x73, 0x80, 0x66, 0x55, 0xa0, 0x58, 0xbe, 0xe3, 0xe6, 0x1f, 0xa9, 0xe7, 0xfb, 0xe7, 0xcd, 0x43, 0xab, 0xf9, 0x95, 0x96, 0xa3, 0xd3, 0xa0, 0x39, 0xe9, 0x9f, 0xa9, 0xdc, 0x93, 0xb0, 0xbd, 0xd9, 0xca, 0xd8, 0x19, 0x66, 0xd1, 0x7e, 0xea, 0xf5, 0x57, 0x06, 0x8a, 0xfa, 0x7c, 0x78, 0x46, 0x6b, 0xb5, 0xb2, 0x20, 0x32, 0xd1, 0x10, 0x0f, 0xa6,
2382
};
2383
static const u8 ecccdh_SECP384R1_4_test_vector_shared_secret[] = {
2384
0xce, 0x7b, 0xa4, 0x54, 0xd4, 0x41, 0x27, 0x29, 0xa3, 0x2b, 0xb8, 0x33, 0xa2, 0xd1, 0xfd, 0x2a, 0xe6, 0x12, 0xd4, 0x66, 0x7c, 0x3a, 0x90, 0x0e, 0x06, 0x92, 0x14, 0x81, 0x86, 0x13, 0x44, 0x7d, 0xf8, 0xc6, 0x11, 0xde, 0x66, 0xda, 0x20, 0x0d, 0xb7, 0xc3, 0x75, 0xcf, 0x91, 0x3e, 0x44, 0x05,
2385
};
2386
static const ecdh_test_case ecccdh_SECP384R1_4_test_case = {
2387
.name = "ECCCDH/SECP384R1 4",
2388
.ecdh_type = ECCCDH,
2389
.ec_str_p = &secp384r1_str_params,
2390
.our_priv_key = ecccdh_SECP384R1_4_test_vector_our_priv_key,
2391
.our_priv_key_len = sizeof(ecccdh_SECP384R1_4_test_vector_our_priv_key),
2392
.peer_pub_key = ecccdh_SECP384R1_4_test_vector_peer_pub_key,
2393
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_4_test_vector_peer_pub_key),
2394
.exp_our_pub_key = ecccdh_SECP384R1_4_test_vector_our_pub_key,
2395
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_4_test_vector_our_pub_key),
2396
.exp_shared_secret = ecccdh_SECP384R1_4_test_vector_shared_secret,
2397
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_4_test_vector_shared_secret),
2398
};
2399
#endif /* WITH_CURVE_SECP384R1 */
2400
2401
#ifdef WITH_CURVE_SECP384R1
2402
#define ECCCDH_SECP384R1_SELF_TEST_5
2403
/*** Tests for ECCCDH/SECP384R1 ***/
2404
static const u8 ecccdh_SECP384R1_5_test_vector_our_priv_key[] = {
2405
0x68, 0xfc, 0xe2, 0x12, 0x1d, 0xc3, 0xa1, 0xe3, 0x7b, 0x10, 0xf1, 0xdd, 0xe3, 0x09, 0xf9, 0xe2, 0xe1, 0x8f, 0xac, 0x47, 0xcd, 0x17, 0x70, 0x95, 0x14, 0x51, 0xc3, 0x48, 0x4c, 0xdb, 0x77, 0xcb, 0x13, 0x6d, 0x00, 0xe7, 0x31, 0x26, 0x05, 0x97, 0xcc, 0x28, 0x59, 0x60, 0x1c, 0x01, 0xa2, 0x5b,
2406
};
2407
static const u8 ecccdh_SECP384R1_5_test_vector_peer_pub_key[] = {
2408
0x44, 0x1d, 0x02, 0x9e, 0x24, 0x4e, 0xb7, 0x16, 0x8d, 0x64, 0x7d, 0x4d, 0xf5, 0x0d, 0xb5, 0xf4, 0xe4, 0x97, 0x4a, 0xb3, 0xfd, 0xaf, 0x02, 0x2a, 0xff, 0x05, 0x8b, 0x36, 0x95, 0xd0, 0xb8, 0xc8, 0x14, 0xcc, 0x88, 0xda, 0x62, 0x85, 0xdc, 0x6d, 0xf1, 0xac, 0x55, 0xc5, 0x53, 0x88, 0x50, 0x03, 0xe8, 0x02, 0x5a, 0xc2, 0x3a, 0x41, 0xd4, 0xb1, 0xea, 0x2a, 0xa4, 0x6c, 0x50, 0xc6, 0xe4, 0x79, 0x94, 0x6b, 0x59, 0xb6, 0xd7, 0x64, 0x97, 0xcd, 0x92, 0x49, 0x97, 0x7e, 0x0b, 0xfe, 0x4a, 0x62, 0x62, 0x62, 0x2f, 0x13, 0xd4, 0x2a, 0x3c, 0x43, 0xd6, 0x6b, 0xdb, 0xb3, 0x04, 0x03, 0xc3, 0x45,
2409
};
2410
static const u8 ecccdh_SECP384R1_5_test_vector_our_pub_key[] = {
2411
0x86, 0x8b, 0xe0, 0xe6, 0x94, 0x84, 0x18, 0x30, 0xe4, 0x24, 0xd9, 0x13, 0xd8, 0xe7, 0xd8, 0x6b, 0x84, 0xee, 0x10, 0x21, 0xd8, 0x2b, 0x0e, 0xcf, 0x52, 0x3f, 0x09, 0xfe, 0x89, 0xa7, 0x6c, 0x0c, 0x95, 0xc4, 0x9f, 0x2d, 0xfb, 0xcf, 0x82, 0x9c, 0x1e, 0x39, 0x70, 0x9d, 0x55, 0xef, 0xbb, 0x3b, 0x91, 0x95, 0xeb, 0x18, 0x36, 0x75, 0xb4, 0x0f, 0xd9, 0x2f, 0x51, 0xf3, 0x77, 0x13, 0x31, 0x7e, 0x4a, 0x9b, 0x4f, 0x71, 0x5c, 0x8a, 0xb2, 0x2e, 0x07, 0x73, 0xb1, 0xbc, 0x71, 0xd3, 0xa2, 0x19, 0xf0, 0x5b, 0x81, 0x16, 0x07, 0x46, 0x58, 0xee, 0x86, 0xb5, 0x2e, 0x36, 0xf3, 0x89, 0x71, 0x16,
2412
};
2413
static const u8 ecccdh_SECP384R1_5_test_vector_shared_secret[] = {
2414
0xba, 0x69, 0xf0, 0xac, 0xdf, 0x3e, 0x1c, 0xa9, 0x5c, 0xaa, 0xac, 0x4e, 0xca, 0xf4, 0x75, 0xbb, 0xe5, 0x1b, 0x54, 0x77, 0x7e, 0xfc, 0xe0, 0x1c, 0xa3, 0x81, 0xf4, 0x53, 0x70, 0xe4, 0x86, 0xfe, 0x87, 0xf9, 0xf4, 0x19, 0xb1, 0x50, 0xc6, 0x1e, 0x32, 0x9a, 0x28, 0x6d, 0x1a, 0xa2, 0x65, 0xec,
2415
};
2416
static const ecdh_test_case ecccdh_SECP384R1_5_test_case = {
2417
.name = "ECCCDH/SECP384R1 5",
2418
.ecdh_type = ECCCDH,
2419
.ec_str_p = &secp384r1_str_params,
2420
.our_priv_key = ecccdh_SECP384R1_5_test_vector_our_priv_key,
2421
.our_priv_key_len = sizeof(ecccdh_SECP384R1_5_test_vector_our_priv_key),
2422
.peer_pub_key = ecccdh_SECP384R1_5_test_vector_peer_pub_key,
2423
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_5_test_vector_peer_pub_key),
2424
.exp_our_pub_key = ecccdh_SECP384R1_5_test_vector_our_pub_key,
2425
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_5_test_vector_our_pub_key),
2426
.exp_shared_secret = ecccdh_SECP384R1_5_test_vector_shared_secret,
2427
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_5_test_vector_shared_secret),
2428
};
2429
#endif /* WITH_CURVE_SECP384R1 */
2430
2431
#ifdef WITH_CURVE_SECP384R1
2432
#define ECCCDH_SECP384R1_SELF_TEST_6
2433
/*** Tests for ECCCDH/SECP384R1 ***/
2434
static const u8 ecccdh_SECP384R1_6_test_vector_our_priv_key[] = {
2435
0xb1, 0x76, 0x4c, 0x54, 0x89, 0x7e, 0x7a, 0xae, 0x6d, 0xe9, 0xe7, 0x75, 0x1f, 0x2f, 0x37, 0xde, 0x84, 0x92, 0x91, 0xf8, 0x8f, 0x0f, 0x91, 0x09, 0x31, 0x55, 0xb8, 0x58, 0xd1, 0xcc, 0x32, 0xa3, 0xa8, 0x79, 0x80, 0xf7, 0x06, 0xb8, 0x6c, 0xc8, 0x3f, 0x92, 0x7b, 0xdf, 0xdb, 0xea, 0xe0, 0xbd,
2436
};
2437
static const u8 ecccdh_SECP384R1_6_test_vector_peer_pub_key[] = {
2438
0x3d, 0x4e, 0x6b, 0xf0, 0x8a, 0x73, 0x40, 0x4a, 0xcc, 0xc1, 0x62, 0x98, 0x73, 0x46, 0x8e, 0x42, 0x69, 0xe8, 0x2d, 0x90, 0xd8, 0x32, 0xe5, 0x8a, 0xd7, 0x21, 0x42, 0x63, 0x9b, 0x5a, 0x05, 0x6a, 0xd8, 0xd3, 0x5c, 0x66, 0xc6, 0x0e, 0x81, 0x49, 0xfa, 0xc0, 0xc7, 0x97, 0xbc, 0xeb, 0x7c, 0x2f, 0x9b, 0x03, 0x08, 0xdc, 0x7f, 0x0e, 0x6d, 0x29, 0xf8, 0xc2, 0x77, 0xac, 0xbc, 0x65, 0xa2, 0x1e, 0x5a, 0xdb, 0x83, 0xd1, 0x1e, 0x68, 0x73, 0xbc, 0x0a, 0x07, 0xfd, 0xa0, 0x99, 0x7f, 0x48, 0x25, 0x04, 0x60, 0x2f, 0x59, 0xe1, 0x0b, 0xc5, 0xcb, 0x47, 0x6b, 0x83, 0xd0, 0xa4, 0xf7, 0x5e, 0x71,
2439
};
2440
static const u8 ecccdh_SECP384R1_6_test_vector_our_pub_key[] = {
2441
0xc3, 0x71, 0x22, 0x2f, 0xea, 0xa6, 0x77, 0x0c, 0x6f, 0x3e, 0xa3, 0xe0, 0xda, 0xc9, 0x74, 0x0d, 0xef, 0x4f, 0xcf, 0x82, 0x13, 0x78, 0xb7, 0xf9, 0x1f, 0xf9, 0x37, 0xc2, 0x1e, 0x04, 0x70, 0xf7, 0x0f, 0x3a, 0x31, 0xd5, 0xc6, 0xb2, 0x91, 0x21, 0x95, 0xf1, 0x09, 0x26, 0x94, 0x2b, 0x48, 0xae, 0x04, 0x7d, 0x6b, 0x4d, 0x76, 0x51, 0x23, 0x56, 0x3f, 0x81, 0x11, 0x6b, 0xc6, 0x65, 0xb7, 0xb8, 0xcc, 0x62, 0x07, 0x83, 0x0d, 0x80, 0x5f, 0xd8, 0x4d, 0xa7, 0xcb, 0x80, 0x5a, 0x65, 0xba, 0xa7, 0xc1, 0x2f, 0xd5, 0x92, 0xd1, 0xb5, 0xb5, 0xe3, 0xe6, 0x5d, 0x96, 0x72, 0xa9, 0xef, 0x76, 0x62,
2442
};
2443
static const u8 ecccdh_SECP384R1_6_test_vector_shared_secret[] = {
2444
0x1a, 0x66, 0x88, 0xee, 0x1d, 0x6e, 0x59, 0x86, 0x5d, 0x8e, 0x3a, 0xda, 0x37, 0x78, 0x1d, 0x36, 0xbb, 0x0c, 0x27, 0x17, 0xee, 0xf9, 0x2e, 0x61, 0x96, 0x4d, 0x39, 0x27, 0xcb, 0x76, 0x5c, 0x29, 0x65, 0xea, 0x80, 0xf7, 0xf6, 0x3e, 0x58, 0xc3, 0x22, 0xba, 0x03, 0x97, 0xfa, 0xea, 0xf6, 0x2b,
2445
};
2446
static const ecdh_test_case ecccdh_SECP384R1_6_test_case = {
2447
.name = "ECCCDH/SECP384R1 6",
2448
.ecdh_type = ECCCDH,
2449
.ec_str_p = &secp384r1_str_params,
2450
.our_priv_key = ecccdh_SECP384R1_6_test_vector_our_priv_key,
2451
.our_priv_key_len = sizeof(ecccdh_SECP384R1_6_test_vector_our_priv_key),
2452
.peer_pub_key = ecccdh_SECP384R1_6_test_vector_peer_pub_key,
2453
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_6_test_vector_peer_pub_key),
2454
.exp_our_pub_key = ecccdh_SECP384R1_6_test_vector_our_pub_key,
2455
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_6_test_vector_our_pub_key),
2456
.exp_shared_secret = ecccdh_SECP384R1_6_test_vector_shared_secret,
2457
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_6_test_vector_shared_secret),
2458
};
2459
#endif /* WITH_CURVE_SECP384R1 */
2460
2461
#ifdef WITH_CURVE_SECP384R1
2462
#define ECCCDH_SECP384R1_SELF_TEST_7
2463
/*** Tests for ECCCDH/SECP384R1 ***/
2464
static const u8 ecccdh_SECP384R1_7_test_vector_our_priv_key[] = {
2465
0xf0, 0xf7, 0xa9, 0x6e, 0x70, 0xd9, 0x8f, 0xd5, 0xa3, 0x0a, 0xd6, 0x40, 0x6c, 0xf5, 0x6e, 0xb5, 0xb7, 0x2a, 0x51, 0x0e, 0x9f, 0x19, 0x2f, 0x50, 0xe1, 0xf8, 0x45, 0x24, 0xdb, 0xf3, 0xd2, 0x43, 0x9f, 0x72, 0x87, 0xbb, 0x36, 0xf5, 0xaa, 0x91, 0x2a, 0x79, 0xde, 0xaa, 0xb4, 0xad, 0xea, 0x82,
2466
};
2467
static const u8 ecccdh_SECP384R1_7_test_vector_peer_pub_key[] = {
2468
0xf5, 0xf6, 0xbe, 0xf1, 0xd1, 0x10, 0xda, 0x03, 0xbe, 0x00, 0x17, 0xea, 0xc7, 0x60, 0xcc, 0x34, 0xb2, 0x4d, 0x09, 0x2f, 0x73, 0x6f, 0x23, 0x7b, 0xc7, 0x05, 0x4b, 0x38, 0x65, 0x31, 0x2a, 0x81, 0x3b, 0xcb, 0x62, 0xd2, 0x97, 0xfb, 0x10, 0xa4, 0xf7, 0xab, 0xf5, 0x47, 0x08, 0xfe, 0x2d, 0x3d, 0x06, 0xfd, 0xf8, 0xd7, 0xdc, 0x03, 0x2f, 0x4e, 0x10, 0x01, 0x0b, 0xf1, 0x9c, 0xbf, 0x61, 0x59, 0x32, 0x12, 0x52, 0xff, 0x41, 0x5f, 0xb9, 0x19, 0x20, 0xd4, 0x38, 0xf2, 0x4e, 0x67, 0xe6, 0x0c, 0x2e, 0xb0, 0x46, 0x32, 0x04, 0x67, 0x9f, 0xa3, 0x56, 0xaf, 0x44, 0xce, 0xa9, 0xc9, 0xeb, 0xf5,
2469
};
2470
static const u8 ecccdh_SECP384R1_7_test_vector_our_pub_key[] = {
2471
0x99, 0xc8, 0xc4, 0x1c, 0xb1, 0xab, 0x5e, 0x08, 0x54, 0xa3, 0x46, 0xe4, 0xb0, 0x8a, 0x53, 0x7c, 0x17, 0x06, 0xa6, 0x15, 0x53, 0x38, 0x7c, 0x8d, 0x94, 0x94, 0x3a, 0xb1, 0x51, 0x96, 0xd4, 0x0d, 0xba, 0xa5, 0x5b, 0x82, 0x10, 0xa7, 0x7a, 0x5d, 0x00, 0x91, 0x5f, 0x2c, 0x4e, 0xa6, 0x9e, 0xab, 0x55, 0x31, 0x06, 0x5b, 0xdc, 0xf1, 0x7b, 0xfb, 0x3c, 0xb5, 0x5a, 0x02, 0xe4, 0x1a, 0x57, 0xc7, 0xf6, 0x94, 0xc3, 0x83, 0xad, 0x28, 0x9f, 0x90, 0x0f, 0xbd, 0x65, 0x6c, 0x22, 0x33, 0xa9, 0x3c, 0x92, 0xe9, 0x33, 0xe7, 0xa2, 0x6f, 0x54, 0xcb, 0xb5, 0x6f, 0x0a, 0xd8, 0x75, 0xc5, 0x1b, 0xb0,
2472
};
2473
static const u8 ecccdh_SECP384R1_7_test_vector_shared_secret[] = {
2474
0xd0, 0x6a, 0x56, 0x8b, 0xf2, 0x33, 0x6b, 0x90, 0xcb, 0xac, 0x32, 0x51, 0x61, 0xbe, 0x76, 0x95, 0xea, 0xcb, 0x22, 0x95, 0xf5, 0x99, 0x50, 0x0d, 0x78, 0x7f, 0x07, 0x26, 0x12, 0xac, 0xa3, 0x13, 0xee, 0x5d, 0x87, 0x4f, 0x80, 0x7d, 0xde, 0xf6, 0xc1, 0xf0, 0x23, 0xfe, 0x2b, 0x6e, 0x7c, 0xd0,
2475
};
2476
static const ecdh_test_case ecccdh_SECP384R1_7_test_case = {
2477
.name = "ECCCDH/SECP384R1 7",
2478
.ecdh_type = ECCCDH,
2479
.ec_str_p = &secp384r1_str_params,
2480
.our_priv_key = ecccdh_SECP384R1_7_test_vector_our_priv_key,
2481
.our_priv_key_len = sizeof(ecccdh_SECP384R1_7_test_vector_our_priv_key),
2482
.peer_pub_key = ecccdh_SECP384R1_7_test_vector_peer_pub_key,
2483
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_7_test_vector_peer_pub_key),
2484
.exp_our_pub_key = ecccdh_SECP384R1_7_test_vector_our_pub_key,
2485
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_7_test_vector_our_pub_key),
2486
.exp_shared_secret = ecccdh_SECP384R1_7_test_vector_shared_secret,
2487
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_7_test_vector_shared_secret),
2488
};
2489
#endif /* WITH_CURVE_SECP384R1 */
2490
2491
#ifdef WITH_CURVE_SECP384R1
2492
#define ECCCDH_SECP384R1_SELF_TEST_8
2493
/*** Tests for ECCCDH/SECP384R1 ***/
2494
static const u8 ecccdh_SECP384R1_8_test_vector_our_priv_key[] = {
2495
0x9e, 0xfb, 0x87, 0xdd, 0xc6, 0x1d, 0x43, 0xc4, 0x82, 0xba, 0x66, 0xe1, 0xb1, 0x43, 0xae, 0xf6, 0x78, 0xfb, 0xd0, 0xd1, 0xbe, 0xbc, 0x20, 0x00, 0x94, 0x1f, 0xab, 0xe6, 0x77, 0xfe, 0x5b, 0x70, 0x6b, 0xf7, 0x8f, 0xce, 0x36, 0xd1, 0x00, 0xb1, 0x7c, 0xc7, 0x87, 0xea, 0xd7, 0x4b, 0xbc, 0xa2,
2496
};
2497
static const u8 ecccdh_SECP384R1_8_test_vector_peer_pub_key[] = {
2498
0x7c, 0xde, 0xc7, 0x7e, 0x07, 0x37, 0xea, 0x37, 0xc6, 0x7b, 0x89, 0xb7, 0x13, 0x7f, 0xe3, 0x88, 0x18, 0x01, 0x0f, 0x44, 0x64, 0x43, 0x8e, 0xe4, 0xd1, 0xd3, 0x5a, 0x0c, 0x48, 0x8c, 0xad, 0x3f, 0xde, 0x2f, 0x37, 0xd0, 0x08, 0x85, 0xd3, 0x6d, 0x3b, 0x79, 0x5b, 0x9f, 0x93, 0xd2, 0x3a, 0x67, 0x28, 0xc4, 0x2e, 0xe8, 0xd6, 0x02, 0x7c, 0x56, 0xcf, 0x97, 0x9b, 0xa4, 0xc2, 0x29, 0xfd, 0xb0, 0x1d, 0x23, 0x49, 0x44, 0xf8, 0xac, 0x43, 0x36, 0x50, 0x11, 0x2c, 0x3c, 0xf0, 0xf0, 0x28, 0x44, 0xe8, 0x88, 0xa3, 0x56, 0x9d, 0xfe, 0xf7, 0x82, 0x8a, 0x8a, 0x88, 0x45, 0x89, 0xaa, 0x05, 0x5e,
2499
};
2500
static const u8 ecccdh_SECP384R1_8_test_vector_our_pub_key[] = {
2501
0x4c, 0x34, 0xef, 0xee, 0x8f, 0x0c, 0x95, 0x56, 0x5d, 0x20, 0x65, 0xd1, 0xbb, 0xac, 0x2a, 0x2d, 0xd2, 0x5a, 0xe9, 0x64, 0x32, 0x0e, 0xb6, 0xbc, 0xce, 0xdc, 0x5f, 0x3a, 0x9b, 0x42, 0xa8, 0x81, 0xa1, 0xaf, 0xca, 0x1b, 0xb6, 0xb8, 0x80, 0x58, 0x4f, 0xa2, 0x7b, 0x01, 0xc1, 0x93, 0xcd, 0x92, 0xd8, 0xfb, 0x01, 0xdb, 0xf7, 0xcd, 0x0a, 0x38, 0x68, 0xc2, 0x6b, 0x95, 0x1f, 0x39, 0x3c, 0x3c, 0x56, 0xc2, 0x85, 0x8c, 0xee, 0x90, 0x1f, 0x77, 0x93, 0xff, 0x5d, 0x27, 0x19, 0x25, 0xd1, 0x3a, 0x41, 0xf8, 0xe5, 0x24, 0x09, 0xf4, 0xeb, 0xa1, 0x99, 0x0f, 0x33, 0xac, 0xb0, 0xba, 0xc6, 0x69,
2502
};
2503
static const u8 ecccdh_SECP384R1_8_test_vector_shared_secret[] = {
2504
0xbb, 0x3b, 0x1e, 0xda, 0x9c, 0x65, 0x60, 0xd8, 0x2f, 0xf5, 0xbe, 0xe4, 0x03, 0x33, 0x9f, 0x1e, 0x80, 0x34, 0x23, 0x38, 0xa9, 0x91, 0x34, 0x48, 0x53, 0xb5, 0x6b, 0x24, 0xf1, 0x09, 0xa4, 0xd9, 0x4b, 0x92, 0xf6, 0x54, 0xf0, 0x42, 0x5e, 0xdd, 0x4c, 0x20, 0x59, 0x03, 0xd7, 0x58, 0x61, 0x04,
2505
};
2506
static const ecdh_test_case ecccdh_SECP384R1_8_test_case = {
2507
.name = "ECCCDH/SECP384R1 8",
2508
.ecdh_type = ECCCDH,
2509
.ec_str_p = &secp384r1_str_params,
2510
.our_priv_key = ecccdh_SECP384R1_8_test_vector_our_priv_key,
2511
.our_priv_key_len = sizeof(ecccdh_SECP384R1_8_test_vector_our_priv_key),
2512
.peer_pub_key = ecccdh_SECP384R1_8_test_vector_peer_pub_key,
2513
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_8_test_vector_peer_pub_key),
2514
.exp_our_pub_key = ecccdh_SECP384R1_8_test_vector_our_pub_key,
2515
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_8_test_vector_our_pub_key),
2516
.exp_shared_secret = ecccdh_SECP384R1_8_test_vector_shared_secret,
2517
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_8_test_vector_shared_secret),
2518
};
2519
#endif /* WITH_CURVE_SECP384R1 */
2520
2521
#ifdef WITH_CURVE_SECP384R1
2522
#define ECCCDH_SECP384R1_SELF_TEST_9
2523
/*** Tests for ECCCDH/SECP384R1 ***/
2524
static const u8 ecccdh_SECP384R1_9_test_vector_our_priv_key[] = {
2525
0xd7, 0x87, 0xa5, 0x7f, 0xde, 0x22, 0xec, 0x65, 0x6a, 0x0a, 0x52, 0x5c, 0xf3, 0xc7, 0x38, 0xb3, 0x0d, 0x73, 0xaf, 0x61, 0xe7, 0x43, 0xea, 0x90, 0x89, 0x3e, 0xcb, 0x2d, 0x7b, 0x62, 0x2a, 0xdd, 0x2f, 0x94, 0xee, 0x25, 0xc2, 0x17, 0x14, 0x67, 0xaf, 0xb0, 0x93, 0xf3, 0xf8, 0x4d, 0x00, 0x18,
2526
};
2527
static const u8 ecccdh_SECP384R1_9_test_vector_peer_pub_key[] = {
2528
0x8e, 0xee, 0xa3, 0xa3, 0x19, 0xc8, 0xdf, 0x99, 0xfb, 0xc2, 0x9c, 0xb5, 0x5f, 0x24, 0x3a, 0x72, 0x0d, 0x95, 0x50, 0x95, 0x15, 0xee, 0x5c, 0xc5, 0x87, 0xa5, 0xc5, 0xae, 0x22, 0xfb, 0xbd, 0x00, 0x9e, 0x62, 0x6d, 0xb3, 0xe9, 0x11, 0xde, 0xf0, 0xb9, 0x9a, 0x4f, 0x7a, 0xe3, 0x04, 0xb1, 0xba, 0x73, 0x87, 0x7d, 0xc9, 0x4d, 0xb9, 0xad, 0xdd, 0xc0, 0xd9, 0xa4, 0xb2, 0x4e, 0x89, 0x76, 0xc2, 0x2d, 0x73, 0xc8, 0x44, 0x37, 0x0e, 0x1e, 0xe8, 0x57, 0xf8, 0xd1, 0xb1, 0x29, 0xa3, 0xbd, 0x5f, 0x63, 0xf4, 0x0c, 0xaf, 0x3b, 0xd0, 0x53, 0x3e, 0x38, 0xa5, 0xf5, 0x77, 0x70, 0x74, 0xff, 0x9e,
2529
};
2530
static const u8 ecccdh_SECP384R1_9_test_vector_our_pub_key[] = {
2531
0x17, 0x15, 0x46, 0x92, 0x3b, 0x87, 0xb2, 0xcb, 0xba, 0xd6, 0x64, 0xf0, 0x1c, 0xe9, 0x32, 0xbf, 0x09, 0xd6, 0xa6, 0x11, 0x81, 0x68, 0x67, 0x84, 0x46, 0xbf, 0xa9, 0xf0, 0x93, 0x86, 0x08, 0xcb, 0x46, 0x67, 0xa9, 0x8f, 0x4e, 0xc8, 0xac, 0x14, 0x62, 0x28, 0x5c, 0x25, 0x08, 0xf7, 0x48, 0x62, 0xfa, 0x41, 0xcb, 0x4d, 0xb6, 0x8a, 0xe7, 0x1f, 0x1f, 0x8a, 0x3e, 0x89, 0x39, 0xdc, 0x52, 0xc2, 0xde, 0xc6, 0x1a, 0x83, 0xc9, 0x83, 0xbe, 0xb2, 0xa0, 0x2b, 0xaf, 0x29, 0xec, 0x49, 0x27, 0x80, 0x88, 0x88, 0x2e, 0xd0, 0xcf, 0x56, 0xc7, 0x4b, 0x5c, 0x17, 0x3b, 0x55, 0x2c, 0xcf, 0x63, 0xcf,
2532
};
2533
static const u8 ecccdh_SECP384R1_9_test_vector_shared_secret[] = {
2534
0x1e, 0x97, 0xb6, 0x0a, 0xdd, 0x7c, 0xb3, 0x5c, 0x74, 0x03, 0xdd, 0x88, 0x4c, 0x0a, 0x75, 0x79, 0x5b, 0x76, 0x83, 0xff, 0xf8, 0xb4, 0x9f, 0x9d, 0x86, 0x72, 0xa8, 0x20, 0x6b, 0xfd, 0xcf, 0x0a, 0x10, 0x6b, 0x87, 0x68, 0xf9, 0x83, 0x25, 0x8c, 0x74, 0x16, 0x74, 0x22, 0xe4, 0x4e, 0x4d, 0x14,
2535
};
2536
static const ecdh_test_case ecccdh_SECP384R1_9_test_case = {
2537
.name = "ECCCDH/SECP384R1 9",
2538
.ecdh_type = ECCCDH,
2539
.ec_str_p = &secp384r1_str_params,
2540
.our_priv_key = ecccdh_SECP384R1_9_test_vector_our_priv_key,
2541
.our_priv_key_len = sizeof(ecccdh_SECP384R1_9_test_vector_our_priv_key),
2542
.peer_pub_key = ecccdh_SECP384R1_9_test_vector_peer_pub_key,
2543
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_9_test_vector_peer_pub_key),
2544
.exp_our_pub_key = ecccdh_SECP384R1_9_test_vector_our_pub_key,
2545
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_9_test_vector_our_pub_key),
2546
.exp_shared_secret = ecccdh_SECP384R1_9_test_vector_shared_secret,
2547
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_9_test_vector_shared_secret),
2548
};
2549
#endif /* WITH_CURVE_SECP384R1 */
2550
2551
#ifdef WITH_CURVE_SECP384R1
2552
#define ECCCDH_SECP384R1_SELF_TEST_10
2553
/*** Tests for ECCCDH/SECP384R1 ***/
2554
static const u8 ecccdh_SECP384R1_10_test_vector_our_priv_key[] = {
2555
0x83, 0xd7, 0x0f, 0x7b, 0x16, 0x4d, 0x9f, 0x4c, 0x22, 0x7c, 0x76, 0x70, 0x46, 0xb2, 0x0e, 0xb3, 0x4d, 0xfc, 0x77, 0x8f, 0x53, 0x87, 0xe3, 0x2e, 0x83, 0x4b, 0x1e, 0x6d, 0xae, 0xc2, 0x0e, 0xdb, 0x8c, 0xa5, 0xbb, 0x41, 0x92, 0x09, 0x3f, 0x54, 0x3b, 0x68, 0xe6, 0xae, 0xb7, 0xce, 0x78, 0x8b,
2556
};
2557
static const u8 ecccdh_SECP384R1_10_test_vector_peer_pub_key[] = {
2558
0xa7, 0x21, 0xf6, 0xa2, 0xd4, 0x52, 0x74, 0x11, 0x83, 0x4b, 0x13, 0xd4, 0xd3, 0xa3, 0x3c, 0x29, 0xbe, 0xb8, 0x3a, 0xb7, 0x68, 0x24, 0x65, 0xc6, 0xcb, 0xaf, 0x66, 0x24, 0xac, 0xa6, 0xea, 0x58, 0xc3, 0x0e, 0xb0, 0xf2, 0x9d, 0xd8, 0x42, 0x88, 0x66, 0x95, 0x40, 0x0d, 0x72, 0x54, 0xf2, 0x0f, 0x14, 0xba, 0x6e, 0x26, 0x35, 0x51, 0x09, 0xad, 0x35, 0x12, 0x93, 0x66, 0xd5, 0xe3, 0xa6, 0x40, 0xae, 0x79, 0x85, 0x05, 0xa7, 0xfa, 0x55, 0xa9, 0x6a, 0x36, 0xb5, 0xda, 0xd3, 0x3d, 0xe0, 0x04, 0x74, 0xf6, 0x67, 0x0f, 0x52, 0x22, 0x14, 0xdd, 0x79, 0x52, 0x14, 0x0a, 0xb0, 0xa7, 0xeb, 0x68,
2559
};
2560
static const u8 ecccdh_SECP384R1_10_test_vector_our_pub_key[] = {
2561
0x57, 0xcd, 0x77, 0x0f, 0x3b, 0xbc, 0xbe, 0x0c, 0x78, 0xc7, 0x70, 0xea, 0xb0, 0xb1, 0x69, 0xbc, 0x45, 0xe1, 0x39, 0xf8, 0x63, 0x78, 0xff, 0xae, 0x1c, 0x2b, 0x16, 0x96, 0x67, 0x27, 0xc2, 0xf2, 0xeb, 0x72, 0x45, 0x72, 0xb8, 0xf3, 0xeb, 0x22, 0x8d, 0x13, 0x0d, 0xb4, 0xff, 0x86, 0x2c, 0x63, 0x7e, 0xc5, 0xc8, 0x81, 0x3b, 0x68, 0x55, 0x58, 0xd8, 0x3e, 0x92, 0x4f, 0x14, 0xbc, 0x71, 0x9f, 0x6e, 0xb7, 0xae, 0x0c, 0xbb, 0x2c, 0x47, 0x42, 0x27, 0xc5, 0xbd, 0xa8, 0x86, 0x37, 0xa4, 0xf2, 0x6c, 0x64, 0x81, 0x79, 0x29, 0xaf, 0x99, 0x95, 0x92, 0xda, 0x6f, 0x78, 0x74, 0x90, 0x33, 0x2f,
2562
};
2563
static const u8 ecccdh_SECP384R1_10_test_vector_shared_secret[] = {
2564
0x10, 0x23, 0x47, 0x88, 0x40, 0xe5, 0x47, 0x75, 0xbf, 0xc6, 0x92, 0x93, 0xa3, 0xcf, 0x97, 0xf5, 0xbc, 0x91, 0x47, 0x26, 0x45, 0x5c, 0x66, 0x53, 0x8e, 0xb5, 0x62, 0x3e, 0x21, 0x8f, 0xee, 0xf7, 0xdf, 0x4b, 0xef, 0xa2, 0x3e, 0x09, 0xd7, 0x71, 0x45, 0xad, 0x57, 0x7d, 0xb3, 0x2b, 0x41, 0xf9,
2565
};
2566
static const ecdh_test_case ecccdh_SECP384R1_10_test_case = {
2567
.name = "ECCCDH/SECP384R1 10",
2568
.ecdh_type = ECCCDH,
2569
.ec_str_p = &secp384r1_str_params,
2570
.our_priv_key = ecccdh_SECP384R1_10_test_vector_our_priv_key,
2571
.our_priv_key_len = sizeof(ecccdh_SECP384R1_10_test_vector_our_priv_key),
2572
.peer_pub_key = ecccdh_SECP384R1_10_test_vector_peer_pub_key,
2573
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_10_test_vector_peer_pub_key),
2574
.exp_our_pub_key = ecccdh_SECP384R1_10_test_vector_our_pub_key,
2575
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_10_test_vector_our_pub_key),
2576
.exp_shared_secret = ecccdh_SECP384R1_10_test_vector_shared_secret,
2577
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_10_test_vector_shared_secret),
2578
};
2579
#endif /* WITH_CURVE_SECP384R1 */
2580
2581
#ifdef WITH_CURVE_SECP384R1
2582
#define ECCCDH_SECP384R1_SELF_TEST_11
2583
/*** Tests for ECCCDH/SECP384R1 ***/
2584
static const u8 ecccdh_SECP384R1_11_test_vector_our_priv_key[] = {
2585
0x8f, 0x55, 0x8e, 0x05, 0x81, 0x8b, 0x88, 0xed, 0x38, 0x3d, 0x5f, 0xca, 0x96, 0x2e, 0x53, 0x41, 0x3d, 0xb1, 0xa0, 0xe4, 0x63, 0x7e, 0xda, 0x19, 0x4f, 0x76, 0x19, 0x44, 0xcb, 0xea, 0x11, 0x4a, 0xb9, 0xd5, 0xda, 0x17, 0x5a, 0x7d, 0x57, 0x88, 0x25, 0x50, 0xb0, 0xe4, 0x32, 0xf3, 0x95, 0xa9,
2586
};
2587
static const u8 ecccdh_SECP384R1_11_test_vector_peer_pub_key[] = {
2588
0xd8, 0x82, 0xa8, 0x50, 0x5c, 0x2d, 0x5c, 0xb9, 0xb8, 0x85, 0x1f, 0xc6, 0x76, 0x67, 0x7b, 0xb0, 0x08, 0x76, 0x81, 0xad, 0x53, 0xfa, 0xce, 0xba, 0x17, 0x38, 0x28, 0x6b, 0x45, 0x82, 0x75, 0x61, 0xe7, 0xda, 0x37, 0xb8, 0x80, 0x27, 0x6c, 0x65, 0x6c, 0xfc, 0x38, 0xb3, 0x2a, 0xde, 0x84, 0x7e, 0x34, 0xb3, 0x14, 0xbd, 0xc1, 0x34, 0x57, 0x56, 0x54, 0x57, 0x3c, 0xff, 0xaf, 0x40, 0x44, 0x5d, 0xa2, 0xe6, 0xaa, 0xf9, 0x87, 0xf7, 0xe9, 0x13, 0xcd, 0x4c, 0x30, 0x91, 0x52, 0x30, 0x58, 0x98, 0x4a, 0x25, 0xd8, 0xf2, 0x1d, 0xa8, 0x32, 0x61, 0x92, 0x45, 0x6c, 0x6a, 0x0f, 0xa5, 0xf6, 0x0c,
2589
};
2590
static const u8 ecccdh_SECP384R1_11_test_vector_our_pub_key[] = {
2591
0x9a, 0x2f, 0x57, 0xf4, 0x86, 0x7c, 0xe7, 0x53, 0xd7, 0x2b, 0x0d, 0x95, 0x19, 0x5d, 0xf6, 0xf9, 0x6c, 0x1f, 0xae, 0x93, 0x4f, 0x60, 0x2e, 0xfd, 0x7b, 0x6a, 0x54, 0x58, 0x2f, 0x55, 0x6c, 0xfa, 0x53, 0x9d, 0x89, 0x00, 0x5c, 0xa2, 0xed, 0xac, 0x08, 0xad, 0x9b, 0x72, 0xdd, 0x1f, 0x60, 0xba, 0xd9, 0xb9, 0x4e, 0xe8, 0x2d, 0xa9, 0xcc, 0x60, 0x1f, 0x34, 0x60, 0x44, 0x99, 0x8b, 0xa3, 0x87, 0xae, 0xe5, 0x64, 0x04, 0xdc, 0x6e, 0xcc, 0x8a, 0xb2, 0xb5, 0x90, 0x44, 0x33, 0x19, 0xd0, 0xb2, 0xb6, 0x17, 0x6f, 0x9d, 0x0e, 0xac, 0x2d, 0x44, 0x67, 0x8e, 0xd5, 0x61, 0x60, 0x7d, 0x09, 0xa9,
2592
};
2593
static const u8 ecccdh_SECP384R1_11_test_vector_shared_secret[] = {
2594
0x6a, 0xd6, 0xb9, 0xdc, 0x8a, 0x6c, 0xf0, 0xd3, 0x69, 0x1c, 0x50, 0x1c, 0xbb, 0x96, 0x78, 0x67, 0xf6, 0xe4, 0xbb, 0xb7, 0x64, 0xb6, 0x0d, 0xbf, 0xf8, 0xfc, 0xff, 0x3e, 0xd4, 0x2d, 0xbb, 0xa3, 0x9d, 0x63, 0xcf, 0x32, 0x5b, 0x4b, 0x40, 0x78, 0x85, 0x84, 0x95, 0xdd, 0xee, 0x75, 0xf9, 0x54,
2595
};
2596
static const ecdh_test_case ecccdh_SECP384R1_11_test_case = {
2597
.name = "ECCCDH/SECP384R1 11",
2598
.ecdh_type = ECCCDH,
2599
.ec_str_p = &secp384r1_str_params,
2600
.our_priv_key = ecccdh_SECP384R1_11_test_vector_our_priv_key,
2601
.our_priv_key_len = sizeof(ecccdh_SECP384R1_11_test_vector_our_priv_key),
2602
.peer_pub_key = ecccdh_SECP384R1_11_test_vector_peer_pub_key,
2603
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_11_test_vector_peer_pub_key),
2604
.exp_our_pub_key = ecccdh_SECP384R1_11_test_vector_our_pub_key,
2605
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_11_test_vector_our_pub_key),
2606
.exp_shared_secret = ecccdh_SECP384R1_11_test_vector_shared_secret,
2607
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_11_test_vector_shared_secret),
2608
};
2609
#endif /* WITH_CURVE_SECP384R1 */
2610
2611
#ifdef WITH_CURVE_SECP384R1
2612
#define ECCCDH_SECP384R1_SELF_TEST_12
2613
/*** Tests for ECCCDH/SECP384R1 ***/
2614
static const u8 ecccdh_SECP384R1_12_test_vector_our_priv_key[] = {
2615
0x0f, 0x5d, 0xee, 0x0a, 0xff, 0xa7, 0xbb, 0xf2, 0x39, 0xd5, 0xdf, 0xf3, 0x29, 0x87, 0xeb, 0xb7, 0xcf, 0x84, 0xfc, 0xce, 0xed, 0x64, 0x3e, 0x1d, 0x3c, 0x62, 0xd0, 0xb3, 0x35, 0x2a, 0xec, 0x23, 0xb6, 0xe5, 0xac, 0x7f, 0xa4, 0x10, 0x5c, 0x8c, 0xb2, 0x61, 0x26, 0xad, 0x2d, 0x18, 0x92, 0xcb,
2616
};
2617
static const u8 ecccdh_SECP384R1_12_test_vector_peer_pub_key[] = {
2618
0x81, 0x5c, 0x9d, 0x77, 0x3d, 0xbf, 0x5f, 0xb6, 0xa1, 0xb8, 0x67, 0x99, 0x96, 0x62, 0x47, 0xf4, 0x00, 0x6a, 0x23, 0xc9, 0x2e, 0x68, 0xc5, 0x5e, 0x9e, 0xaa, 0x99, 0x8b, 0x17, 0xd8, 0x83, 0x2d, 0xd4, 0xd8, 0x4d, 0x92, 0x7d, 0x83, 0x1d, 0x4f, 0x68, 0xda, 0xc6, 0x7c, 0x64, 0x88, 0x21, 0x9f, 0xe7, 0x92, 0x69, 0x94, 0x8b, 0x26, 0x11, 0x48, 0x45, 0x60, 0xfd, 0x49, 0x0f, 0xee, 0xc8, 0x87, 0xcb, 0x55, 0xef, 0x99, 0xa4, 0xb5, 0x24, 0x88, 0x0f, 0xa7, 0x49, 0x9d, 0x6a, 0x07, 0x28, 0x3a, 0xae, 0x2a, 0xfa, 0x33, 0xfe, 0xab, 0x97, 0xde, 0xca, 0x40, 0xbc, 0x60, 0x6c, 0x4d, 0x87, 0x64,
2619
};
2620
static const u8 ecccdh_SECP384R1_12_test_vector_our_pub_key[] = {
2621
0x23, 0x34, 0x6b, 0xdf, 0xbc, 0x9d, 0x7c, 0x7c, 0x73, 0x6e, 0x02, 0xbd, 0xf6, 0x07, 0x67, 0x1f, 0xf6, 0x08, 0x2f, 0xdd, 0x27, 0x33, 0x4a, 0x8b, 0xc7, 0x5f, 0x3b, 0x23, 0x68, 0x1e, 0xbe, 0x61, 0x4d, 0x05, 0x97, 0xdd, 0x61, 0x4f, 0xae, 0x58, 0x67, 0x7c, 0x83, 0x5a, 0x9f, 0x0b, 0x27, 0x3b, 0x82, 0xba, 0x36, 0x29, 0x0d, 0x2f, 0x94, 0xdb, 0x41, 0x47, 0x9e, 0xb4, 0x5a, 0xb4, 0xea, 0xf6, 0x79, 0x28, 0xa2, 0x31, 0x51, 0x38, 0xd5, 0x9e, 0xec, 0xc9, 0xb5, 0x28, 0x5d, 0xfd, 0xdd, 0x67, 0x14, 0xf7, 0x75, 0x57, 0x21, 0x6e, 0xa4, 0x4c, 0xc6, 0xfc, 0x11, 0x9d, 0x82, 0x43, 0xef, 0xaf,
2622
};
2623
static const u8 ecccdh_SECP384R1_12_test_vector_shared_secret[] = {
2624
0xcc, 0x9e, 0x06, 0x35, 0x66, 0xd4, 0x6b, 0x35, 0x7b, 0x3f, 0xca, 0xe2, 0x18, 0x27, 0x37, 0x73, 0x31, 0xe5, 0xe2, 0x90, 0xa3, 0x6e, 0x60, 0xcd, 0x7c, 0x39, 0x10, 0x2b, 0x82, 0x8a, 0xe0, 0xb9, 0x18, 0xdc, 0x5a, 0x02, 0x21, 0x6b, 0x07, 0xfe, 0x6f, 0x19, 0x58, 0xd8, 0x34, 0xe4, 0x24, 0x37,
2625
};
2626
static const ecdh_test_case ecccdh_SECP384R1_12_test_case = {
2627
.name = "ECCCDH/SECP384R1 12",
2628
.ecdh_type = ECCCDH,
2629
.ec_str_p = &secp384r1_str_params,
2630
.our_priv_key = ecccdh_SECP384R1_12_test_vector_our_priv_key,
2631
.our_priv_key_len = sizeof(ecccdh_SECP384R1_12_test_vector_our_priv_key),
2632
.peer_pub_key = ecccdh_SECP384R1_12_test_vector_peer_pub_key,
2633
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_12_test_vector_peer_pub_key),
2634
.exp_our_pub_key = ecccdh_SECP384R1_12_test_vector_our_pub_key,
2635
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_12_test_vector_our_pub_key),
2636
.exp_shared_secret = ecccdh_SECP384R1_12_test_vector_shared_secret,
2637
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_12_test_vector_shared_secret),
2638
};
2639
#endif /* WITH_CURVE_SECP384R1 */
2640
2641
#ifdef WITH_CURVE_SECP384R1
2642
#define ECCCDH_SECP384R1_SELF_TEST_13
2643
/*** Tests for ECCCDH/SECP384R1 ***/
2644
static const u8 ecccdh_SECP384R1_13_test_vector_our_priv_key[] = {
2645
0x03, 0x7b, 0x63, 0x3b, 0x5b, 0x8b, 0xa8, 0x57, 0xc0, 0xfc, 0x85, 0x65, 0x68, 0x68, 0x23, 0x2e, 0x2f, 0xeb, 0xf5, 0x95, 0x78, 0x71, 0x83, 0x91, 0xb8, 0x1d, 0xa8, 0x54, 0x1a, 0x00, 0xbf, 0xe5, 0x3c, 0x30, 0xae, 0x04, 0x15, 0x18, 0x47, 0xf2, 0x74, 0x99, 0xf8, 0xd7, 0xab, 0xad, 0x8c, 0xf4,
2646
};
2647
static const u8 ecccdh_SECP384R1_13_test_vector_peer_pub_key[] = {
2648
0x1c, 0x0e, 0xed, 0xa7, 0xa2, 0xbe, 0x00, 0x0c, 0x5b, 0xdc, 0xda, 0x04, 0x78, 0xae, 0xd4, 0xdb, 0x73, 0x3d, 0x2a, 0x9e, 0x34, 0x12, 0x24, 0x37, 0x91, 0x23, 0xad, 0x84, 0x70, 0x30, 0xf2, 0x9e, 0x3b, 0x16, 0x8f, 0xa1, 0x8e, 0x89, 0xa3, 0xc0, 0xfb, 0xa2, 0xa6, 0xce, 0x1c, 0x28, 0xfc, 0x3b, 0xec, 0x8c, 0x1c, 0x83, 0xc1, 0x18, 0xc4, 0xdb, 0xea, 0x94, 0x27, 0x18, 0x69, 0xf2, 0xd8, 0x68, 0xeb, 0x65, 0xe8, 0xb4, 0x4e, 0x21, 0xe6, 0xf1, 0x4b, 0x0f, 0x4d, 0x9b, 0x38, 0xc0, 0x68, 0xda, 0xef, 0xa2, 0x71, 0x14, 0x25, 0x5b, 0x9a, 0x41, 0xd0, 0x84, 0xcc, 0x4a, 0x1a, 0xd8, 0x54, 0x56,
2649
};
2650
static const u8 ecccdh_SECP384R1_13_test_vector_our_pub_key[] = {
2651
0x88, 0x78, 0xac, 0x8a, 0x94, 0x7f, 0x7d, 0x5c, 0xb2, 0xb4, 0x7a, 0xad, 0x24, 0xfb, 0xb8, 0x21, 0x0d, 0x86, 0x12, 0x65, 0x85, 0x39, 0x9a, 0x28, 0x71, 0xf8, 0x4a, 0xa9, 0xc5, 0xfd, 0xe3, 0x07, 0x4a, 0xe5, 0x40, 0xc6, 0xbf, 0x82, 0x27, 0x5c, 0xa8, 0x22, 0xd0, 0xfe, 0xb8, 0x62, 0xbc, 0x74, 0x63, 0x2f, 0x5c, 0xd2, 0xf9, 0x00, 0xc2, 0x71, 0x1c, 0x32, 0xf8, 0x93, 0x07, 0x28, 0xeb, 0x64, 0x7d, 0x31, 0xed, 0xd8, 0xd6, 0x50, 0xf9, 0x65, 0x4e, 0x7d, 0x33, 0xe5, 0xed, 0x1b, 0x47, 0x54, 0x89, 0xd0, 0x8d, 0xaa, 0x30, 0xd8, 0xcb, 0xcb, 0xa6, 0xbf, 0xc3, 0xb6, 0x0d, 0x9b, 0x5a, 0x37,
2652
};
2653
static const u8 ecccdh_SECP384R1_13_test_vector_shared_secret[] = {
2654
0xde, 0xff, 0x7f, 0x03, 0xbd, 0x09, 0x86, 0x5b, 0xaf, 0x94, 0x5e, 0x73, 0xed, 0xff, 0x6d, 0x51, 0x22, 0xc0, 0x3f, 0xb5, 0x61, 0xdb, 0x87, 0xde, 0xc8, 0x66, 0x2e, 0x09, 0xbe, 0xd4, 0x34, 0x0b, 0x28, 0xa9, 0xef, 0xe1, 0x18, 0x33, 0x7b, 0xb7, 0xd3, 0xd4, 0xf7, 0xf5, 0x68, 0x63, 0x5f, 0xf9,
2655
};
2656
static const ecdh_test_case ecccdh_SECP384R1_13_test_case = {
2657
.name = "ECCCDH/SECP384R1 13",
2658
.ecdh_type = ECCCDH,
2659
.ec_str_p = &secp384r1_str_params,
2660
.our_priv_key = ecccdh_SECP384R1_13_test_vector_our_priv_key,
2661
.our_priv_key_len = sizeof(ecccdh_SECP384R1_13_test_vector_our_priv_key),
2662
.peer_pub_key = ecccdh_SECP384R1_13_test_vector_peer_pub_key,
2663
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_13_test_vector_peer_pub_key),
2664
.exp_our_pub_key = ecccdh_SECP384R1_13_test_vector_our_pub_key,
2665
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_13_test_vector_our_pub_key),
2666
.exp_shared_secret = ecccdh_SECP384R1_13_test_vector_shared_secret,
2667
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_13_test_vector_shared_secret),
2668
};
2669
#endif /* WITH_CURVE_SECP384R1 */
2670
2671
#ifdef WITH_CURVE_SECP384R1
2672
#define ECCCDH_SECP384R1_SELF_TEST_14
2673
/*** Tests for ECCCDH/SECP384R1 ***/
2674
static const u8 ecccdh_SECP384R1_14_test_vector_our_priv_key[] = {
2675
0xe3, 0xd0, 0x71, 0x06, 0xbe, 0xdc, 0xc0, 0x96, 0xe7, 0xd9, 0x16, 0x30, 0xff, 0xd3, 0x09, 0x4d, 0xf2, 0xc7, 0x85, 0x9d, 0xb8, 0xd7, 0xed, 0xbb, 0x2e, 0x37, 0xb4, 0xac, 0x47, 0xf4, 0x29, 0xa6, 0x37, 0xd0, 0x6a, 0x67, 0xd2, 0xfb, 0xa3, 0x38, 0x38, 0x76, 0x4e, 0xf2, 0x03, 0x46, 0x49, 0x91,
2676
};
2677
static const u8 ecccdh_SECP384R1_14_test_vector_peer_pub_key[] = {
2678
0xc9, 0x5c, 0x18, 0x5e, 0x25, 0x6b, 0xf9, 0x97, 0xf3, 0x0b, 0x31, 0x15, 0x48, 0xae, 0x7f, 0x76, 0x8a, 0x38, 0xde, 0xe4, 0x3e, 0xee, 0xef, 0x43, 0x08, 0x3f, 0x30, 0x77, 0xbe, 0x70, 0xe2, 0xbf, 0x39, 0xac, 0x1d, 0x4d, 0xaf, 0x36, 0x0c, 0x51, 0x4c, 0x8c, 0x6b, 0xe6, 0x23, 0x44, 0x3d, 0x1a, 0x3e, 0x63, 0xa6, 0x63, 0xea, 0xf7, 0x5d, 0x8a, 0x76, 0x5a, 0xb2, 0xb9, 0xa3, 0x55, 0x13, 0xd7, 0x93, 0x3f, 0xa5, 0xe2, 0x64, 0x20, 0xa5, 0x24, 0x45, 0x50, 0xec, 0x6c, 0x3b, 0x6f, 0x03, 0x3b, 0x96, 0xdb, 0x2a, 0xca, 0x3d, 0x6a, 0xc6, 0xaa, 0xb0, 0x52, 0xce, 0x92, 0x95, 0x95, 0xae, 0xa5,
2679
};
2680
static const u8 ecccdh_SECP384R1_14_test_vector_our_pub_key[] = {
2681
0xe7, 0x4a, 0x1a, 0x2b, 0x85, 0xf1, 0xcb, 0xf8, 0xdb, 0xbd, 0xf0, 0x50, 0xcf, 0x1a, 0xff, 0x8a, 0xcb, 0x02, 0xfd, 0xa2, 0xfb, 0x65, 0x91, 0xf9, 0xd3, 0xcf, 0xe4, 0xe7, 0x9d, 0x0a, 0xe9, 0x38, 0xa9, 0xc1, 0x48, 0x3e, 0x7b, 0x75, 0xf8, 0xdb, 0x24, 0x50, 0x5d, 0x65, 0x06, 0x5c, 0xdb, 0x18, 0x17, 0x73, 0xee, 0x59, 0x18, 0x22, 0xf7, 0xab, 0xaa, 0x85, 0x6a, 0x1a, 0x60, 0xbc, 0x0a, 0x52, 0x03, 0x54, 0x8d, 0xbd, 0x1c, 0xb5, 0x02, 0x54, 0x66, 0xef, 0xf8, 0x48, 0x1b, 0xd0, 0x76, 0x14, 0xea, 0xa0, 0x4a, 0x16, 0xc3, 0xdb, 0x76, 0x90, 0x59, 0x13, 0xe9, 0x72, 0xa5, 0xb6, 0xb5, 0x9d,
2682
};
2683
static const u8 ecccdh_SECP384R1_14_test_vector_shared_secret[] = {
2684
0xc8, 0xb1, 0x03, 0x8f, 0x73, 0x5a, 0xd3, 0xbb, 0x3e, 0x46, 0x37, 0xc3, 0xe4, 0x7e, 0xab, 0x48, 0x76, 0x37, 0x91, 0x1a, 0x6b, 0x79, 0x50, 0xa4, 0xe4, 0x61, 0x94, 0x83, 0x29, 0xd3, 0x92, 0x3b, 0x96, 0x9e, 0x5d, 0xb6, 0x63, 0x67, 0x56, 0x23, 0x61, 0x1a, 0x45, 0x7f, 0xcd, 0xa3, 0x5a, 0x71,
2685
};
2686
static const ecdh_test_case ecccdh_SECP384R1_14_test_case = {
2687
.name = "ECCCDH/SECP384R1 14",
2688
.ecdh_type = ECCCDH,
2689
.ec_str_p = &secp384r1_str_params,
2690
.our_priv_key = ecccdh_SECP384R1_14_test_vector_our_priv_key,
2691
.our_priv_key_len = sizeof(ecccdh_SECP384R1_14_test_vector_our_priv_key),
2692
.peer_pub_key = ecccdh_SECP384R1_14_test_vector_peer_pub_key,
2693
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_14_test_vector_peer_pub_key),
2694
.exp_our_pub_key = ecccdh_SECP384R1_14_test_vector_our_pub_key,
2695
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_14_test_vector_our_pub_key),
2696
.exp_shared_secret = ecccdh_SECP384R1_14_test_vector_shared_secret,
2697
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_14_test_vector_shared_secret),
2698
};
2699
#endif /* WITH_CURVE_SECP384R1 */
2700
2701
#ifdef WITH_CURVE_SECP384R1
2702
#define ECCCDH_SECP384R1_SELF_TEST_15
2703
/*** Tests for ECCCDH/SECP384R1 ***/
2704
static const u8 ecccdh_SECP384R1_15_test_vector_our_priv_key[] = {
2705
0xf3, 0xf9, 0xb0, 0xc6, 0x5a, 0x49, 0xa5, 0x06, 0x63, 0x2c, 0x8a, 0x45, 0xb1, 0x0f, 0x66, 0xb5, 0x31, 0x6f, 0x9e, 0xeb, 0x06, 0xfa, 0xe2, 0x18, 0xf2, 0xda, 0x62, 0x33, 0x3f, 0x99, 0x90, 0x51, 0x17, 0xb1, 0x41, 0xc7, 0x60, 0xe8, 0x97, 0x4e, 0xfc, 0x4a, 0xf1, 0x05, 0x70, 0x63, 0x57, 0x91,
2706
};
2707
static const u8 ecccdh_SECP384R1_15_test_vector_peer_pub_key[] = {
2708
0x34, 0x97, 0x23, 0x8a, 0x7e, 0x6a, 0xd1, 0x66, 0xdf, 0x2d, 0xac, 0x03, 0x9a, 0xa4, 0xda, 0xc8, 0xd1, 0x7a, 0xa9, 0x25, 0xe7, 0xc7, 0x63, 0x1e, 0xb3, 0xb5, 0x6e, 0x3a, 0xaa, 0x1c, 0x54, 0x5f, 0xcd, 0x54, 0xd2, 0xe5, 0x98, 0x58, 0x07, 0x91, 0x0f, 0xb2, 0x02, 0xb1, 0xfc, 0x19, 0x1d, 0x2a, 0xa4, 0x9e, 0x5c, 0x48, 0x7d, 0xcc, 0x7a, 0xa4, 0x0a, 0x8f, 0x23, 0x4c, 0x97, 0x94, 0x46, 0x04, 0x0d, 0x91, 0x74, 0xe3, 0xad, 0x35, 0x7d, 0x40, 0x4d, 0x77, 0x65, 0x18, 0x31, 0x95, 0xae, 0xd3, 0xf9, 0x13, 0x64, 0x1b, 0x90, 0xc8, 0x1a, 0x30, 0x6e, 0xbf, 0x0d, 0x89, 0x13, 0x86, 0x13, 0x16,
2709
};
2710
static const u8 ecccdh_SECP384R1_15_test_vector_our_pub_key[] = {
2711
0xa4, 0xad, 0x77, 0xaa, 0x7d, 0x86, 0xe5, 0x36, 0x11, 0x18, 0xa6, 0xb9, 0x21, 0x71, 0x0c, 0x82, 0x07, 0x21, 0x21, 0x07, 0x12, 0xf4, 0xc3, 0x47, 0x98, 0x5f, 0xde, 0xe5, 0x8a, 0xa4, 0xef, 0xfa, 0x1e, 0x28, 0xbe, 0x80, 0xa1, 0x7b, 0x12, 0x0b, 0x13, 0x9f, 0x96, 0x30, 0x0f, 0x89, 0xb4, 0x9b, 0x1d, 0xdf, 0x22, 0xe0, 0x7e, 0x03, 0xf1, 0x56, 0x0d, 0x8f, 0x45, 0xa4, 0x80, 0x09, 0x45, 0x60, 0xdb, 0xa9, 0xfa, 0xe7, 0xf9, 0x53, 0x11, 0x30, 0xc1, 0xb5, 0x7e, 0xbb, 0x95, 0x98, 0x24, 0x96, 0x52, 0x4f, 0x31, 0xd3, 0x79, 0x77, 0x93, 0x39, 0x6f, 0xa8, 0x23, 0xf2, 0x2b, 0xdb, 0x43, 0x28,
2712
};
2713
static const u8 ecccdh_SECP384R1_15_test_vector_shared_secret[] = {
2714
0xd3, 0x37, 0xea, 0xa3, 0x2b, 0x9f, 0x71, 0x6b, 0x87, 0x47, 0xb0, 0x05, 0xb9, 0x7a, 0x55, 0x3c, 0x59, 0xda, 0xb0, 0xc5, 0x1d, 0xf4, 0x1a, 0x2d, 0x49, 0x03, 0x9c, 0xda, 0xe7, 0x05, 0xaa, 0x75, 0xc7, 0xb9, 0xe7, 0xbc, 0x0b, 0x6a, 0x0e, 0x8c, 0x57, 0x8c, 0x90, 0x2b, 0xc4, 0xff, 0xf2, 0x3e,
2715
};
2716
static const ecdh_test_case ecccdh_SECP384R1_15_test_case = {
2717
.name = "ECCCDH/SECP384R1 15",
2718
.ecdh_type = ECCCDH,
2719
.ec_str_p = &secp384r1_str_params,
2720
.our_priv_key = ecccdh_SECP384R1_15_test_vector_our_priv_key,
2721
.our_priv_key_len = sizeof(ecccdh_SECP384R1_15_test_vector_our_priv_key),
2722
.peer_pub_key = ecccdh_SECP384R1_15_test_vector_peer_pub_key,
2723
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_15_test_vector_peer_pub_key),
2724
.exp_our_pub_key = ecccdh_SECP384R1_15_test_vector_our_pub_key,
2725
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_15_test_vector_our_pub_key),
2726
.exp_shared_secret = ecccdh_SECP384R1_15_test_vector_shared_secret,
2727
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_15_test_vector_shared_secret),
2728
};
2729
#endif /* WITH_CURVE_SECP384R1 */
2730
2731
#ifdef WITH_CURVE_SECP384R1
2732
#define ECCCDH_SECP384R1_SELF_TEST_16
2733
/*** Tests for ECCCDH/SECP384R1 ***/
2734
static const u8 ecccdh_SECP384R1_16_test_vector_our_priv_key[] = {
2735
0x59, 0xfc, 0xe7, 0xfa, 0xd7, 0xde, 0x28, 0xba, 0xc0, 0x23, 0x06, 0x90, 0xc9, 0x57, 0x10, 0xc7, 0x20, 0xe5, 0x28, 0xf9, 0xa4, 0xe5, 0x4d, 0x3a, 0x6a, 0x8c, 0xd5, 0xfc, 0x5c, 0x5f, 0x21, 0x63, 0x70, 0x31, 0xce, 0x1c, 0x5b, 0x4e, 0x3d, 0x39, 0x64, 0x7d, 0x8d, 0xcb, 0x9b, 0x79, 0x46, 0x64,
2736
};
2737
static const u8 ecccdh_SECP384R1_16_test_vector_peer_pub_key[] = {
2738
0x90, 0xa3, 0x47, 0x37, 0xd4, 0x5b, 0x1a, 0xa6, 0x5f, 0x74, 0xe0, 0xbd, 0x06, 0x59, 0xbc, 0x11, 0x8f, 0x8e, 0x4b, 0x77, 0x4b, 0x76, 0x19, 0x44, 0xff, 0xa6, 0x57, 0x3c, 0x6d, 0xf4, 0xf4, 0x1d, 0xec, 0x0d, 0x11, 0xb6, 0x97, 0xab, 0xd9, 0x34, 0xd3, 0x90, 0x87, 0x1d, 0x4b, 0x45, 0x32, 0x40, 0x9b, 0x59, 0x07, 0x19, 0xbb, 0x33, 0x07, 0xc1, 0x49, 0xa7, 0x81, 0x7b, 0xe3, 0x55, 0xd6, 0x84, 0x89, 0x3a, 0x30, 0x77, 0x64, 0xb5, 0x12, 0xee, 0xff, 0xe0, 0x7c, 0xb6, 0x99, 0xed, 0xb5, 0xa6, 0xff, 0xbf, 0x8d, 0x60, 0x32, 0xe6, 0xc7, 0x9d, 0x5e, 0x93, 0xe9, 0x42, 0x12, 0xc2, 0xaa, 0x4e,
2739
};
2740
static const u8 ecccdh_SECP384R1_16_test_vector_our_pub_key[] = {
2741
0x9c, 0x43, 0xbf, 0x97, 0x1e, 0xdf, 0x09, 0x40, 0x28, 0x76, 0xee, 0x74, 0x20, 0x95, 0x38, 0x1f, 0x78, 0xb1, 0xbd, 0x3a, 0xa3, 0x9b, 0x51, 0x32, 0xaf, 0x75, 0xdb, 0xfe, 0x7e, 0x98, 0xbd, 0x78, 0xbd, 0xe1, 0x0f, 0xe2, 0xe9, 0x03, 0xc2, 0xb6, 0x37, 0x9e, 0x1d, 0xee, 0xe1, 0x75, 0xa1, 0xb0, 0xa6, 0xc5, 0x8e, 0xce, 0xa5, 0xa4, 0x77, 0xbb, 0x01, 0xbd, 0x54, 0x3b, 0x33, 0x9f, 0x1c, 0xc4, 0x9f, 0x13, 0x71, 0xa2, 0xcd, 0xa4, 0xd4, 0x6e, 0xb4, 0xe5, 0x3e, 0x25, 0x05, 0x97, 0x94, 0x23, 0x51, 0xa9, 0x96, 0x65, 0xa1, 0x22, 0xff, 0xea, 0x9b, 0xde, 0x06, 0x36, 0xc3, 0x75, 0xda, 0xf2,
2742
};
2743
static const u8 ecccdh_SECP384R1_16_test_vector_shared_secret[] = {
2744
0x32, 0xd2, 0x92, 0xb6, 0x95, 0xa4, 0x48, 0x8e, 0x42, 0xa7, 0xb7, 0x92, 0x2e, 0x1a, 0xe5, 0x37, 0xd7, 0x6a, 0x3d, 0x21, 0xa0, 0xb2, 0xe3, 0x68, 0x75, 0xf6, 0x0e, 0x9f, 0x6d, 0x3e, 0x87, 0x79, 0xc2, 0xaf, 0xb3, 0xa4, 0x13, 0xb9, 0xdd, 0x79, 0xae, 0x18, 0xe7, 0x0b, 0x47, 0xd3, 0x37, 0xc1,
2745
};
2746
static const ecdh_test_case ecccdh_SECP384R1_16_test_case = {
2747
.name = "ECCCDH/SECP384R1 16",
2748
.ecdh_type = ECCCDH,
2749
.ec_str_p = &secp384r1_str_params,
2750
.our_priv_key = ecccdh_SECP384R1_16_test_vector_our_priv_key,
2751
.our_priv_key_len = sizeof(ecccdh_SECP384R1_16_test_vector_our_priv_key),
2752
.peer_pub_key = ecccdh_SECP384R1_16_test_vector_peer_pub_key,
2753
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_16_test_vector_peer_pub_key),
2754
.exp_our_pub_key = ecccdh_SECP384R1_16_test_vector_our_pub_key,
2755
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_16_test_vector_our_pub_key),
2756
.exp_shared_secret = ecccdh_SECP384R1_16_test_vector_shared_secret,
2757
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_16_test_vector_shared_secret),
2758
};
2759
#endif /* WITH_CURVE_SECP384R1 */
2760
2761
#ifdef WITH_CURVE_SECP384R1
2762
#define ECCCDH_SECP384R1_SELF_TEST_17
2763
/*** Tests for ECCCDH/SECP384R1 ***/
2764
static const u8 ecccdh_SECP384R1_17_test_vector_our_priv_key[] = {
2765
0x3e, 0x49, 0xfb, 0xf9, 0x50, 0xa4, 0x24, 0xc5, 0xd8, 0x02, 0x28, 0xdc, 0x4b, 0xc3, 0x5e, 0x9f, 0x6c, 0x6c, 0x0c, 0x1d, 0x04, 0x44, 0x09, 0x98, 0xda, 0x0a, 0x60, 0x9a, 0x87, 0x75, 0x75, 0xdb, 0xe4, 0x37, 0xd6, 0xa5, 0xce, 0xda, 0xa2, 0xdd, 0xd2, 0xa1, 0xa1, 0x7f, 0xd1, 0x12, 0xad, 0xed,
2766
};
2767
static const u8 ecccdh_SECP384R1_17_test_vector_peer_pub_key[] = {
2768
0xdd, 0xa5, 0x46, 0xac, 0xfc, 0x8f, 0x90, 0x3d, 0x11, 0xe2, 0xe3, 0x92, 0x06, 0x69, 0x63, 0x6d, 0x44, 0xb2, 0x06, 0x8a, 0xeb, 0x66, 0xff, 0x07, 0xaa, 0x26, 0x6f, 0x00, 0x30, 0xe1, 0x53, 0x5b, 0x0e, 0xd0, 0x20, 0x3c, 0xb8, 0xa4, 0x60, 0xac, 0x99, 0x0f, 0x13, 0x94, 0xfa, 0xf2, 0x2f, 0x1d, 0x15, 0xbb, 0xb2, 0x59, 0x79, 0x13, 0x03, 0x5f, 0xaa, 0xdf, 0x41, 0x34, 0x76, 0xf4, 0xc7, 0x0f, 0x72, 0x79, 0x76, 0x9a, 0x40, 0xc9, 0x86, 0xf4, 0x70, 0xc4, 0x27, 0xb4, 0xee, 0x49, 0x62, 0xab, 0xdf, 0x81, 0x73, 0xbb, 0xad, 0x81, 0x87, 0x47, 0x72, 0x92, 0x5f, 0xd3, 0x2f, 0x0b, 0x15, 0x9f,
2769
};
2770
static const u8 ecccdh_SECP384R1_17_test_vector_our_pub_key[] = {
2771
0x5a, 0x94, 0x95, 0x94, 0x22, 0x8b, 0x1a, 0x3d, 0x6f, 0x59, 0x9e, 0xb3, 0xdb, 0x0d, 0x06, 0x07, 0x0f, 0xbc, 0x55, 0x1c, 0x65, 0x7b, 0x58, 0x23, 0x4b, 0xa1, 0x64, 0xce, 0x3f, 0xe4, 0x15, 0xfa, 0x5f, 0x3e, 0xb8, 0x23, 0xc0, 0x8d, 0xc2, 0x9b, 0x8c, 0x34, 0x12, 0x19, 0xc7, 0x7b, 0x6b, 0x3d, 0x2b, 0xaa, 0xd4, 0x47, 0xc8, 0xc2, 0x90, 0xcf, 0xed, 0x25, 0xed, 0xd9, 0x03, 0x1c, 0x41, 0xd0, 0xb7, 0x69, 0x21, 0x45, 0x73, 0x27, 0xf4, 0x2d, 0xb3, 0x11, 0x22, 0xb8, 0x1f, 0x33, 0x7b, 0xbf, 0x0b, 0x10, 0x39, 0xec, 0x83, 0x0c, 0xe9, 0x06, 0x1a, 0x37, 0x61, 0x95, 0x3c, 0x75, 0xe4, 0xa8,
2772
};
2773
static const u8 ecccdh_SECP384R1_17_test_vector_shared_secret[] = {
2774
0x12, 0x20, 0xe7, 0xe6, 0xca, 0xd7, 0xb2, 0x5d, 0xf9, 0x8e, 0x5b, 0xbd, 0xcc, 0x6c, 0x0b, 0x65, 0xca, 0x6c, 0x2a, 0x50, 0xc5, 0xff, 0x6c, 0x41, 0xdc, 0xa7, 0x1e, 0x47, 0x56, 0x46, 0xfd, 0x48, 0x96, 0x15, 0x97, 0x9c, 0xa9, 0x2f, 0xb4, 0x38, 0x9a, 0xea, 0xde, 0xfd, 0xe7, 0x9a, 0x24, 0xf1,
2775
};
2776
static const ecdh_test_case ecccdh_SECP384R1_17_test_case = {
2777
.name = "ECCCDH/SECP384R1 17",
2778
.ecdh_type = ECCCDH,
2779
.ec_str_p = &secp384r1_str_params,
2780
.our_priv_key = ecccdh_SECP384R1_17_test_vector_our_priv_key,
2781
.our_priv_key_len = sizeof(ecccdh_SECP384R1_17_test_vector_our_priv_key),
2782
.peer_pub_key = ecccdh_SECP384R1_17_test_vector_peer_pub_key,
2783
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_17_test_vector_peer_pub_key),
2784
.exp_our_pub_key = ecccdh_SECP384R1_17_test_vector_our_pub_key,
2785
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_17_test_vector_our_pub_key),
2786
.exp_shared_secret = ecccdh_SECP384R1_17_test_vector_shared_secret,
2787
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_17_test_vector_shared_secret),
2788
};
2789
#endif /* WITH_CURVE_SECP384R1 */
2790
2791
#ifdef WITH_CURVE_SECP384R1
2792
#define ECCCDH_SECP384R1_SELF_TEST_18
2793
/*** Tests for ECCCDH/SECP384R1 ***/
2794
static const u8 ecccdh_SECP384R1_18_test_vector_our_priv_key[] = {
2795
0x50, 0xcc, 0xc1, 0xf7, 0x07, 0x6e, 0x92, 0xf4, 0x63, 0x8e, 0x85, 0xf2, 0xdb, 0x98, 0xe0, 0xb4, 0x83, 0xe6, 0xe2, 0x20, 0x4c, 0x92, 0xbd, 0xd4, 0x40, 0xa6, 0xde, 0xea, 0x04, 0xe3, 0x7a, 0x07, 0xc6, 0xe7, 0x27, 0x91, 0xc1, 0x90, 0xad, 0x4e, 0x4e, 0x86, 0xe0, 0x1e, 0xfb, 0xa8, 0x42, 0x69,
2796
};
2797
static const u8 ecccdh_SECP384R1_18_test_vector_peer_pub_key[] = {
2798
0x78, 0x8b, 0xe2, 0x33, 0x6c, 0x52, 0xf4, 0x45, 0x4d, 0x63, 0xee, 0x94, 0x4b, 0x1e, 0x49, 0xbf, 0xb6, 0x19, 0xa0, 0x83, 0x71, 0x04, 0x8e, 0x6d, 0xa9, 0x2e, 0x58, 0x4e, 0xae, 0x70, 0xbd, 0xe1, 0xf1, 0x71, 0xc4, 0xdf, 0x37, 0x8b, 0xd1, 0xf3, 0xc0, 0xab, 0x03, 0x04, 0x8a, 0x23, 0x78, 0x02, 0x46, 0x73, 0xeb, 0xd8, 0xdb, 0x60, 0x4e, 0xaf, 0x41, 0x71, 0x17, 0x48, 0xba, 0xb2, 0x96, 0x8a, 0x23, 0xca, 0x44, 0x76, 0xce, 0x14, 0x4e, 0x72, 0x82, 0x47, 0xf0, 0x8a, 0xf7, 0x52, 0x92, 0x91, 0x57, 0xb5, 0x83, 0x0f, 0x1e, 0x26, 0x06, 0x74, 0x66, 0xbd, 0xfa, 0x8b, 0x65, 0x14, 0x5a, 0x33,
2799
};
2800
static const u8 ecccdh_SECP384R1_18_test_vector_our_pub_key[] = {
2801
0x75, 0x6c, 0x07, 0xdf, 0x0c, 0xe3, 0x2c, 0x83, 0x9d, 0xac, 0x9f, 0xb4, 0x73, 0x3c, 0x9c, 0x28, 0xb7, 0x01, 0x13, 0xa6, 0x76, 0xa7, 0x05, 0x7c, 0x38, 0xd2, 0x23, 0xf2, 0x2a, 0x3a, 0x90, 0x95, 0xa8, 0xd5, 0x64, 0x65, 0x3a, 0xf5, 0x28, 0xe0, 0x4c, 0x7e, 0x18, 0x24, 0xbe, 0x4a, 0x65, 0x12, 0x17, 0xc2, 0xce, 0x69, 0x62, 0xcb, 0xd2, 0xa2, 0xe0, 0x66, 0x29, 0x7b, 0x39, 0xd5, 0x7d, 0xd9, 0xbb, 0x46, 0x80, 0xf0, 0x19, 0x1d, 0x39, 0x0f, 0x70, 0xb4, 0xe4, 0x61, 0x41, 0x9b, 0x29, 0x72, 0xce, 0x68, 0xad, 0x46, 0x12, 0x7f, 0xdd, 0xa6, 0xc3, 0x91, 0x95, 0x77, 0x4e, 0xa8, 0x6d, 0xf3,
2802
};
2803
static const u8 ecccdh_SECP384R1_18_test_vector_shared_secret[] = {
2804
0x79, 0x3b, 0xb9, 0xcd, 0x22, 0xa9, 0x3c, 0xf4, 0x68, 0xfa, 0xf8, 0x04, 0xa3, 0x8d, 0x12, 0xb7, 0x8c, 0xb1, 0x21, 0x89, 0xec, 0x67, 0x9d, 0xdd, 0x2e, 0x9a, 0xa2, 0x1f, 0xa9, 0xa5, 0xa0, 0xb0, 0x49, 0xab, 0x16, 0xa2, 0x35, 0x74, 0xfe, 0x04, 0xc1, 0xc3, 0xc0, 0x23, 0x43, 0xb9, 0x1b, 0xeb,
2805
};
2806
static const ecdh_test_case ecccdh_SECP384R1_18_test_case = {
2807
.name = "ECCCDH/SECP384R1 18",
2808
.ecdh_type = ECCCDH,
2809
.ec_str_p = &secp384r1_str_params,
2810
.our_priv_key = ecccdh_SECP384R1_18_test_vector_our_priv_key,
2811
.our_priv_key_len = sizeof(ecccdh_SECP384R1_18_test_vector_our_priv_key),
2812
.peer_pub_key = ecccdh_SECP384R1_18_test_vector_peer_pub_key,
2813
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_18_test_vector_peer_pub_key),
2814
.exp_our_pub_key = ecccdh_SECP384R1_18_test_vector_our_pub_key,
2815
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_18_test_vector_our_pub_key),
2816
.exp_shared_secret = ecccdh_SECP384R1_18_test_vector_shared_secret,
2817
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_18_test_vector_shared_secret),
2818
};
2819
#endif /* WITH_CURVE_SECP384R1 */
2820
2821
#ifdef WITH_CURVE_SECP384R1
2822
#define ECCCDH_SECP384R1_SELF_TEST_19
2823
/*** Tests for ECCCDH/SECP384R1 ***/
2824
static const u8 ecccdh_SECP384R1_19_test_vector_our_priv_key[] = {
2825
0x06, 0xf1, 0x32, 0xb7, 0x1f, 0x74, 0xd8, 0x7b, 0xf9, 0x98, 0x57, 0xe1, 0xe4, 0x35, 0x0a, 0x59, 0x4e, 0x5f, 0xe3, 0x55, 0x33, 0xb8, 0x88, 0x55, 0x2c, 0xec, 0xcb, 0xc0, 0xd8, 0x92, 0x3c, 0x90, 0x2e, 0x36, 0x14, 0x1d, 0x76, 0x91, 0xe2, 0x86, 0x31, 0xb8, 0xbc, 0x9b, 0xaf, 0xe5, 0xe0, 0x64,
2826
};
2827
static const u8 ecccdh_SECP384R1_19_test_vector_peer_pub_key[] = {
2828
0xd0, 0x9b, 0xb8, 0x22, 0xeb, 0x99, 0xe3, 0x80, 0x60, 0x95, 0x47, 0x47, 0xc8, 0x2b, 0xb3, 0x27, 0x8c, 0xf9, 0x6b, 0xbf, 0x36, 0xfe, 0xce, 0x34, 0x00, 0xf4, 0xc8, 0x73, 0x83, 0x8a, 0x40, 0xc1, 0x35, 0xeb, 0x3b, 0xab, 0xb9, 0x29, 0x3b, 0xd1, 0x00, 0x1b, 0xf3, 0xec, 0xde, 0xe7, 0xbf, 0x26, 0xd4, 0x16, 0xdb, 0x6e, 0x1b, 0x87, 0xbb, 0xb7, 0x42, 0x77, 0x88, 0xa3, 0xb6, 0xc7, 0xa7, 0xab, 0x2c, 0x16, 0x5b, 0x1e, 0x36, 0x6f, 0x96, 0x08, 0xdf, 0x51, 0x20, 0x37, 0x58, 0x4f, 0x21, 0x3a, 0x64, 0x8d, 0x47, 0xf1, 0x6a, 0xc3, 0x26, 0xe1, 0x9a, 0xae, 0x97, 0x2f, 0x63, 0xfd, 0x76, 0xc9,
2829
};
2830
static const u8 ecccdh_SECP384R1_19_test_vector_our_pub_key[] = {
2831
0x2a, 0x3c, 0xc6, 0xb8, 0xff, 0x5c, 0xde, 0x92, 0x6e, 0x7e, 0x3a, 0x18, 0x9a, 0x1b, 0xd0, 0x29, 0xc9, 0xb5, 0x86, 0x35, 0x1a, 0xf8, 0x83, 0x8f, 0x4f, 0x20, 0x1c, 0xb8, 0xf4, 0xb7, 0x0e, 0xf3, 0xb0, 0xda, 0x06, 0xd3, 0x52, 0xc8, 0x0f, 0xc2, 0x6b, 0xaf, 0x8f, 0x42, 0xb7, 0x84, 0x45, 0x9e, 0xbf, 0x99, 0x85, 0x96, 0x01, 0x76, 0xda, 0x6d, 0x23, 0xc7, 0x45, 0x2a, 0x29, 0x54, 0xff, 0xcb, 0xbc, 0xb2, 0x42, 0x49, 0xb4, 0x30, 0x19, 0xa2, 0xa0, 0x23, 0xe0, 0xb3, 0xda, 0xbd, 0x46, 0x1f, 0x19, 0xad, 0x3e, 0x77, 0x5c, 0x36, 0x4f, 0x3f, 0x11, 0xad, 0x49, 0xf3, 0x09, 0x94, 0x00, 0xd3,
2832
};
2833
static const u8 ecccdh_SECP384R1_19_test_vector_shared_secret[] = {
2834
0x01, 0x2d, 0x19, 0x1c, 0xf7, 0x40, 0x4a, 0x52, 0x36, 0x78, 0xc6, 0xfc, 0x07, 0x5d, 0xe8, 0x28, 0x5b, 0x24, 0x37, 0x20, 0xa9, 0x03, 0x04, 0x77, 0x08, 0xbb, 0x33, 0xe5, 0x01, 0xe0, 0xdb, 0xee, 0x5b, 0xcc, 0x40, 0xd7, 0xc3, 0xef, 0x6c, 0x6d, 0xa3, 0x9e, 0xa2, 0x4d, 0x83, 0x0d, 0xa1, 0xe8,
2835
};
2836
static const ecdh_test_case ecccdh_SECP384R1_19_test_case = {
2837
.name = "ECCCDH/SECP384R1 19",
2838
.ecdh_type = ECCCDH,
2839
.ec_str_p = &secp384r1_str_params,
2840
.our_priv_key = ecccdh_SECP384R1_19_test_vector_our_priv_key,
2841
.our_priv_key_len = sizeof(ecccdh_SECP384R1_19_test_vector_our_priv_key),
2842
.peer_pub_key = ecccdh_SECP384R1_19_test_vector_peer_pub_key,
2843
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_19_test_vector_peer_pub_key),
2844
.exp_our_pub_key = ecccdh_SECP384R1_19_test_vector_our_pub_key,
2845
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_19_test_vector_our_pub_key),
2846
.exp_shared_secret = ecccdh_SECP384R1_19_test_vector_shared_secret,
2847
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_19_test_vector_shared_secret),
2848
};
2849
#endif /* WITH_CURVE_SECP384R1 */
2850
2851
#ifdef WITH_CURVE_SECP384R1
2852
#define ECCCDH_SECP384R1_SELF_TEST_20
2853
/*** Tests for ECCCDH/SECP384R1 ***/
2854
static const u8 ecccdh_SECP384R1_20_test_vector_our_priv_key[] = {
2855
0x12, 0x04, 0x8e, 0xbb, 0x43, 0x31, 0xec, 0x19, 0xa1, 0xe2, 0x3f, 0x1a, 0x2c, 0x77, 0x3b, 0x66, 0x4c, 0xcf, 0xe9, 0x0a, 0x28, 0xbf, 0xb8, 0x46, 0xfc, 0x12, 0xf8, 0x1d, 0xff, 0x44, 0xb7, 0x44, 0x3c, 0x77, 0x64, 0x71, 0x64, 0xbf, 0x1e, 0x9e, 0x67, 0xfd, 0x2c, 0x07, 0xa6, 0x76, 0x62, 0x41,
2856
};
2857
static const u8 ecccdh_SECP384R1_20_test_vector_peer_pub_key[] = {
2858
0x13, 0x74, 0x12, 0x62, 0xed, 0xe5, 0x86, 0x1d, 0xad, 0x71, 0x06, 0x3d, 0xfd, 0x20, 0x4b, 0x91, 0xea, 0x1d, 0x3b, 0x7c, 0x63, 0x1d, 0xf6, 0x8e, 0xb9, 0x49, 0x96, 0x95, 0x27, 0xd7, 0x9a, 0x1d, 0xc5, 0x92, 0x95, 0xef, 0x7d, 0x2b, 0xca, 0x67, 0x43, 0xe8, 0xcd, 0x77, 0xb0, 0x4d, 0x1b, 0x58, 0x0b, 0xaa, 0xea, 0xdc, 0x7e, 0x19, 0xd7, 0x4a, 0x8a, 0x04, 0x45, 0x1a, 0x13, 0x5f, 0x1b, 0xe1, 0xb0, 0x2f, 0xe2, 0x99, 0xf9, 0xdc, 0x00, 0xbf, 0xdf, 0x20, 0x1e, 0x83, 0xd9, 0x95, 0xc6, 0x95, 0x0b, 0xcc, 0x1c, 0xb8, 0x9d, 0x6f, 0x7b, 0x30, 0xbf, 0x54, 0x65, 0x6b, 0x9a, 0x4d, 0xa5, 0x86,
2859
};
2860
static const u8 ecccdh_SECP384R1_20_test_vector_our_pub_key[] = {
2861
0xbc, 0x18, 0x83, 0x6b, 0xc7, 0xa9, 0xfd, 0xf5, 0x4b, 0x53, 0x52, 0xf3, 0x7d, 0x75, 0x28, 0xab, 0x8f, 0xa8, 0xec, 0x54, 0x4a, 0x8c, 0x61, 0x80, 0x51, 0x1c, 0xbf, 0xdd, 0x49, 0xcc, 0xe3, 0x77, 0xc3, 0x9e, 0x34, 0xc0, 0x31, 0xb5, 0x24, 0x0d, 0xc9, 0x98, 0x05, 0x03, 0xed, 0x2f, 0x26, 0x2c, 0x80, 0x86, 0xcb, 0xe3, 0x38, 0x19, 0x10, 0x80, 0xf0, 0xb7, 0xa1, 0x6c, 0x7a, 0xfc, 0x4c, 0x7b, 0x03, 0x26, 0xf9, 0xac, 0x66, 0xf5, 0x85, 0x52, 0xef, 0x4b, 0xb9, 0xd2, 0x4d, 0xe3, 0x42, 0x9e, 0xd5, 0xd3, 0x27, 0x7e, 0xd5, 0x8f, 0xcf, 0x48, 0xf2, 0xb5, 0xf6, 0x13, 0x26, 0xbe, 0xc6, 0xc6,
2862
};
2863
static const u8 ecccdh_SECP384R1_20_test_vector_shared_secret[] = {
2864
0xad, 0x0f, 0xd3, 0xdd, 0xff, 0xe8, 0x88, 0x4b, 0x92, 0x63, 0xf3, 0xc1, 0x5f, 0xe1, 0xf0, 0x7f, 0x2a, 0x5a, 0x22, 0xff, 0xdc, 0x7e, 0x96, 0x70, 0x85, 0xee, 0xa4, 0x5f, 0x0c, 0xd9, 0x59, 0xf2, 0x0f, 0x18, 0xf5, 0x22, 0x76, 0x3e, 0x28, 0xbc, 0xc9, 0x25, 0xe4, 0x96, 0xa5, 0x2d, 0xda, 0x98,
2865
};
2866
static const ecdh_test_case ecccdh_SECP384R1_20_test_case = {
2867
.name = "ECCCDH/SECP384R1 20",
2868
.ecdh_type = ECCCDH,
2869
.ec_str_p = &secp384r1_str_params,
2870
.our_priv_key = ecccdh_SECP384R1_20_test_vector_our_priv_key,
2871
.our_priv_key_len = sizeof(ecccdh_SECP384R1_20_test_vector_our_priv_key),
2872
.peer_pub_key = ecccdh_SECP384R1_20_test_vector_peer_pub_key,
2873
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_20_test_vector_peer_pub_key),
2874
.exp_our_pub_key = ecccdh_SECP384R1_20_test_vector_our_pub_key,
2875
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_20_test_vector_our_pub_key),
2876
.exp_shared_secret = ecccdh_SECP384R1_20_test_vector_shared_secret,
2877
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_20_test_vector_shared_secret),
2878
};
2879
#endif /* WITH_CURVE_SECP384R1 */
2880
2881
#ifdef WITH_CURVE_SECP384R1
2882
#define ECCCDH_SECP384R1_SELF_TEST_21
2883
/*** Tests for ECCCDH/SECP384R1 ***/
2884
static const u8 ecccdh_SECP384R1_21_test_vector_our_priv_key[] = {
2885
0x34, 0xd6, 0x1a, 0x69, 0x9c, 0xa5, 0x76, 0x16, 0x9f, 0xcd, 0xc0, 0xcc, 0x7e, 0x44, 0xe4, 0xe1, 0x22, 0x1d, 0xb0, 0xfe, 0x63, 0xd1, 0x68, 0x50, 0xc8, 0x10, 0x40, 0x29, 0xf7, 0xd4, 0x84, 0x49, 0x71, 0x4b, 0x98, 0x84, 0x32, 0x8c, 0xae, 0x18, 0x99, 0x78, 0x75, 0x4a, 0xb4, 0x60, 0xb4, 0x86,
2886
};
2887
static const u8 ecccdh_SECP384R1_21_test_vector_peer_pub_key[] = {
2888
0x9e, 0x22, 0xcb, 0xc1, 0x86, 0x57, 0xf5, 0x16, 0xa8, 0x64, 0xb3, 0x7b, 0x78, 0x33, 0x48, 0xb6, 0x6f, 0x1a, 0xa9, 0x62, 0x6c, 0xd6, 0x31, 0xf4, 0xfa, 0x1b, 0xd3, 0x2a, 0xd8, 0x8c, 0xf1, 0x1d, 0xb5, 0x20, 0x57, 0xc6, 0x60, 0x86, 0x0d, 0x39, 0xd1, 0x1f, 0xbf, 0x02, 0x4f, 0xab, 0xd4, 0x44, 0x6b, 0x0d, 0x53, 0xc7, 0x96, 0x81, 0xc2, 0x81, 0x16, 0xdf, 0x71, 0xe9, 0xce, 0xe7, 0x4f, 0xd5, 0x6c, 0x8b, 0x7f, 0x04, 0xb3, 0x9f, 0x11, 0x98, 0xcc, 0x72, 0x28, 0x4e, 0x98, 0xbe, 0x95, 0x62, 0xe3, 0x59, 0x26, 0xfb, 0x4f, 0x48, 0xa9, 0xfb, 0xec, 0xaf, 0xe7, 0x29, 0x30, 0x9e, 0x8b, 0x6f,
2889
};
2890
static const u8 ecccdh_SECP384R1_21_test_vector_our_pub_key[] = {
2891
0x86, 0x7f, 0x81, 0x10, 0x4c, 0xcd, 0x6b, 0x16, 0x3a, 0x79, 0x02, 0xb6, 0x70, 0xef, 0x40, 0x60, 0x42, 0xcb, 0x0c, 0xce, 0x7d, 0xcd, 0xc6, 0x3d, 0x1d, 0xfc, 0x91, 0xb2, 0xc4, 0x0e, 0x3c, 0xdf, 0x75, 0x95, 0x83, 0x4b, 0xf9, 0xec, 0xeb, 0x79, 0x84, 0x9f, 0x16, 0x36, 0xfc, 0x84, 0x62, 0xfc, 0x9d, 0x4b, 0xde, 0x8e, 0x87, 0x5e, 0xc4, 0x96, 0x97, 0xd2, 0x58, 0xd1, 0xd5, 0x94, 0x65, 0xf8, 0x43, 0x1c, 0x6f, 0x55, 0x31, 0xe1, 0xc5, 0x9e, 0x9f, 0x9e, 0xbe, 0x3c, 0xf1, 0x64, 0xa8, 0xd9, 0xce, 0x10, 0xa1, 0x2f, 0x19, 0x79, 0x28, 0x3a, 0x95, 0x9b, 0xad, 0x24, 0x4d, 0xd8, 0x38, 0x63,
2892
};
2893
static const u8 ecccdh_SECP384R1_21_test_vector_shared_secret[] = {
2894
0xdc, 0x4c, 0xa3, 0x92, 0xdc, 0x15, 0xe2, 0x01, 0x85, 0xf2, 0xc6, 0xa8, 0xea, 0x5e, 0xc3, 0x1d, 0xfc, 0x96, 0xf5, 0x61, 0x53, 0xa4, 0x73, 0x94, 0xb3, 0x07, 0x2b, 0x13, 0xd0, 0x01, 0x5f, 0x5d, 0x4a, 0xe1, 0x3b, 0xeb, 0x3b, 0xed, 0x54, 0xd6, 0x58, 0x48, 0xf9, 0xb8, 0x38, 0x3e, 0x6c, 0x95,
2895
};
2896
static const ecdh_test_case ecccdh_SECP384R1_21_test_case = {
2897
.name = "ECCCDH/SECP384R1 21",
2898
.ecdh_type = ECCCDH,
2899
.ec_str_p = &secp384r1_str_params,
2900
.our_priv_key = ecccdh_SECP384R1_21_test_vector_our_priv_key,
2901
.our_priv_key_len = sizeof(ecccdh_SECP384R1_21_test_vector_our_priv_key),
2902
.peer_pub_key = ecccdh_SECP384R1_21_test_vector_peer_pub_key,
2903
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_21_test_vector_peer_pub_key),
2904
.exp_our_pub_key = ecccdh_SECP384R1_21_test_vector_our_pub_key,
2905
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_21_test_vector_our_pub_key),
2906
.exp_shared_secret = ecccdh_SECP384R1_21_test_vector_shared_secret,
2907
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_21_test_vector_shared_secret),
2908
};
2909
#endif /* WITH_CURVE_SECP384R1 */
2910
2911
#ifdef WITH_CURVE_SECP384R1
2912
#define ECCCDH_SECP384R1_SELF_TEST_22
2913
/*** Tests for ECCCDH/SECP384R1 ***/
2914
static const u8 ecccdh_SECP384R1_22_test_vector_our_priv_key[] = {
2915
0xdc, 0x60, 0xfa, 0x87, 0x36, 0xd7, 0x02, 0x13, 0x5f, 0xf1, 0x6a, 0xab, 0x99, 0x2b, 0xb8, 0x8e, 0xac, 0x39, 0x7f, 0x59, 0x72, 0x45, 0x6c, 0x72, 0xec, 0x44, 0x73, 0x74, 0xd0, 0xd8, 0xce, 0x61, 0x15, 0x38, 0x31, 0xbf, 0xc8, 0x6a, 0xd5, 0xa6, 0xeb, 0x5b, 0x60, 0xbf, 0xb9, 0x6a, 0x86, 0x2c,
2916
};
2917
static const u8 ecccdh_SECP384R1_22_test_vector_peer_pub_key[] = {
2918
0x2d, 0xb5, 0xda, 0x5f, 0x94, 0x0e, 0xaa, 0x88, 0x4f, 0x4d, 0xb5, 0xec, 0x21, 0x39, 0xb0, 0x46, 0x9f, 0x38, 0xe4, 0xe6, 0xfb, 0xbc, 0xc5, 0x2d, 0xf1, 0x5c, 0x0f, 0x7c, 0xf7, 0xfc, 0xb1, 0x80, 0x8c, 0x74, 0x97, 0x64, 0xb6, 0xbe, 0x85, 0xd2, 0xfd, 0xc5, 0xb1, 0x6f, 0x58, 0xad, 0x5d, 0xc0, 0x22, 0xe8, 0xb0, 0x2d, 0xcf, 0x33, 0xe1, 0xb5, 0xa0, 0x83, 0x84, 0x95, 0x45, 0xf8, 0x4a, 0xd5, 0xe4, 0x3f, 0x77, 0xcb, 0x71, 0x54, 0x6d, 0xbb, 0xac, 0x0d, 0x11, 0xbd, 0xb2, 0xee, 0x20, 0x2e, 0x9d, 0x38, 0x72, 0xe8, 0xd0, 0x28, 0xc0, 0x89, 0x90, 0x74, 0x6c, 0x5e, 0x1d, 0xde, 0x99, 0x89,
2919
};
2920
static const u8 ecccdh_SECP384R1_22_test_vector_our_pub_key[] = {
2921
0xb6, 0x9b, 0xee, 0xde, 0x85, 0xd0, 0xf8, 0x29, 0xfe, 0xc1, 0xb8, 0x93, 0xcc, 0xb9, 0xc3, 0xe0, 0x52, 0xff, 0x69, 0x2e, 0x13, 0xb9, 0x74, 0x53, 0x7b, 0xc5, 0xb0, 0xf9, 0xfe, 0xaf, 0x7b, 0x22, 0xe8, 0x4f, 0x03, 0x23, 0x16, 0x29, 0xb2, 0x48, 0x66, 0xbd, 0xb4, 0xb8, 0xcf, 0x90, 0x89, 0x14, 0x66, 0xf8, 0x5e, 0x2b, 0xfc, 0xab, 0xa2, 0x84, 0x32, 0x85, 0xb0, 0xe1, 0x4e, 0xbc, 0x07, 0xef, 0x7d, 0xaf, 0xff, 0x8b, 0x42, 0x44, 0x16, 0xfe, 0xe6, 0x47, 0xb5, 0x98, 0x97, 0xb6, 0x19, 0xf2, 0x0e, 0xed, 0x95, 0xa6, 0x32, 0xe6, 0xa4, 0x20, 0x6b, 0xf7, 0xda, 0x42, 0x9c, 0x04, 0xc5, 0x60,
2922
};
2923
static const u8 ecccdh_SECP384R1_22_test_vector_shared_secret[] = {
2924
0xd7, 0x65, 0xb2, 0x08, 0x11, 0x2d, 0x2b, 0x9e, 0xd5, 0xad, 0x10, 0xc4, 0x04, 0x6e, 0x2e, 0x3b, 0x0d, 0xbf, 0x57, 0xc4, 0x69, 0x32, 0x95, 0x19, 0xe2, 0x39, 0xac, 0x28, 0xb2, 0x5c, 0x7d, 0x85, 0x2b, 0xf7, 0x57, 0xd5, 0xde, 0x0e, 0xe2, 0x71, 0xca, 0xdd, 0x02, 0x1d, 0x86, 0xcf, 0xd3, 0x47,
2925
};
2926
static const ecdh_test_case ecccdh_SECP384R1_22_test_case = {
2927
.name = "ECCCDH/SECP384R1 22",
2928
.ecdh_type = ECCCDH,
2929
.ec_str_p = &secp384r1_str_params,
2930
.our_priv_key = ecccdh_SECP384R1_22_test_vector_our_priv_key,
2931
.our_priv_key_len = sizeof(ecccdh_SECP384R1_22_test_vector_our_priv_key),
2932
.peer_pub_key = ecccdh_SECP384R1_22_test_vector_peer_pub_key,
2933
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_22_test_vector_peer_pub_key),
2934
.exp_our_pub_key = ecccdh_SECP384R1_22_test_vector_our_pub_key,
2935
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_22_test_vector_our_pub_key),
2936
.exp_shared_secret = ecccdh_SECP384R1_22_test_vector_shared_secret,
2937
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_22_test_vector_shared_secret),
2938
};
2939
#endif /* WITH_CURVE_SECP384R1 */
2940
2941
#ifdef WITH_CURVE_SECP384R1
2942
#define ECCCDH_SECP384R1_SELF_TEST_23
2943
/*** Tests for ECCCDH/SECP384R1 ***/
2944
static const u8 ecccdh_SECP384R1_23_test_vector_our_priv_key[] = {
2945
0x6f, 0xa6, 0xa1, 0xc7, 0x04, 0x73, 0x09, 0x87, 0xaa, 0x63, 0x4b, 0x05, 0x16, 0xa8, 0x26, 0xab, 0xa8, 0xc6, 0xd6, 0x41, 0x1d, 0x3a, 0x4c, 0x89, 0x77, 0x2d, 0x7a, 0x62, 0x61, 0x02, 0x56, 0xa2, 0xe2, 0xf2, 0x89, 0xf5, 0xc3, 0x44, 0x0b, 0x0e, 0xc1, 0xe7, 0x0f, 0xa3, 0x39, 0xe2, 0x51, 0xce,
2946
};
2947
static const u8 ecccdh_SECP384R1_23_test_vector_peer_pub_key[] = {
2948
0x32, 0x96, 0x47, 0xba, 0xa3, 0x54, 0x22, 0x4e, 0xb4, 0x41, 0x48, 0x29, 0xc5, 0x36, 0x8c, 0x82, 0xd7, 0x89, 0x3b, 0x39, 0x80, 0x4e, 0x08, 0xcb, 0xb2, 0x18, 0x0f, 0x45, 0x9b, 0xef, 0xc4, 0xb3, 0x47, 0xa3, 0x89, 0xa7, 0x0c, 0x91, 0xa2, 0x3b, 0xd9, 0xd3, 0x0c, 0x83, 0xbe, 0x52, 0x95, 0xd3, 0xcc, 0x8f, 0x61, 0x92, 0x3f, 0xad, 0x2a, 0xa8, 0xe5, 0x05, 0xd6, 0xcf, 0xa1, 0x26, 0xb9, 0xfa, 0xbd, 0x5a, 0xf9, 0xdc, 0xe2, 0x90, 0xb7, 0x56, 0x60, 0xef, 0x06, 0xd1, 0xca, 0xa7, 0x36, 0x81, 0xd0, 0x60, 0x89, 0xc3, 0x3b, 0xc4, 0x24, 0x6b, 0x3a, 0xa3, 0x0d, 0xbc, 0xd2, 0x43, 0x5b, 0x12,
2949
};
2950
static const u8 ecccdh_SECP384R1_23_test_vector_our_pub_key[] = {
2951
0x53, 0xde, 0x1f, 0xc1, 0x32, 0x8e, 0x8d, 0xe1, 0x4a, 0xec, 0xab, 0x29, 0xad, 0x8a, 0x40, 0xd6, 0xb1, 0x37, 0x68, 0xf8, 0x6f, 0x7d, 0x29, 0x84, 0x33, 0xd2, 0x0f, 0xec, 0x79, 0x1f, 0x86, 0xf8, 0xbc, 0x73, 0xf3, 0x58, 0x09, 0x8b, 0x25, 0x6a, 0x29, 0x8b, 0xb4, 0x88, 0xde, 0x25, 0x7b, 0xf4, 0xac, 0x28, 0x94, 0x4f, 0xd2, 0x7f, 0x17, 0xb8, 0x29, 0x46, 0xc0, 0x4c, 0x66, 0xc4, 0x1f, 0x00, 0x53, 0xd3, 0x69, 0x2f, 0x27, 0x5d, 0xa5, 0x5c, 0xd8, 0x73, 0x9a, 0x95, 0xbd, 0x8c, 0xd3, 0xaf, 0x2f, 0x96, 0xe4, 0xde, 0x95, 0x9e, 0xa8, 0x34, 0x4d, 0x89, 0x45, 0x37, 0x59, 0x05, 0x85, 0x8b,
2952
};
2953
static const u8 ecccdh_SECP384R1_23_test_vector_shared_secret[] = {
2954
0xd3, 0x77, 0x88, 0x50, 0xae, 0xb5, 0x88, 0x04, 0xfb, 0xe9, 0xdf, 0xe6, 0xf3, 0x8b, 0x9f, 0xa8, 0xe2, 0x0c, 0x2c, 0xa4, 0xe0, 0xde, 0xc3, 0x35, 0xaa, 0xfc, 0xec, 0xa0, 0x33, 0x3e, 0x3f, 0x24, 0x90, 0xb5, 0x3c, 0x0c, 0x1a, 0x14, 0xa8, 0x31, 0xba, 0x37, 0xc4, 0xb9, 0xd7, 0x4b, 0xe0, 0xf2,
2955
};
2956
static const ecdh_test_case ecccdh_SECP384R1_23_test_case = {
2957
.name = "ECCCDH/SECP384R1 23",
2958
.ecdh_type = ECCCDH,
2959
.ec_str_p = &secp384r1_str_params,
2960
.our_priv_key = ecccdh_SECP384R1_23_test_vector_our_priv_key,
2961
.our_priv_key_len = sizeof(ecccdh_SECP384R1_23_test_vector_our_priv_key),
2962
.peer_pub_key = ecccdh_SECP384R1_23_test_vector_peer_pub_key,
2963
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_23_test_vector_peer_pub_key),
2964
.exp_our_pub_key = ecccdh_SECP384R1_23_test_vector_our_pub_key,
2965
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_23_test_vector_our_pub_key),
2966
.exp_shared_secret = ecccdh_SECP384R1_23_test_vector_shared_secret,
2967
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_23_test_vector_shared_secret),
2968
};
2969
#endif /* WITH_CURVE_SECP384R1 */
2970
2971
#ifdef WITH_CURVE_SECP384R1
2972
#define ECCCDH_SECP384R1_SELF_TEST_24
2973
/*** Tests for ECCCDH/SECP384R1 ***/
2974
static const u8 ecccdh_SECP384R1_24_test_vector_our_priv_key[] = {
2975
0x74, 0xad, 0x83, 0x86, 0xc1, 0xcb, 0x2c, 0xa0, 0xfc, 0xde, 0xb3, 0x1e, 0x08, 0x69, 0xbb, 0x3f, 0x48, 0xc0, 0x36, 0xaf, 0xe2, 0xef, 0x11, 0x0c, 0xa3, 0x02, 0xbc, 0x8b, 0x91, 0x0f, 0x62, 0x1c, 0x9f, 0xcc, 0x54, 0xce, 0xc3, 0x2b, 0xb8, 0x9e, 0xc7, 0xca, 0xa8, 0x4c, 0x7b, 0x8e, 0x54, 0xa8,
2976
};
2977
static const u8 ecccdh_SECP384R1_24_test_vector_peer_pub_key[] = {
2978
0x29, 0xd8, 0xa3, 0x6d, 0x22, 0x20, 0x0a, 0x75, 0xb7, 0xae, 0xa1, 0xbb, 0x47, 0xcd, 0xfc, 0xb1, 0xb7, 0xfd, 0x66, 0xde, 0x96, 0x70, 0x41, 0x43, 0x47, 0x28, 0xab, 0x5d, 0x53, 0x3a, 0x06, 0x0d, 0xf7, 0x32, 0x13, 0x06, 0x00, 0xfe, 0x6f, 0x75, 0x85, 0x2a, 0x87, 0x1f, 0xb2, 0x93, 0x8e, 0x39, 0xe1, 0x9b, 0x53, 0xdb, 0x52, 0x83, 0x95, 0xde, 0x89, 0x7a, 0x45, 0x10, 0x89, 0x67, 0x71, 0x5e, 0xb8, 0xcb, 0x55, 0xc3, 0xfc, 0xbf, 0x23, 0x37, 0x93, 0x72, 0xc0, 0x87, 0x3a, 0x05, 0x8d, 0x57, 0x54, 0x4b, 0x10, 0x2e, 0xcc, 0xe7, 0x22, 0xb2, 0xcc, 0xab, 0xb1, 0xa6, 0x03, 0x77, 0x4f, 0xd5,
2979
};
2980
static const u8 ecccdh_SECP384R1_24_test_vector_our_pub_key[] = {
2981
0x27, 0xa3, 0xe8, 0x3c, 0xfb, 0x9d, 0x51, 0x22, 0xe7, 0x31, 0x29, 0xd8, 0x01, 0x61, 0x58, 0x57, 0xda, 0x7c, 0xc0, 0x89, 0xcc, 0xcc, 0x9c, 0x54, 0xab, 0x30, 0x32, 0xa1, 0x9e, 0x0a, 0x0a, 0x9f, 0x67, 0x73, 0x46, 0xe3, 0x7f, 0x08, 0xa0, 0xb3, 0xed, 0x8d, 0xa6, 0xe5, 0xdd, 0x69, 0x10, 0x63, 0x8d, 0x60, 0xe4, 0x4a, 0xa5, 0xe0, 0xfd, 0x30, 0xc9, 0x18, 0x45, 0x67, 0x96, 0xaf, 0x37, 0xf0, 0xe4, 0x19, 0x57, 0x90, 0x16, 0x45, 0xe5, 0xc5, 0x96, 0xc6, 0xd9, 0x89, 0xf5, 0x85, 0x9b, 0x03, 0xa0, 0xbd, 0x7d, 0x1f, 0x4e, 0x77, 0x93, 0x6f, 0xff, 0x3c, 0x74, 0xd2, 0x04, 0xe5, 0x38, 0x8e,
2982
};
2983
static const u8 ecccdh_SECP384R1_24_test_vector_shared_secret[] = {
2984
0x81, 0xe1, 0xe7, 0x15, 0x75, 0xbb, 0x45, 0x05, 0x49, 0x8d, 0xe0, 0x97, 0x35, 0x01, 0x86, 0x43, 0x0a, 0x62, 0x42, 0xfa, 0x6c, 0x57, 0xb8, 0x5a, 0x5f, 0x98, 0x4a, 0x23, 0x37, 0x11, 0x23, 0xd2, 0xd1, 0x42, 0x4e, 0xef, 0xbf, 0x80, 0x42, 0x58, 0x39, 0x2b, 0xc7, 0x23, 0xe4, 0xef, 0x1e, 0x35,
2985
};
2986
static const ecdh_test_case ecccdh_SECP384R1_24_test_case = {
2987
.name = "ECCCDH/SECP384R1 24",
2988
.ecdh_type = ECCCDH,
2989
.ec_str_p = &secp384r1_str_params,
2990
.our_priv_key = ecccdh_SECP384R1_24_test_vector_our_priv_key,
2991
.our_priv_key_len = sizeof(ecccdh_SECP384R1_24_test_vector_our_priv_key),
2992
.peer_pub_key = ecccdh_SECP384R1_24_test_vector_peer_pub_key,
2993
.peer_pub_key_len = sizeof(ecccdh_SECP384R1_24_test_vector_peer_pub_key),
2994
.exp_our_pub_key = ecccdh_SECP384R1_24_test_vector_our_pub_key,
2995
.exp_our_pub_key_len = sizeof(ecccdh_SECP384R1_24_test_vector_our_pub_key),
2996
.exp_shared_secret = ecccdh_SECP384R1_24_test_vector_shared_secret,
2997
.exp_shared_secret_len = sizeof(ecccdh_SECP384R1_24_test_vector_shared_secret),
2998
};
2999
#endif /* WITH_CURVE_SECP384R1 */
3000
3001
#ifdef WITH_CURVE_SECP521R1
3002
#define ECCCDH_SECP521R1_SELF_TEST_0
3003
/*** Tests for ECCCDH/SECP521R1 ***/
3004
static const u8 ecccdh_SECP521R1_0_test_vector_our_priv_key[] = {
3005
0x00, 0x00, 0x01, 0x7e, 0xec, 0xc0, 0x7a, 0xb4, 0xb3, 0x29, 0x06, 0x8f, 0xba, 0x65, 0xe5, 0x6a, 0x1f, 0x88, 0x90, 0xaa, 0x93, 0x5e, 0x57, 0x13, 0x4a, 0xe0, 0xff, 0xcc, 0xe8, 0x02, 0x73, 0x51, 0x51, 0xf4, 0xea, 0xc6, 0x56, 0x4f, 0x6e, 0xe9, 0x97, 0x4c, 0x5e, 0x68, 0x87, 0xa1, 0xfe, 0xfe, 0xe5, 0x74, 0x3a, 0xe2, 0x24, 0x1b, 0xfe, 0xb9, 0x5d, 0x5c, 0xe3, 0x1d, 0xdc, 0xb6, 0xf9, 0xed, 0xb4, 0xd6, 0xfc, 0x47,
3006
};
3007
static const u8 ecccdh_SECP521R1_0_test_vector_peer_pub_key[] = {
3008
0x00, 0x68, 0x5a, 0x48, 0xe8, 0x6c, 0x79, 0xf0, 0xf0, 0x87, 0x5f, 0x7b, 0xc1, 0x8d, 0x25, 0xeb, 0x5f, 0xc8, 0xc0, 0xb0, 0x7e, 0x5d, 0xa4, 0xf4, 0x37, 0x0f, 0x3a, 0x94, 0x90, 0x34, 0x08, 0x54, 0x33, 0x4b, 0x1e, 0x1b, 0x87, 0xfa, 0x39, 0x54, 0x64, 0xc6, 0x06, 0x26, 0x12, 0x4a, 0x4e, 0x70, 0xd0, 0xf7, 0x85, 0x60, 0x1d, 0x37, 0xc0, 0x98, 0x70, 0xeb, 0xf1, 0x76, 0x66, 0x68, 0x77, 0xa2, 0x04, 0x6d, 0x01, 0xba, 0x52, 0xc5, 0x6f, 0xc8, 0x77, 0x6d, 0x9e, 0x8f, 0x5d, 0xb4, 0xf0, 0xcc, 0x27, 0x63, 0x6d, 0x0b, 0x74, 0x1b, 0xbe, 0x05, 0x40, 0x06, 0x97, 0x94, 0x2e, 0x80, 0xb7, 0x39, 0x88, 0x4a, 0x83, 0xbd, 0xe9, 0x9e, 0x0f, 0x67, 0x16, 0x93, 0x9e, 0x63, 0x2b, 0xc8, 0x98, 0x6f, 0xa1, 0x8d, 0xcc, 0xd4, 0x43, 0xa3, 0x48, 0xb6, 0xc3, 0xe5, 0x22, 0x49, 0x79, 0x55, 0xa4, 0xf3, 0xc3, 0x02, 0xf6, 0x76,
3009
};
3010
static const u8 ecccdh_SECP521R1_0_test_vector_our_pub_key[] = {
3011
0x00, 0x60, 0x2f, 0x9d, 0x0c, 0xf9, 0xe5, 0x26, 0xb2, 0x9e, 0x22, 0x38, 0x1c, 0x20, 0x3c, 0x48, 0xa8, 0x86, 0xc2, 0xb0, 0x67, 0x30, 0x33, 0x36, 0x63, 0x14, 0xf1, 0xff, 0xbc, 0xba, 0x24, 0x0b, 0xa4, 0x2f, 0x4e, 0xf3, 0x8a, 0x76, 0x17, 0x46, 0x35, 0xf9, 0x1e, 0x6b, 0x4e, 0xd3, 0x42, 0x75, 0xeb, 0x01, 0xc8, 0x46, 0x7d, 0x05, 0xca, 0x80, 0x31, 0x5b, 0xf1, 0xa7, 0xbb, 0xd9, 0x45, 0xf5, 0x50, 0xa5, 0x01, 0xb7, 0xc8, 0x5f, 0x26, 0xf5, 0xd4, 0xb2, 0xd7, 0x35, 0x5c, 0xf6, 0xb0, 0x21, 0x17, 0x65, 0x99, 0x43, 0x76, 0x2b, 0x6d, 0x1d, 0xb5, 0xab, 0x4f, 0x1d, 0xbc, 0x44, 0xce, 0x7b, 0x29, 0x46, 0xeb, 0x6c, 0x7d, 0xe3, 0x42, 0x96, 0x28, 0x93, 0xfd, 0x38, 0x7d, 0x1b, 0x73, 0xd7, 0xa8, 0x67, 0x2d, 0x1f, 0x23, 0x69, 0x61, 0x17, 0x0b, 0x7e, 0xb3, 0x57, 0x99, 0x53, 0xee, 0x5c, 0xdc, 0x88, 0xcd, 0x2d,
3012
};
3013
static const u8 ecccdh_SECP521R1_0_test_vector_shared_secret[] = {
3014
0x00, 0x5f, 0xc7, 0x04, 0x77, 0xc3, 0xe6, 0x3b, 0xc3, 0x95, 0x4b, 0xd0, 0xdf, 0x3e, 0xa0, 0xd1, 0xf4, 0x1e, 0xe2, 0x17, 0x46, 0xed, 0x95, 0xfc, 0x5e, 0x1f, 0xdf, 0x90, 0x93, 0x0d, 0x5e, 0x13, 0x66, 0x72, 0xd7, 0x2c, 0xc7, 0x70, 0x74, 0x2d, 0x17, 0x11, 0xc3, 0xc3, 0xa4, 0xc3, 0x34, 0xa0, 0xad, 0x97, 0x59, 0x43, 0x6a, 0x4d, 0x3c, 0x5b, 0xf6, 0xe7, 0x4b, 0x95, 0x78, 0xfa, 0xc1, 0x48, 0xc8, 0x31,
3015
};
3016
static const ecdh_test_case ecccdh_SECP521R1_0_test_case = {
3017
.name = "ECCCDH/SECP521R1 0",
3018
.ecdh_type = ECCCDH,
3019
.ec_str_p = &secp521r1_str_params,
3020
.our_priv_key = ecccdh_SECP521R1_0_test_vector_our_priv_key,
3021
.our_priv_key_len = sizeof(ecccdh_SECP521R1_0_test_vector_our_priv_key),
3022
.peer_pub_key = ecccdh_SECP521R1_0_test_vector_peer_pub_key,
3023
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_0_test_vector_peer_pub_key),
3024
.exp_our_pub_key = ecccdh_SECP521R1_0_test_vector_our_pub_key,
3025
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_0_test_vector_our_pub_key),
3026
.exp_shared_secret = ecccdh_SECP521R1_0_test_vector_shared_secret,
3027
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_0_test_vector_shared_secret),
3028
};
3029
#endif /* WITH_CURVE_SECP521R1 */
3030
3031
#ifdef WITH_CURVE_SECP521R1
3032
#define ECCCDH_SECP521R1_SELF_TEST_1
3033
/*** Tests for ECCCDH/SECP521R1 ***/
3034
static const u8 ecccdh_SECP521R1_1_test_vector_our_priv_key[] = {
3035
0x00, 0x00, 0x00, 0x81, 0x6f, 0x19, 0xc1, 0xfb, 0x10, 0xef, 0x94, 0xd4, 0xa1, 0xd8, 0x1c, 0x15, 0x6e, 0xc3, 0xd1, 0xde, 0x08, 0xb6, 0x67, 0x61, 0xf0, 0x3f, 0x06, 0xee, 0x4b, 0xb9, 0xdc, 0xeb, 0xbb, 0xfe, 0x1e, 0xaa, 0x1e, 0xd4, 0x9a, 0x6a, 0x99, 0x08, 0x38, 0xd8, 0xed, 0x31, 0x8c, 0x14, 0xd7, 0x4c, 0xc8, 0x72, 0xf9, 0x5d, 0x05, 0xd0, 0x7a, 0xd5, 0x0f, 0x62, 0x1c, 0xeb, 0x62, 0x0c, 0xd9, 0x05, 0xcf, 0xb8,
3036
};
3037
static const u8 ecccdh_SECP521R1_1_test_vector_peer_pub_key[] = {
3038
0x01, 0xdf, 0x27, 0x7c, 0x15, 0x21, 0x08, 0x34, 0x9b, 0xc3, 0x4d, 0x53, 0x9e, 0xe0, 0xcf, 0x06, 0xb2, 0x4f, 0x5d, 0x35, 0x00, 0x67, 0x7b, 0x44, 0x45, 0x45, 0x3c, 0xcc, 0x21, 0x40, 0x94, 0x53, 0xaa, 0xfb, 0x8a, 0x72, 0xa0, 0xbe, 0x9e, 0xbe, 0x54, 0xd1, 0x22, 0x70, 0xaa, 0x51, 0xb3, 0xab, 0x7f, 0x31, 0x6a, 0xa5, 0xe7, 0x4a, 0x95, 0x1c, 0x5e, 0x53, 0xf7, 0x4c, 0xd9, 0x5f, 0xc2, 0x9a, 0xee, 0x7a, 0x01, 0x3d, 0x52, 0xf3, 0x3a, 0x9f, 0x3c, 0x14, 0x38, 0x4d, 0x15, 0x87, 0xfa, 0x8a, 0xbe, 0x7a, 0xed, 0x74, 0xbc, 0x33, 0x74, 0x9a, 0xd9, 0xc5, 0x70, 0xb4, 0x71, 0x77, 0x64, 0x22, 0xc7, 0xd4, 0x50, 0x5d, 0x9b, 0x0a, 0x96, 0xb3, 0xbf, 0xac, 0x04, 0x1e, 0x4c, 0x6a, 0x69, 0x90, 0xae, 0x7f, 0x70, 0x0e, 0x5b, 0x4a, 0x66, 0x40, 0x22, 0x91, 0x12, 0xde, 0xaf, 0xa0, 0xcd, 0x8b, 0xb0, 0xd0, 0x89, 0xb0,
3039
};
3040
static const u8 ecccdh_SECP521R1_1_test_vector_our_pub_key[] = {
3041
0x00, 0xd4, 0x56, 0x15, 0xed, 0x5d, 0x37, 0xfd, 0xe6, 0x99, 0x61, 0x0a, 0x62, 0xcd, 0x43, 0xba, 0x76, 0xbe, 0xdd, 0x8f, 0x85, 0xed, 0x31, 0x00, 0x5f, 0xe0, 0x0d, 0x64, 0x50, 0xfb, 0xbd, 0x10, 0x12, 0x91, 0xab, 0xd9, 0x6d, 0x49, 0x45, 0xa8, 0xb5, 0x7b, 0xc7, 0x3b, 0x3f, 0xe9, 0xf4, 0x67, 0x11, 0x05, 0x30, 0x9e, 0xc9, 0xb6, 0x87, 0x9d, 0x05, 0x51, 0xd9, 0x30, 0xda, 0xc8, 0xba, 0x45, 0xd2, 0x55, 0x01, 0x42, 0x53, 0x32, 0x84, 0x4e, 0x59, 0x2b, 0x44, 0x0c, 0x00, 0x27, 0x97, 0x2a, 0xd1, 0x52, 0x64, 0x31, 0xc0, 0x67, 0x32, 0xdf, 0x19, 0xcd, 0x46, 0xa2, 0x42, 0x17, 0x2d, 0x4d, 0xd6, 0x7c, 0x2c, 0x8c, 0x99, 0xdf, 0xc2, 0x2e, 0x49, 0x94, 0x9a, 0x56, 0xcf, 0x90, 0xc6, 0x47, 0x36, 0x35, 0xce, 0x82, 0xf2, 0x5b, 0x33, 0x68, 0x2f, 0xb1, 0x9b, 0xc3, 0x3b, 0xd9, 0x10, 0xed, 0x8c, 0xe3, 0xa7, 0xfa,
3042
};
3043
static const u8 ecccdh_SECP521R1_1_test_vector_shared_secret[] = {
3044
0x00, 0x0b, 0x39, 0x20, 0xac, 0x83, 0x0a, 0xde, 0x81, 0x2c, 0x8f, 0x96, 0x80, 0x5d, 0xa2, 0x23, 0x6e, 0x00, 0x2a, 0xcb, 0xbf, 0x13, 0x59, 0x6a, 0x9a, 0xb2, 0x54, 0xd4, 0x4d, 0x0e, 0x91, 0xb6, 0x25, 0x5e, 0xbf, 0x12, 0x29, 0xf3, 0x66, 0xfb, 0x5a, 0x05, 0xc5, 0x88, 0x4e, 0xf4, 0x60, 0x32, 0xc2, 0x6d, 0x42, 0x18, 0x92, 0x73, 0xca, 0x4e, 0xfa, 0x4c, 0x3d, 0xb6, 0xbd, 0x12, 0xa6, 0x85, 0x37, 0x59,
3045
};
3046
static const ecdh_test_case ecccdh_SECP521R1_1_test_case = {
3047
.name = "ECCCDH/SECP521R1 1",
3048
.ecdh_type = ECCCDH,
3049
.ec_str_p = &secp521r1_str_params,
3050
.our_priv_key = ecccdh_SECP521R1_1_test_vector_our_priv_key,
3051
.our_priv_key_len = sizeof(ecccdh_SECP521R1_1_test_vector_our_priv_key),
3052
.peer_pub_key = ecccdh_SECP521R1_1_test_vector_peer_pub_key,
3053
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_1_test_vector_peer_pub_key),
3054
.exp_our_pub_key = ecccdh_SECP521R1_1_test_vector_our_pub_key,
3055
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_1_test_vector_our_pub_key),
3056
.exp_shared_secret = ecccdh_SECP521R1_1_test_vector_shared_secret,
3057
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_1_test_vector_shared_secret),
3058
};
3059
#endif /* WITH_CURVE_SECP521R1 */
3060
3061
#ifdef WITH_CURVE_SECP521R1
3062
#define ECCCDH_SECP521R1_SELF_TEST_2
3063
/*** Tests for ECCCDH/SECP521R1 ***/
3064
static const u8 ecccdh_SECP521R1_2_test_vector_our_priv_key[] = {
3065
0x00, 0x00, 0x01, 0x2f, 0x2e, 0x0c, 0x6d, 0x9e, 0x9d, 0x11, 0x7c, 0xeb, 0x97, 0x23, 0xbc, 0xed, 0x02, 0xeb, 0x3d, 0x4e, 0xeb, 0xf5, 0xfe, 0xea, 0xf8, 0xee, 0x01, 0x13, 0xcc, 0xd8, 0x05, 0x7b, 0x13, 0xdd, 0xd4, 0x16, 0xe0, 0xb7, 0x42, 0x80, 0xc2, 0xd0, 0xba, 0x8e, 0xd2, 0x91, 0xc4, 0x43, 0xbc, 0x1b, 0x14, 0x1c, 0xaf, 0x8a, 0xfb, 0x3a, 0x71, 0xf9, 0x7f, 0x57, 0xc2, 0x25, 0xc0, 0x3e, 0x1e, 0x4d, 0x42, 0xb0,
3066
};
3067
static const u8 ecccdh_SECP521R1_2_test_vector_peer_pub_key[] = {
3068
0x00, 0x92, 0xdb, 0x31, 0x42, 0x56, 0x4d, 0x27, 0xa5, 0xf0, 0x00, 0x6f, 0x81, 0x99, 0x08, 0xfb, 0xa1, 0xb8, 0x50, 0x38, 0xa5, 0xbc, 0x25, 0x09, 0x90, 0x6a, 0x49, 0x7d, 0xaa, 0xc6, 0x7f, 0xd7, 0xae, 0xe0, 0xfc, 0x2d, 0xab, 0xa4, 0xe4, 0x33, 0x4e, 0xea, 0xef, 0x0e, 0x00, 0x19, 0x20, 0x4b, 0x47, 0x1c, 0xd8, 0x80, 0x24, 0xf8, 0x21, 0x15, 0xd8, 0x14, 0x9c, 0xc0, 0xcf, 0x4f, 0x7c, 0xe1, 0xa4, 0xd5, 0x01, 0x6b, 0xad, 0x06, 0x23, 0xf5, 0x17, 0xb1, 0x58, 0xd9, 0x88, 0x18, 0x41, 0xd2, 0x57, 0x1e, 0xfb, 0xad, 0x63, 0xf8, 0x5c, 0xbe, 0x2e, 0x58, 0x19, 0x60, 0xc5, 0xd6, 0x70, 0x60, 0x1a, 0x67, 0x60, 0x27, 0x26, 0x75, 0xa5, 0x48, 0x99, 0x62, 0x17, 0xe4, 0xab, 0x2b, 0x8e, 0xbc, 0xe3, 0x1d, 0x71, 0xfc, 0xa6, 0x3f, 0xcc, 0x3c, 0x08, 0xe9, 0x1c, 0x1d, 0x8e, 0xdd, 0x91, 0xcf, 0x6f, 0xe8, 0x45, 0xf8,
3069
};
3070
static const u8 ecccdh_SECP521R1_2_test_vector_our_pub_key[] = {
3071
0x00, 0x71, 0x7f, 0xcb, 0x3d, 0x4a, 0x40, 0xd1, 0x03, 0x87, 0x1e, 0xde, 0x04, 0x4d, 0xc8, 0x03, 0xdb, 0x50, 0x8a, 0xaa, 0x4a, 0xe7, 0x4b, 0x70, 0xb9, 0xfb, 0x8d, 0x8d, 0xfd, 0x84, 0xbf, 0xec, 0xfa, 0xd1, 0x78, 0x71, 0x87, 0x96, 0x98, 0xc2, 0x92, 0xd2, 0xfd, 0x5e, 0x17, 0xb4, 0xf9, 0x34, 0x36, 0x36, 0xc5, 0x31, 0xa4, 0xfa, 0xc6, 0x8a, 0x35, 0xa9, 0x36, 0x65, 0x54, 0x6b, 0x9a, 0x87, 0x86, 0x79, 0x00, 0xf3, 0xd9, 0x6a, 0x86, 0x37, 0x03, 0x69, 0x93, 0xab, 0x5d, 0x24, 0x45, 0x00, 0xff, 0xf9, 0xd2, 0x77, 0x21, 0x12, 0x82, 0x6f, 0x64, 0x36, 0x60, 0x3d, 0x3e, 0xb2, 0x34, 0xa4, 0x4d, 0x5c, 0x4e, 0x5c, 0x57, 0x72, 0x34, 0x67, 0x9c, 0x4f, 0x9d, 0xf7, 0x25, 0xee, 0x5b, 0x91, 0x18, 0xf2, 0x3d, 0x8a, 0x58, 0xd0, 0xcc, 0x01, 0x09, 0x6d, 0xaf, 0x70, 0xe8, 0xdf, 0xec, 0x01, 0x28, 0xbd, 0xc2, 0xe8,
3072
};
3073
static const u8 ecccdh_SECP521R1_2_test_vector_shared_secret[] = {
3074
0x00, 0x6b, 0x38, 0x0a, 0x6e, 0x95, 0x67, 0x92, 0x77, 0xcf, 0xee, 0x4e, 0x83, 0x53, 0xbf, 0x96, 0xef, 0x2a, 0x1e, 0xbd, 0xd0, 0x60, 0x74, 0x9f, 0x2f, 0x04, 0x6f, 0xe5, 0x71, 0x05, 0x37, 0x40, 0xbb, 0xcc, 0x9a, 0x0b, 0x55, 0x79, 0x0b, 0xc9, 0xab, 0x56, 0xc3, 0x20, 0x8a, 0xa0, 0x5d, 0xdf, 0x74, 0x6a, 0x10, 0xa3, 0xad, 0x69, 0x4d, 0xaa, 0xe0, 0x0d, 0x98, 0x0d, 0x94, 0x4a, 0xab, 0xc6, 0xa0, 0x8f,
3075
};
3076
static const ecdh_test_case ecccdh_SECP521R1_2_test_case = {
3077
.name = "ECCCDH/SECP521R1 2",
3078
.ecdh_type = ECCCDH,
3079
.ec_str_p = &secp521r1_str_params,
3080
.our_priv_key = ecccdh_SECP521R1_2_test_vector_our_priv_key,
3081
.our_priv_key_len = sizeof(ecccdh_SECP521R1_2_test_vector_our_priv_key),
3082
.peer_pub_key = ecccdh_SECP521R1_2_test_vector_peer_pub_key,
3083
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_2_test_vector_peer_pub_key),
3084
.exp_our_pub_key = ecccdh_SECP521R1_2_test_vector_our_pub_key,
3085
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_2_test_vector_our_pub_key),
3086
.exp_shared_secret = ecccdh_SECP521R1_2_test_vector_shared_secret,
3087
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_2_test_vector_shared_secret),
3088
};
3089
#endif /* WITH_CURVE_SECP521R1 */
3090
3091
#ifdef WITH_CURVE_SECP521R1
3092
#define ECCCDH_SECP521R1_SELF_TEST_3
3093
/*** Tests for ECCCDH/SECP521R1 ***/
3094
static const u8 ecccdh_SECP521R1_3_test_vector_our_priv_key[] = {
3095
0x00, 0x00, 0x00, 0xe5, 0x48, 0xa7, 0x9d, 0x8b, 0x05, 0xf9, 0x23, 0xb9, 0x82, 0x5d, 0x11, 0xb6, 0x56, 0xf2, 0x22, 0xe8, 0xcb, 0x98, 0xb0, 0xf8, 0x9d, 0xe1, 0xd3, 0x17, 0x18, 0x4d, 0xc5, 0xa6, 0x98, 0xf7, 0xc7, 0x11, 0x61, 0xee, 0x7d, 0xc1, 0x1c, 0xd3, 0x1f, 0x4f, 0x4f, 0x8a, 0xe3, 0xa9, 0x81, 0xe1, 0xa3, 0xe7, 0x8b, 0xde, 0xbb, 0x97, 0xd7, 0xc2, 0x04, 0xb9, 0x26, 0x1b, 0x4e, 0xf9, 0x2e, 0x09, 0x18, 0xe0,
3096
};
3097
static const u8 ecccdh_SECP521R1_3_test_vector_peer_pub_key[] = {
3098
0x00, 0xfd, 0xd4, 0x0d, 0x9e, 0x9d, 0x97, 0x40, 0x27, 0xcb, 0x3b, 0xae, 0x68, 0x21, 0x62, 0xea, 0xc1, 0x32, 0x8a, 0xd6, 0x1b, 0xc4, 0x35, 0x3c, 0x45, 0xbf, 0x5a, 0xfe, 0x76, 0xbf, 0x60, 0x7d, 0x28, 0x94, 0xc8, 0xcc, 0xe2, 0x36, 0x95, 0xd9, 0x20, 0xf2, 0x46, 0x4f, 0xda, 0x47, 0x73, 0xd4, 0x69, 0x3b, 0xe4, 0xb3, 0x77, 0x35, 0x84, 0x69, 0x1b, 0xdb, 0x03, 0x29, 0xb7, 0xf4, 0xc8, 0x6c, 0xc2, 0x99, 0x00, 0x34, 0xce, 0xac, 0x6a, 0x3f, 0xef, 0x1c, 0x3e, 0x1c, 0x49, 0x4b, 0xfe, 0x8d, 0x87, 0x2b, 0x18, 0x38, 0x32, 0x21, 0x9a, 0x7e, 0x14, 0xda, 0x41, 0x4d, 0x4e, 0x34, 0x74, 0x57, 0x36, 0x71, 0xec, 0x19, 0xb0, 0x33, 0xbe, 0x83, 0x1b, 0x91, 0x54, 0x35, 0x90, 0x59, 0x25, 0xb4, 0x49, 0x47, 0xc5, 0x92, 0x95, 0x99, 0x45, 0xb4, 0xeb, 0x7c, 0x95, 0x1c, 0x3b, 0x9c, 0x8c, 0xf5, 0x25, 0x30, 0xba, 0x23,
3099
};
3100
static const u8 ecccdh_SECP521R1_3_test_vector_our_pub_key[] = {
3101
0x00, 0x0c, 0xe8, 0x00, 0x21, 0x7e, 0xd2, 0x43, 0xdd, 0x10, 0xa7, 0x9a, 0xd7, 0x3d, 0xf5, 0x78, 0xaa, 0x8a, 0x3f, 0x91, 0x94, 0xaf, 0x52, 0x8c, 0xd1, 0x09, 0x4b, 0xbf, 0xee, 0x27, 0xa3, 0xb5, 0x48, 0x1a, 0xd5, 0x86, 0x2c, 0x88, 0x76, 0xc0, 0xc3, 0xf9, 0x12, 0x94, 0xc0, 0xab, 0x3a, 0xa8, 0x06, 0xd9, 0x02, 0x0c, 0xba, 0xa2, 0xed, 0x72, 0xb7, 0xfe, 0xcd, 0xc5, 0xa0, 0x9a, 0x6d, 0xad, 0x6f, 0x32, 0x01, 0x54, 0x3c, 0x9a, 0xb4, 0x5b, 0x12, 0x46, 0x92, 0x32, 0x91, 0x8e, 0x21, 0xd5, 0xa3, 0x51, 0xf9, 0xa4, 0xb9, 0xcb, 0xf9, 0xef, 0xb2, 0xaf, 0xcc, 0x40, 0x2f, 0xa9, 0xb3, 0x16, 0x50, 0xbe, 0xc2, 0xd6, 0x41, 0xa0, 0x5c, 0x44, 0x0d, 0x35, 0x33, 0x1c, 0x08, 0x93, 0xd1, 0x1f, 0xb1, 0x31, 0x51, 0x33, 0x59, 0x88, 0xb3, 0x03, 0x34, 0x13, 0x01, 0xa7, 0x3d, 0xc5, 0xf6, 0x1d, 0x57, 0x4e, 0x67, 0xd9,
3102
};
3103
static const u8 ecccdh_SECP521R1_3_test_vector_shared_secret[] = {
3104
0x00, 0xfb, 0xbc, 0xd0, 0xb8, 0xd0, 0x53, 0x31, 0xfe, 0xf6, 0x08, 0x6f, 0x22, 0xa6, 0xcc, 0xe4, 0xd3, 0x57, 0x24, 0xab, 0x7a, 0x2f, 0x49, 0xdd, 0x84, 0x58, 0xd0, 0xbf, 0xd5, 0x7a, 0x0b, 0x8b, 0x70, 0xf2, 0x46, 0xc1, 0x7c, 0x44, 0x68, 0xc0, 0x76, 0x87, 0x4b, 0x0d, 0xff, 0x7a, 0x03, 0x36, 0x82, 0x3b, 0x19, 0xe9, 0x8b, 0xf1, 0xce, 0xc0, 0x5e, 0x4b, 0xef, 0xfb, 0x05, 0x91, 0xf9, 0x77, 0x13, 0xc6,
3105
};
3106
static const ecdh_test_case ecccdh_SECP521R1_3_test_case = {
3107
.name = "ECCCDH/SECP521R1 3",
3108
.ecdh_type = ECCCDH,
3109
.ec_str_p = &secp521r1_str_params,
3110
.our_priv_key = ecccdh_SECP521R1_3_test_vector_our_priv_key,
3111
.our_priv_key_len = sizeof(ecccdh_SECP521R1_3_test_vector_our_priv_key),
3112
.peer_pub_key = ecccdh_SECP521R1_3_test_vector_peer_pub_key,
3113
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_3_test_vector_peer_pub_key),
3114
.exp_our_pub_key = ecccdh_SECP521R1_3_test_vector_our_pub_key,
3115
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_3_test_vector_our_pub_key),
3116
.exp_shared_secret = ecccdh_SECP521R1_3_test_vector_shared_secret,
3117
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_3_test_vector_shared_secret),
3118
};
3119
#endif /* WITH_CURVE_SECP521R1 */
3120
3121
#ifdef WITH_CURVE_SECP521R1
3122
#define ECCCDH_SECP521R1_SELF_TEST_4
3123
/*** Tests for ECCCDH/SECP521R1 ***/
3124
static const u8 ecccdh_SECP521R1_4_test_vector_our_priv_key[] = {
3125
0x00, 0x00, 0x01, 0xc8, 0xaa, 0xe9, 0x4b, 0xb1, 0x0b, 0x8c, 0xa4, 0xf7, 0xbe, 0x57, 0x7b, 0x4f, 0xb3, 0x2b, 0xb2, 0x38, 0x10, 0x32, 0xc4, 0x94, 0x2c, 0x24, 0xfc, 0x2d, 0x75, 0x3e, 0x7c, 0xc5, 0xe4, 0x7b, 0x48, 0x33, 0x89, 0xd9, 0xf3, 0xb9, 0x56, 0xd2, 0x0e, 0xe9, 0x00, 0x1b, 0x1e, 0xef, 0x9f, 0x23, 0x54, 0x5f, 0x72, 0xc5, 0x60, 0x21, 0x40, 0x04, 0x68, 0x39, 0xe9, 0x63, 0x31, 0x3c, 0x3d, 0xec, 0xc8, 0x64,
3126
};
3127
static const u8 ecccdh_SECP521R1_4_test_vector_peer_pub_key[] = {
3128
0x00, 0x98, 0xd9, 0x9d, 0xee, 0x08, 0x16, 0x55, 0x0e, 0x84, 0xdb, 0xfc, 0xed, 0x7e, 0x88, 0x13, 0x7f, 0xdd, 0xcf, 0x58, 0x1a, 0x72, 0x5a, 0x45, 0x50, 0x21, 0x11, 0x5f, 0xe4, 0x9f, 0x8d, 0xc3, 0xcf, 0x23, 0x3c, 0xd9, 0xea, 0x0e, 0x6f, 0x03, 0x9d, 0xc7, 0x91, 0x9d, 0xa9, 0x73, 0xcd, 0xce, 0xac, 0xa2, 0x05, 0xda, 0x39, 0xe0, 0xbd, 0x98, 0xc8, 0x06, 0x25, 0x36, 0xc4, 0x7f, 0x25, 0x8f, 0x44, 0xb5, 0x00, 0xcd, 0x22, 0x5c, 0x87, 0x97, 0x37, 0x1b, 0xe0, 0xc4, 0x29, 0x7d, 0x2b, 0x45, 0x77, 0x40, 0x10, 0x0c, 0x77, 0x41, 0x41, 0xd8, 0xf2, 0x14, 0xc2, 0x3b, 0x61, 0xaa, 0x2b, 0x6c, 0xd4, 0x80, 0x6b, 0x9b, 0x70, 0x72, 0x2a, 0xa4, 0x96, 0x5f, 0xb6, 0x22, 0xf4, 0x2b, 0x73, 0x91, 0xe2, 0x7e, 0x5e, 0xc2, 0x1c, 0x56, 0x79, 0xc5, 0xb0, 0x6b, 0x59, 0x12, 0x73, 0x72, 0x99, 0x7d, 0x42, 0x1a, 0xdc, 0x1e,
3129
};
3130
static const u8 ecccdh_SECP521R1_4_test_vector_our_pub_key[] = {
3131
0x01, 0x06, 0xa1, 0x4e, 0x2e, 0xe8, 0xff, 0x97, 0x0a, 0xa8, 0xab, 0x0c, 0x79, 0xb9, 0x7a, 0x33, 0xbb, 0xa2, 0x95, 0x8e, 0x07, 0x0b, 0x75, 0xb9, 0x47, 0x36, 0xb7, 0x7b, 0xbe, 0x3f, 0x77, 0x73, 0x24, 0xfa, 0x52, 0x87, 0x27, 0x71, 0xaa, 0x88, 0xa6, 0x3a, 0x9e, 0x84, 0x90, 0xc3, 0x37, 0x8d, 0xf4, 0xdc, 0x76, 0x0c, 0xd1, 0x4d, 0x62, 0xbe, 0x70, 0x07, 0x79, 0xdd, 0x1a, 0x43, 0x77, 0x94, 0x36, 0x56, 0x00, 0x23, 0x66, 0xce, 0x39, 0x41, 0xe0, 0xb2, 0x84, 0xb1, 0xaa, 0x81, 0x21, 0x5d, 0x0d, 0x3b, 0x97, 0x78, 0xfc, 0xe2, 0x3c, 0x8c, 0xd1, 0xe4, 0xed, 0x6f, 0xa0, 0xab, 0xf6, 0x21, 0x56, 0xc9, 0x1d, 0x4b, 0x3e, 0xb5, 0x59, 0x99, 0xc3, 0x47, 0x1b, 0xed, 0x27, 0x5e, 0x9e, 0x60, 0xe5, 0xaa, 0x9d, 0x69, 0x0d, 0x31, 0x0b, 0xfb, 0x15, 0xc9, 0xc5, 0xbb, 0xd6, 0xf5, 0xe9, 0xeb, 0x39, 0x68, 0x2b, 0x74,
3132
};
3133
static const u8 ecccdh_SECP521R1_4_test_vector_shared_secret[] = {
3134
0x01, 0x45, 0xcf, 0xa3, 0x8f, 0x25, 0x94, 0x35, 0x16, 0xc9, 0x6a, 0x5f, 0xd4, 0xbf, 0xeb, 0xb2, 0xf6, 0x45, 0xd1, 0x05, 0x20, 0x11, 0x7a, 0xa5, 0x19, 0x71, 0xef, 0xf4, 0x42, 0x80, 0x8a, 0x23, 0xb4, 0xe2, 0x3c, 0x18, 0x7e, 0x63, 0x9f, 0xf9, 0x28, 0xc3, 0x72, 0x5f, 0xbd, 0x1c, 0x0c, 0x2a, 0xd0, 0xd4, 0xae, 0xb2, 0x07, 0xbc, 0x1a, 0x6f, 0xb6, 0xcb, 0x6d, 0x46, 0x78, 0x88, 0xdc, 0x04, 0x4b, 0x3c,
3135
};
3136
static const ecdh_test_case ecccdh_SECP521R1_4_test_case = {
3137
.name = "ECCCDH/SECP521R1 4",
3138
.ecdh_type = ECCCDH,
3139
.ec_str_p = &secp521r1_str_params,
3140
.our_priv_key = ecccdh_SECP521R1_4_test_vector_our_priv_key,
3141
.our_priv_key_len = sizeof(ecccdh_SECP521R1_4_test_vector_our_priv_key),
3142
.peer_pub_key = ecccdh_SECP521R1_4_test_vector_peer_pub_key,
3143
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_4_test_vector_peer_pub_key),
3144
.exp_our_pub_key = ecccdh_SECP521R1_4_test_vector_our_pub_key,
3145
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_4_test_vector_our_pub_key),
3146
.exp_shared_secret = ecccdh_SECP521R1_4_test_vector_shared_secret,
3147
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_4_test_vector_shared_secret),
3148
};
3149
#endif /* WITH_CURVE_SECP521R1 */
3150
3151
#ifdef WITH_CURVE_SECP521R1
3152
#define ECCCDH_SECP521R1_SELF_TEST_5
3153
/*** Tests for ECCCDH/SECP521R1 ***/
3154
static const u8 ecccdh_SECP521R1_5_test_vector_our_priv_key[] = {
3155
0x00, 0x00, 0x00, 0x9b, 0x0a, 0xf1, 0x37, 0xc9, 0x69, 0x6c, 0x75, 0xb7, 0xe6, 0xdf, 0x7b, 0x73, 0x15, 0x6b, 0xb2, 0xd4, 0x5f, 0x48, 0x2e, 0x5a, 0x42, 0x17, 0x32, 0x4f, 0x47, 0x8b, 0x10, 0xce, 0xb7, 0x6a, 0xf0, 0x97, 0x24, 0xcf, 0x86, 0xaf, 0xa3, 0x16, 0xe7, 0xf8, 0x99, 0x18, 0xd3, 0x1d, 0x54, 0x82, 0x4a, 0x5c, 0x33, 0x10, 0x7a, 0x48, 0x3c, 0x15, 0xc1, 0x5b, 0x96, 0xed, 0xc6, 0x61, 0x34, 0x0b, 0x1c, 0x0e,
3156
};
3157
static const u8 ecccdh_SECP521R1_5_test_vector_peer_pub_key[] = {
3158
0x00, 0x7a, 0xe1, 0x15, 0xad, 0xaa, 0xf0, 0x41, 0x69, 0x1a, 0xb6, 0xb7, 0xfb, 0x8c, 0x92, 0x1f, 0x99, 0xd8, 0xed, 0x32, 0xd2, 0x83, 0xd6, 0x70, 0x84, 0xe8, 0x0b, 0x9a, 0xd9, 0xc4, 0x0c, 0x56, 0xcd, 0x98, 0x38, 0x9f, 0xb0, 0xa8, 0x49, 0xd9, 0xec, 0xf7, 0x26, 0x8c, 0x29, 0x7b, 0x6f, 0x93, 0x40, 0x61, 0x19, 0xf4, 0x0e, 0x32, 0xb5, 0x77, 0x3e, 0xd2, 0x5a, 0x28, 0xa9, 0xa8, 0x5c, 0x4a, 0x75, 0x88, 0x01, 0xa2, 0x8e, 0x00, 0x4e, 0x37, 0xee, 0xae, 0xfe, 0x1f, 0x4d, 0xbb, 0x71, 0xf1, 0x87, 0x86, 0x96, 0x14, 0x1a, 0xf3, 0xa1, 0x0a, 0x96, 0x91, 0xc4, 0xed, 0x93, 0x48, 0x72, 0x14, 0x64, 0x3b, 0x76, 0x1f, 0xa4, 0xb0, 0xfb, 0xee, 0xb2, 0x47, 0xcf, 0x6d, 0x3f, 0xba, 0x7a, 0x60, 0x69, 0x75, 0x36, 0xad, 0x03, 0xf4, 0x9b, 0x80, 0xa9, 0xd1, 0xcb, 0x07, 0x96, 0x73, 0x65, 0x49, 0x77, 0xc5, 0xfa, 0x94,
3159
};
3160
static const u8 ecccdh_SECP521R1_5_test_vector_our_pub_key[] = {
3161
0x00, 0x74, 0x8c, 0xdb, 0xb8, 0x75, 0xd3, 0x5f, 0x4b, 0xcc, 0xb6, 0x2a, 0xbe, 0x20, 0xe8, 0x2d, 0x32, 0xe4, 0xc1, 0x4d, 0xc2, 0xfe, 0xb5, 0xb8, 0x7d, 0xa2, 0xd0, 0xcc, 0xb1, 0x1c, 0x9b, 0x6d, 0x4b, 0x77, 0x37, 0xb6, 0xc4, 0x6f, 0x0d, 0xfb, 0x4d, 0x89, 0x6e, 0x2d, 0xb9, 0x2f, 0xcf, 0x53, 0xcd, 0xbb, 0xae, 0x2a, 0x40, 0x4c, 0x0b, 0xab, 0xd5, 0x64, 0xad, 0x7a, 0xde, 0xac, 0x62, 0x73, 0xef, 0xa3, 0x01, 0x98, 0x4a, 0xca, 0xb8, 0xd8, 0xf1, 0x73, 0x32, 0x3d, 0xe0, 0xbb, 0x60, 0x27, 0x4b, 0x22, 0x88, 0x71, 0x60, 0x93, 0x73, 0xbb, 0x22, 0xa1, 0x72, 0x87, 0xe9, 0xde, 0xc7, 0x49, 0x58, 0x73, 0xab, 0xc0, 0x9a, 0x89, 0x15, 0xb5, 0x4c, 0x84, 0x55, 0xc8, 0xe0, 0x2f, 0x65, 0x4f, 0x60, 0x2e, 0x23, 0xa2, 0xbb, 0xd7, 0xa9, 0xeb, 0xb7, 0x4f, 0x30, 0x09, 0xbd, 0x65, 0xec, 0xc6, 0x50, 0x81, 0x4c, 0xc0,
3162
};
3163
static const u8 ecccdh_SECP521R1_5_test_vector_shared_secret[] = {
3164
0x00, 0x5c, 0x57, 0x21, 0xe9, 0x6c, 0x27, 0x33, 0x19, 0xfd, 0x60, 0xec, 0xc4, 0x6b, 0x59, 0x62, 0xf6, 0x98, 0xe9, 0x74, 0xb4, 0x29, 0xf2, 0x8f, 0xe6, 0x96, 0x2f, 0x4a, 0xc6, 0x56, 0xbe, 0x2e, 0xb8, 0x67, 0x4c, 0x4a, 0xaf, 0xc0, 0x37, 0xea, 0xb4, 0x8e, 0xce, 0x61, 0x29, 0x53, 0xb1, 0xe8, 0xd8, 0x61, 0x01, 0x6b, 0x6a, 0xd0, 0xc7, 0x98, 0x05, 0x78, 0x4c, 0x67, 0xf7, 0x3a, 0xda, 0x96, 0xf3, 0x51,
3165
};
3166
static const ecdh_test_case ecccdh_SECP521R1_5_test_case = {
3167
.name = "ECCCDH/SECP521R1 5",
3168
.ecdh_type = ECCCDH,
3169
.ec_str_p = &secp521r1_str_params,
3170
.our_priv_key = ecccdh_SECP521R1_5_test_vector_our_priv_key,
3171
.our_priv_key_len = sizeof(ecccdh_SECP521R1_5_test_vector_our_priv_key),
3172
.peer_pub_key = ecccdh_SECP521R1_5_test_vector_peer_pub_key,
3173
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_5_test_vector_peer_pub_key),
3174
.exp_our_pub_key = ecccdh_SECP521R1_5_test_vector_our_pub_key,
3175
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_5_test_vector_our_pub_key),
3176
.exp_shared_secret = ecccdh_SECP521R1_5_test_vector_shared_secret,
3177
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_5_test_vector_shared_secret),
3178
};
3179
#endif /* WITH_CURVE_SECP521R1 */
3180
3181
#ifdef WITH_CURVE_SECP521R1
3182
#define ECCCDH_SECP521R1_SELF_TEST_6
3183
/*** Tests for ECCCDH/SECP521R1 ***/
3184
static const u8 ecccdh_SECP521R1_6_test_vector_our_priv_key[] = {
3185
0x00, 0x00, 0x01, 0xe4, 0x8f, 0xaa, 0xce, 0xe6, 0xde, 0xc8, 0x3f, 0xfc, 0xde, 0x94, 0x4c, 0xf6, 0xbd, 0xf4, 0xce, 0x4b, 0xae, 0x72, 0x74, 0x78, 0x88, 0xeb, 0xaf, 0xee, 0x45, 0x5b, 0x1e, 0x91, 0x58, 0x49, 0x71, 0xef, 0xb4, 0x91, 0x27, 0x97, 0x6a, 0x52, 0xf4, 0x14, 0x29, 0x52, 0xf7, 0xc2, 0x07, 0xec, 0x02, 0x65, 0xf2, 0xb7, 0x18, 0xcf, 0x3e, 0xad, 0x96, 0xea, 0x4f, 0x62, 0xc7, 0x52, 0xe4, 0xf7, 0xac, 0xd3,
3186
};
3187
static const u8 ecccdh_SECP521R1_6_test_vector_peer_pub_key[] = {
3188
0x01, 0x25, 0x88, 0x11, 0x5e, 0x6f, 0x7f, 0x7b, 0xdc, 0xfd, 0xf5, 0x7f, 0x03, 0xb1, 0x69, 0xb4, 0x79, 0x75, 0x8b, 0xaa, 0xfd, 0xaf, 0x56, 0x9d, 0x04, 0x13, 0x59, 0x87, 0xb2, 0xce, 0x61, 0x64, 0xc0, 0x2a, 0x57, 0x68, 0x5e, 0xb5, 0x27, 0x6b, 0x5d, 0xae, 0x62, 0x95, 0xd3, 0xfe, 0x90, 0x62, 0x0f, 0x38, 0xb5, 0x53, 0x5c, 0x6d, 0x22, 0x60, 0xc1, 0x73, 0xe6, 0x1e, 0xb8, 0x88, 0xca, 0x92, 0x02, 0x03, 0x01, 0x54, 0x2c, 0x16, 0x9c, 0xf9, 0x7c, 0x25, 0x96, 0xfe, 0x2d, 0xdd, 0x84, 0x8a, 0x22, 0x2e, 0x36, 0x7c, 0x5f, 0x7e, 0x62, 0x67, 0xeb, 0xc1, 0xbc, 0xd9, 0xab, 0x5d, 0xcf, 0x49, 0x15, 0x8f, 0x1a, 0x48, 0xe4, 0xaf, 0x29, 0xa8, 0x97, 0xb7, 0xe6, 0xa8, 0x20, 0x91, 0xc2, 0xdb, 0x87, 0x4d, 0x8e, 0x7a, 0xbf, 0x0f, 0x58, 0x06, 0x46, 0x91, 0x34, 0x41, 0x54, 0xf3, 0x96, 0xdb, 0xae, 0xd1, 0x88, 0xb6,
3189
};
3190
static const u8 ecccdh_SECP521R1_6_test_vector_our_pub_key[] = {
3191
0x01, 0x0e, 0xb1, 0xb4, 0xd9, 0x17, 0x2b, 0xcc, 0x23, 0xf4, 0xf2, 0x0c, 0xc9, 0x56, 0x0f, 0xc5, 0x49, 0x28, 0xc3, 0xf3, 0x4e, 0xa6, 0x1c, 0x00, 0x39, 0x1d, 0xc7, 0x66, 0xc7, 0x6e, 0xd9, 0xfa, 0x60, 0x84, 0x49, 0x37, 0x7d, 0x1e, 0x4f, 0xad, 0xd1, 0x23, 0x60, 0x25, 0x41, 0x73, 0x30, 0xb4, 0xb9, 0x10, 0x86, 0x70, 0x4a, 0xce, 0x3e, 0x4e, 0x64, 0x84, 0xc6, 0x06, 0xe2, 0xa9, 0x43, 0x47, 0x8c, 0x86, 0x01, 0x49, 0x41, 0x38, 0x64, 0x06, 0x98, 0x25, 0xee, 0x1d, 0x08, 0x28, 0xda, 0x9f, 0x4a, 0x97, 0x71, 0x30, 0x05, 0xe9, 0xbd, 0x1a, 0xdb, 0xc3, 0xb3, 0x8c, 0x5b, 0x94, 0x69, 0x00, 0x72, 0x1a, 0x96, 0x0f, 0xe9, 0x6a, 0xd2, 0xc1, 0xb3, 0xa4, 0x4f, 0xe3, 0xde, 0x91, 0x56, 0x13, 0x6d, 0x44, 0xcb, 0x17, 0xcb, 0xc2, 0x41, 0x57, 0x29, 0xbb, 0x78, 0x2e, 0x16, 0xbf, 0xe2, 0xde, 0xb3, 0x06, 0x9e, 0x43,
3192
};
3193
static const u8 ecccdh_SECP521R1_6_test_vector_shared_secret[] = {
3194
0x01, 0x73, 0x6d, 0x97, 0x17, 0x42, 0x9b, 0x4f, 0x41, 0x2e, 0x90, 0x3f, 0xeb, 0xe2, 0xf9, 0xe0, 0xff, 0xfd, 0x81, 0x35, 0x5d, 0x6c, 0xe2, 0xc0, 0x6f, 0xf3, 0xf6, 0x6a, 0x3b, 0xe1, 0x5c, 0xee, 0xc6, 0xe6, 0x5e, 0x30, 0x83, 0x47, 0x59, 0x3f, 0x00, 0xd7, 0xf3, 0x35, 0x91, 0xda, 0x40, 0x43, 0xc3, 0x07, 0x63, 0xd7, 0x27, 0x49, 0xf7, 0x2c, 0xdc, 0xee, 0xbe, 0x82, 0x5e, 0x4b, 0x34, 0xec, 0xd5, 0x70,
3195
};
3196
static const ecdh_test_case ecccdh_SECP521R1_6_test_case = {
3197
.name = "ECCCDH/SECP521R1 6",
3198
.ecdh_type = ECCCDH,
3199
.ec_str_p = &secp521r1_str_params,
3200
.our_priv_key = ecccdh_SECP521R1_6_test_vector_our_priv_key,
3201
.our_priv_key_len = sizeof(ecccdh_SECP521R1_6_test_vector_our_priv_key),
3202
.peer_pub_key = ecccdh_SECP521R1_6_test_vector_peer_pub_key,
3203
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_6_test_vector_peer_pub_key),
3204
.exp_our_pub_key = ecccdh_SECP521R1_6_test_vector_our_pub_key,
3205
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_6_test_vector_our_pub_key),
3206
.exp_shared_secret = ecccdh_SECP521R1_6_test_vector_shared_secret,
3207
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_6_test_vector_shared_secret),
3208
};
3209
#endif /* WITH_CURVE_SECP521R1 */
3210
3211
#ifdef WITH_CURVE_SECP521R1
3212
#define ECCCDH_SECP521R1_SELF_TEST_7
3213
/*** Tests for ECCCDH/SECP521R1 ***/
3214
static const u8 ecccdh_SECP521R1_7_test_vector_our_priv_key[] = {
3215
0x00, 0x00, 0x00, 0xc2, 0x9a, 0xa2, 0x23, 0xea, 0x8d, 0x64, 0xb4, 0xa1, 0xed, 0xa2, 0x7f, 0x39, 0xd3, 0xbc, 0x98, 0xea, 0x01, 0x48, 0xdd, 0x98, 0xc1, 0xcb, 0xe5, 0x95, 0xf8, 0xfd, 0x2b, 0xfb, 0xde, 0x11, 0x9c, 0x9e, 0x01, 0x7a, 0x50, 0xf5, 0xd1, 0xfc, 0x12, 0x1c, 0x08, 0xc1, 0xce, 0xf3, 0x1b, 0x75, 0x88, 0x59, 0x55, 0x6e, 0xb3, 0xe0, 0xe0, 0x42, 0xd8, 0xdd, 0x6a, 0xaa, 0xc5, 0x7a, 0x05, 0xca, 0x61, 0xe3,
3216
};
3217
static const u8 ecccdh_SECP521R1_7_test_vector_peer_pub_key[] = {
3218
0x01, 0x69, 0x49, 0x1d, 0x55, 0xbd, 0x09, 0x04, 0x9f, 0xdf, 0x4c, 0x2a, 0x53, 0xa6, 0x60, 0x48, 0x0f, 0xee, 0x4c, 0x03, 0xa0, 0x53, 0x86, 0x75, 0xd1, 0xcd, 0x09, 0xb5, 0xbb, 0xa7, 0x8d, 0xac, 0x48, 0x54, 0x3e, 0xf1, 0x18, 0xa1, 0x17, 0x3b, 0x3f, 0xbf, 0x8b, 0x20, 0xe3, 0x9c, 0xe0, 0xe6, 0xb8, 0x90, 0xa1, 0x63, 0xc5, 0x0f, 0x96, 0x45, 0xb3, 0xd2, 0x1d, 0x1c, 0xbb, 0x3b, 0x60, 0xa6, 0xff, 0xf4, 0x00, 0x83, 0x49, 0x4b, 0x2e, 0xba, 0x76, 0x91, 0x0f, 0xed, 0x33, 0xc7, 0x61, 0x80, 0x45, 0x15, 0x01, 0x1f, 0xab, 0x50, 0xe3, 0xb3, 0x77, 0xab, 0xd8, 0xa8, 0xa0, 0x45, 0xd8, 0x86, 0xd2, 0x23, 0x8d, 0x2c, 0x26, 0x8a, 0xc1, 0xb6, 0xec, 0x88, 0xbd, 0x71, 0xb7, 0xba, 0x78, 0xe2, 0xc3, 0x3c, 0x15, 0x2e, 0x4b, 0xf7, 0xda, 0x5d, 0x56, 0x5e, 0x4a, 0xcb, 0xec, 0xf5, 0xe9, 0x2c, 0x7a, 0xd6, 0x62, 0xbb,
3219
};
3220
static const u8 ecccdh_SECP521R1_7_test_vector_our_pub_key[] = {
3221
0x00, 0x15, 0x11, 0xc8, 0x48, 0xef, 0x60, 0xd5, 0x41, 0x9a, 0x98, 0xd1, 0x02, 0x04, 0xdb, 0x0f, 0xe5, 0x82, 0x24, 0x12, 0x43, 0x70, 0x06, 0x1b, 0xcf, 0xa4, 0xe9, 0x24, 0x9d, 0x50, 0x61, 0x8c, 0x56, 0xbf, 0x37, 0x22, 0x47, 0x1b, 0x25, 0x9f, 0x38, 0x26, 0x3b, 0xb7, 0xb2, 0x80, 0xd2, 0x3c, 0xaf, 0x2a, 0x1e, 0xe8, 0x73, 0x7f, 0x93, 0x71, 0xcd, 0xb2, 0x73, 0x2c, 0xdc, 0x95, 0x83, 0x69, 0x93, 0x0c, 0x01, 0xd4, 0x61, 0x68, 0x1a, 0xe6, 0xd8, 0xc4, 0x9b, 0x4c, 0x5f, 0x4d, 0x60, 0x16, 0x14, 0x3f, 0xb1, 0xbd, 0x74, 0x91, 0x57, 0x3e, 0x3e, 0xd0, 0xe6, 0xc4, 0x8b, 0x82, 0xe8, 0x21, 0x64, 0x4f, 0x87, 0xf8, 0x2f, 0x0e, 0x5f, 0x08, 0xfd, 0x16, 0xf1, 0xf9, 0x8f, 0xa1, 0x75, 0x86, 0x20, 0x0a, 0xb0, 0x2e, 0xd8, 0xc6, 0x27, 0xb3, 0x5c, 0x3f, 0x27, 0x61, 0x7e, 0xc5, 0xfd, 0x92, 0xf4, 0x56, 0x20, 0x3f,
3222
};
3223
static const u8 ecccdh_SECP521R1_7_test_vector_shared_secret[] = {
3224
0x01, 0x8f, 0x2a, 0xe9, 0x47, 0x6c, 0x77, 0x17, 0x26, 0xa7, 0x77, 0x80, 0x20, 0x8d, 0xed, 0xfe, 0xfa, 0x20, 0x54, 0x88, 0x99, 0x6b, 0x18, 0xfe, 0xcc, 0x50, 0xbf, 0xd4, 0xc1, 0x32, 0x75, 0x3f, 0x57, 0x66, 0xb2, 0xcd, 0x74, 0x4a, 0xfa, 0x99, 0x18, 0x60, 0x6d, 0xe2, 0xe0, 0x16, 0xef, 0xfc, 0x63, 0x62, 0x2e, 0x90, 0x29, 0xe7, 0x6d, 0xc6, 0xe3, 0xf0, 0xc6, 0x9f, 0x7a, 0xec, 0xed, 0x56, 0x5c, 0x2c,
3225
};
3226
static const ecdh_test_case ecccdh_SECP521R1_7_test_case = {
3227
.name = "ECCCDH/SECP521R1 7",
3228
.ecdh_type = ECCCDH,
3229
.ec_str_p = &secp521r1_str_params,
3230
.our_priv_key = ecccdh_SECP521R1_7_test_vector_our_priv_key,
3231
.our_priv_key_len = sizeof(ecccdh_SECP521R1_7_test_vector_our_priv_key),
3232
.peer_pub_key = ecccdh_SECP521R1_7_test_vector_peer_pub_key,
3233
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_7_test_vector_peer_pub_key),
3234
.exp_our_pub_key = ecccdh_SECP521R1_7_test_vector_our_pub_key,
3235
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_7_test_vector_our_pub_key),
3236
.exp_shared_secret = ecccdh_SECP521R1_7_test_vector_shared_secret,
3237
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_7_test_vector_shared_secret),
3238
};
3239
#endif /* WITH_CURVE_SECP521R1 */
3240
3241
#ifdef WITH_CURVE_SECP521R1
3242
#define ECCCDH_SECP521R1_SELF_TEST_8
3243
/*** Tests for ECCCDH/SECP521R1 ***/
3244
static const u8 ecccdh_SECP521R1_8_test_vector_our_priv_key[] = {
3245
0x00, 0x00, 0x00, 0x28, 0x69, 0x2b, 0xe2, 0xbf, 0x5c, 0x4b, 0x48, 0x93, 0x98, 0x46, 0xfb, 0x3d, 0x5b, 0xce, 0x74, 0x65, 0x4b, 0xb2, 0x64, 0x6e, 0x15, 0xf8, 0x38, 0x9e, 0x23, 0x70, 0x8a, 0x1a, 0xfa, 0xdf, 0x56, 0x15, 0x11, 0xea, 0x0d, 0x99, 0x57, 0xd0, 0xb5, 0x34, 0x53, 0x81, 0x9d, 0x60, 0xfb, 0xa8, 0xf6, 0x5a, 0x18, 0xf7, 0xb2, 0x9d, 0xf0, 0x21, 0xb1, 0xbb, 0x01, 0xcd, 0x16, 0x32, 0x93, 0xac, 0xc3, 0xcc,
3246
};
3247
static const u8 ecccdh_SECP521R1_8_test_vector_peer_pub_key[] = {
3248
0x00, 0x84, 0x15, 0xf5, 0xbb, 0xd0, 0xee, 0xe3, 0x87, 0xd6, 0xc0, 0x9d, 0x0e, 0xf8, 0xac, 0xaf, 0x29, 0xc6, 0x6d, 0xb4, 0x5d, 0x6b, 0xa1, 0x01, 0x86, 0x0a, 0xe4, 0x5d, 0x3c, 0x60, 0xe1, 0xe0, 0xe3, 0xf7, 0x24, 0x7a, 0x46, 0x26, 0xa6, 0x0f, 0xdd, 0x40, 0x49, 0x65, 0xc3, 0x56, 0x6c, 0x79, 0xf6, 0x44, 0x9e, 0x85, 0x6c, 0xe0, 0xbf, 0x94, 0x61, 0x9f, 0x97, 0xda, 0x8d, 0xa2, 0x4b, 0xd2, 0xcf, 0xb6, 0x00, 0xfd, 0xd7, 0xc5, 0x9c, 0x58, 0xc3, 0x61, 0xbc, 0x50, 0xa7, 0xa5, 0xd0, 0xd3, 0x6f, 0x72, 0x3b, 0x17, 0xc4, 0xf2, 0xad, 0x2b, 0x03, 0xc2, 0x4d, 0x42, 0xdc, 0x50, 0xf7, 0x4a, 0x8c, 0x46, 0x5a, 0x0a, 0xfc, 0x46, 0x83, 0xf1, 0x0f, 0xab, 0x84, 0x65, 0x2d, 0xfe, 0x9e, 0x92, 0x8c, 0x26, 0x26, 0xb5, 0x45, 0x64, 0x53, 0xe1, 0x57, 0x3f, 0xf6, 0x0b, 0xe1, 0x50, 0x74, 0x67, 0xd4, 0x31, 0xfb, 0xb2,
3249
};
3250
static const u8 ecccdh_SECP521R1_8_test_vector_our_pub_key[] = {
3251
0x01, 0xcf, 0xdc, 0x10, 0xc7, 0x99, 0xf5, 0xc7, 0x9c, 0xb6, 0x93, 0x0a, 0x65, 0xfb, 0xa3, 0x51, 0x74, 0x8e, 0x07, 0x56, 0x79, 0x93, 0xe5, 0xe4, 0x10, 0xef, 0x4c, 0xac, 0xc4, 0xcd, 0x8a, 0x25, 0x78, 0x49, 0x91, 0xeb, 0x46, 0x74, 0xe4, 0x10, 0x50, 0xf9, 0x30, 0xc7, 0x19, 0x0a, 0xc8, 0x12, 0xb9, 0x24, 0x5f, 0x48, 0xa7, 0x97, 0x3b, 0x65, 0x8d, 0xaf, 0x40, 0x88, 0x22, 0xfe, 0x5b, 0x85, 0xf6, 0x68, 0x01, 0x80, 0xd9, 0xdd, 0xfc, 0x9a, 0xf7, 0x7b, 0x9c, 0x4a, 0x6f, 0x02, 0xa8, 0x34, 0xdb, 0x15, 0xe5, 0x35, 0xe0, 0xb3, 0x84, 0x5b, 0x2c, 0xce, 0x30, 0x38, 0x83, 0x01, 0xb5, 0x1c, 0xec, 0xbe, 0x32, 0x76, 0x30, 0x7e, 0xf4, 0x39, 0xb5, 0xc9, 0xe6, 0xa7, 0x2d, 0xc2, 0xd9, 0x4d, 0x87, 0x9b, 0xc3, 0x95, 0x05, 0x2d, 0xbb, 0x4a, 0x57, 0x87, 0xd0, 0x6e, 0xfb, 0x28, 0x02, 0x10, 0xfb, 0x8b, 0xe0, 0x37,
3252
};
3253
static const u8 ecccdh_SECP521R1_8_test_vector_shared_secret[] = {
3254
0x01, 0x05, 0xa3, 0x46, 0x98, 0x8b, 0x92, 0xed, 0x8c, 0x7a, 0x25, 0xce, 0x4d, 0x79, 0xd2, 0x1b, 0xc8, 0x6c, 0xfc, 0xc7, 0xf9, 0x9c, 0x6c, 0xd1, 0x9d, 0xbb, 0x4a, 0x39, 0xf4, 0x8a, 0xb9, 0x43, 0xb7, 0x9e, 0x4f, 0x06, 0x47, 0x34, 0x8d, 0xa0, 0xb8, 0x0b, 0xd8, 0x64, 0xb8, 0x5c, 0x6b, 0x8d, 0x92, 0x53, 0x6d, 0x6a, 0xa5, 0x44, 0xdc, 0x75, 0x37, 0xa0, 0x0c, 0x85, 0x8f, 0x8b, 0x66, 0x31, 0x9e, 0x25,
3255
};
3256
static const ecdh_test_case ecccdh_SECP521R1_8_test_case = {
3257
.name = "ECCCDH/SECP521R1 8",
3258
.ecdh_type = ECCCDH,
3259
.ec_str_p = &secp521r1_str_params,
3260
.our_priv_key = ecccdh_SECP521R1_8_test_vector_our_priv_key,
3261
.our_priv_key_len = sizeof(ecccdh_SECP521R1_8_test_vector_our_priv_key),
3262
.peer_pub_key = ecccdh_SECP521R1_8_test_vector_peer_pub_key,
3263
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_8_test_vector_peer_pub_key),
3264
.exp_our_pub_key = ecccdh_SECP521R1_8_test_vector_our_pub_key,
3265
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_8_test_vector_our_pub_key),
3266
.exp_shared_secret = ecccdh_SECP521R1_8_test_vector_shared_secret,
3267
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_8_test_vector_shared_secret),
3268
};
3269
#endif /* WITH_CURVE_SECP521R1 */
3270
3271
#ifdef WITH_CURVE_SECP521R1
3272
#define ECCCDH_SECP521R1_SELF_TEST_9
3273
/*** Tests for ECCCDH/SECP521R1 ***/
3274
static const u8 ecccdh_SECP521R1_9_test_vector_our_priv_key[] = {
3275
0x00, 0x00, 0x01, 0x19, 0x4d, 0x1e, 0xe6, 0x13, 0xf5, 0x36, 0x6c, 0xbc, 0x44, 0xb5, 0x04, 0xd2, 0x1a, 0x0c, 0xf6, 0x71, 0x5e, 0x20, 0x9c, 0xd3, 0x58, 0xf2, 0xdd, 0x5f, 0x3e, 0x71, 0xcc, 0x0d, 0x67, 0xd0, 0xe9, 0x64, 0x16, 0x8c, 0x42, 0xa0, 0x84, 0xeb, 0xda, 0x74, 0x6f, 0x98, 0x63, 0xa8, 0x6b, 0xac, 0xff, 0xc8, 0x19, 0xf1, 0xed, 0xf1, 0xb8, 0xc7, 0x27, 0xcc, 0xfb, 0x30, 0x47, 0x24, 0x0a, 0x57, 0xc4, 0x35,
3276
};
3277
static const u8 ecccdh_SECP521R1_9_test_vector_peer_pub_key[] = {
3278
0x01, 0xc7, 0x21, 0xee, 0xa8, 0x05, 0xa5, 0xcb, 0xa2, 0x9f, 0x34, 0xba, 0x57, 0x58, 0x77, 0x5b, 0xe0, 0xcf, 0x61, 0x60, 0xe6, 0xc0, 0x87, 0x23, 0xf5, 0xab, 0x17, 0xbf, 0x96, 0xa1, 0xff, 0x2b, 0xd9, 0x42, 0x79, 0x61, 0xa4, 0xf3, 0x4b, 0x07, 0xfc, 0x0b, 0x14, 0xca, 0x4b, 0x2b, 0xf6, 0x84, 0x5d, 0xeb, 0xd5, 0xa8, 0x69, 0xf1, 0x24, 0xeb, 0xfa, 0x7a, 0xa7, 0x2f, 0xe5, 0x65, 0x05, 0x0b, 0x7f, 0x18, 0x00, 0xb6, 0xe8, 0x9e, 0xb0, 0xe1, 0xdc, 0xf1, 0x81, 0x23, 0x6f, 0x7c, 0x54, 0x8f, 0xd1, 0xa8, 0xc1, 0x6b, 0x25, 0x8b, 0x52, 0xc1, 0xa9, 0xbf, 0xd3, 0xfe, 0x8f, 0x22, 0x84, 0x1b, 0x26, 0x76, 0x32, 0x65, 0xf0, 0x74, 0xc4, 0xcc, 0xf2, 0xd6, 0x34, 0xae, 0x97, 0xb7, 0x01, 0x95, 0x6f, 0x67, 0xa1, 0x10, 0x06, 0xc5, 0x2d, 0x97, 0x19, 0x7d, 0x92, 0xf5, 0x85, 0xf5, 0x74, 0x8b, 0xc2, 0x67, 0x2e, 0xeb,
3279
};
3280
static const u8 ecccdh_SECP521R1_9_test_vector_our_pub_key[] = {
3281
0x01, 0x6b, 0xd1, 0x5c, 0x8a, 0x58, 0xd3, 0x66, 0xf7, 0xf2, 0xb2, 0xf2, 0x98, 0xcc, 0x87, 0xb7, 0x48, 0x5e, 0x9e, 0xe7, 0x0d, 0x11, 0xd1, 0x24, 0x48, 0xb8, 0x37, 0x7c, 0x0a, 0x82, 0xc7, 0x62, 0x6f, 0x67, 0xaf, 0xf7, 0xf9, 0x7b, 0xe7, 0xa3, 0x54, 0x6b, 0xf4, 0x17, 0xee, 0xed, 0xdf, 0x75, 0xa9, 0x3c, 0x13, 0x01, 0x91, 0xc8, 0x41, 0x08, 0x04, 0x2e, 0xa2, 0xfc, 0xa1, 0x7f, 0xd3, 0xf8, 0x0d, 0x14, 0x01, 0x56, 0x05, 0x02, 0xd0, 0x4b, 0x74, 0xfc, 0xe1, 0x74, 0x3a, 0xab, 0x47, 0x7a, 0x9d, 0x1e, 0xac, 0x93, 0xe5, 0x22, 0x69, 0x81, 0xfd, 0xb9, 0x7a, 0x74, 0x78, 0xce, 0x4c, 0xe5, 0x66, 0xff, 0x72, 0x43, 0x93, 0x12, 0x84, 0xfa, 0xd8, 0x50, 0xb0, 0xc2, 0xbc, 0xae, 0x0d, 0xdd, 0x2d, 0x97, 0x79, 0x01, 0x60, 0xc1, 0xa2, 0xe7, 0x7c, 0x3e, 0xd6, 0xc9, 0x5e, 0xcc, 0x44, 0xb8, 0x9e, 0x26, 0x37, 0xfc,
3282
};
3283
static const u8 ecccdh_SECP521R1_9_test_vector_shared_secret[] = {
3284
0x00, 0x45, 0x31, 0xb3, 0xd2, 0xc6, 0xcd, 0x12, 0xf2, 0x16, 0x04, 0xc8, 0x61, 0x0e, 0x67, 0x23, 0xdb, 0xf4, 0xda, 0xf8, 0x0b, 0x5a, 0x45, 0x9d, 0x6b, 0xa5, 0x81, 0x43, 0x97, 0xd1, 0xc1, 0xf7, 0xa2, 0x1d, 0x7c, 0x11, 0x4b, 0xe9, 0x64, 0xe2, 0x73, 0x76, 0xaa, 0xeb, 0xe3, 0xa7, 0xbc, 0x3d, 0x6a, 0xf7, 0xa7, 0xf8, 0xc7, 0xbe, 0xfb, 0x61, 0x1a, 0xfe, 0x48, 0x7f, 0xf0, 0x32, 0x92, 0x1f, 0x75, 0x0f,
3285
};
3286
static const ecdh_test_case ecccdh_SECP521R1_9_test_case = {
3287
.name = "ECCCDH/SECP521R1 9",
3288
.ecdh_type = ECCCDH,
3289
.ec_str_p = &secp521r1_str_params,
3290
.our_priv_key = ecccdh_SECP521R1_9_test_vector_our_priv_key,
3291
.our_priv_key_len = sizeof(ecccdh_SECP521R1_9_test_vector_our_priv_key),
3292
.peer_pub_key = ecccdh_SECP521R1_9_test_vector_peer_pub_key,
3293
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_9_test_vector_peer_pub_key),
3294
.exp_our_pub_key = ecccdh_SECP521R1_9_test_vector_our_pub_key,
3295
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_9_test_vector_our_pub_key),
3296
.exp_shared_secret = ecccdh_SECP521R1_9_test_vector_shared_secret,
3297
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_9_test_vector_shared_secret),
3298
};
3299
#endif /* WITH_CURVE_SECP521R1 */
3300
3301
#ifdef WITH_CURVE_SECP521R1
3302
#define ECCCDH_SECP521R1_SELF_TEST_10
3303
/*** Tests for ECCCDH/SECP521R1 ***/
3304
static const u8 ecccdh_SECP521R1_10_test_vector_our_priv_key[] = {
3305
0x00, 0x00, 0x01, 0xfd, 0x90, 0xe3, 0xe4, 0x16, 0xe9, 0x8a, 0xa3, 0xf2, 0xb6, 0xaf, 0xa7, 0xf3, 0xbf, 0x36, 0x8e, 0x45, 0x1a, 0xd9, 0xca, 0x5b, 0xd5, 0x4b, 0x5b, 0x14, 0xae, 0xe2, 0xed, 0x67, 0x23, 0xdd, 0xe5, 0x18, 0x1f, 0x50, 0x85, 0xb6, 0x81, 0x69, 0xb0, 0x9f, 0xbe, 0xc7, 0x21, 0x37, 0x2c, 0xcf, 0x6b, 0x28, 0x47, 0x13, 0xf9, 0xa6, 0x35, 0x6b, 0x8d, 0x56, 0x0a, 0x8f, 0xf7, 0x8c, 0xa3, 0x73, 0x7c, 0x88,
3306
};
3307
static const u8 ecccdh_SECP521R1_10_test_vector_peer_pub_key[] = {
3308
0x01, 0xc3, 0x58, 0x23, 0xe4, 0x40, 0xa9, 0x36, 0x3a, 0xb9, 0x8d, 0x9f, 0xc7, 0xa7, 0xbc, 0x0c, 0x05, 0x32, 0xdc, 0x79, 0x77, 0xa7, 0x91, 0x65, 0x59, 0x9b, 0xf1, 0xa9, 0xcc, 0x64, 0xc0, 0x0f, 0xb3, 0x87, 0xb4, 0x2c, 0xca, 0x36, 0x52, 0x86, 0xe8, 0x43, 0x03, 0x60, 0xbf, 0xad, 0x36, 0x43, 0xbc, 0x31, 0x35, 0x4e, 0xda, 0x50, 0xdc, 0x93, 0x6c, 0x32, 0x9e, 0xcd, 0xb6, 0x09, 0x05, 0xc4, 0x0f, 0xcb, 0x00, 0xd9, 0xe7, 0xf4, 0x33, 0x53, 0x1e, 0x44, 0xdf, 0x4f, 0x6d, 0x51, 0x42, 0x01, 0xcb, 0xaa, 0xbb, 0x06, 0xba, 0xdd, 0x67, 0x83, 0xe0, 0x11, 0x11, 0x72, 0x6d, 0x81, 0x55, 0x31, 0xd2, 0x33, 0xc5, 0xcd, 0xb7, 0x22, 0x89, 0x3f, 0xfb, 0xb2, 0x02, 0x72, 0x59, 0xd5, 0x94, 0xde, 0x77, 0x43, 0x88, 0x09, 0x73, 0x81, 0x20, 0xc6, 0xf7, 0x83, 0x93, 0x4f, 0x92, 0x6c, 0x3f, 0xb6, 0x9b, 0x40, 0xc4, 0x09,
3309
};
3310
static const u8 ecccdh_SECP521R1_10_test_vector_our_pub_key[] = {
3311
0x01, 0xeb, 0xea, 0x1b, 0x10, 0xd3, 0xe3, 0xb9, 0x71, 0xb7, 0xef, 0xb6, 0x9f, 0xc8, 0x78, 0xde, 0x11, 0xc7, 0xf4, 0x72, 0xe4, 0xe4, 0xd3, 0x84, 0xc3, 0x1b, 0x8d, 0x62, 0x88, 0xd8, 0x07, 0x15, 0x17, 0xac, 0xad, 0xe9, 0xb3, 0x97, 0x96, 0xc7, 0xaf, 0x51, 0x63, 0xbc, 0xf7, 0x1a, 0xed, 0xa7, 0x77, 0x53, 0x3f, 0x38, 0x2c, 0x6c, 0xf0, 0xa4, 0xd9, 0xbb, 0xb9, 0x38, 0xc8, 0x5f, 0x44, 0xb7, 0x80, 0x37, 0x01, 0x6b, 0x0e, 0x3e, 0x19, 0xc2, 0x99, 0x6b, 0x2c, 0xbd, 0x1f, 0xf6, 0x47, 0x30, 0xe7, 0xca, 0x90, 0xed, 0xca, 0x19, 0x84, 0xf9, 0xb2, 0x95, 0x13, 0x33, 0x53, 0x5e, 0x57, 0x48, 0xba, 0xa3, 0x4a, 0x99, 0xf6, 0x1f, 0xf4, 0xd5, 0xf8, 0x12, 0x07, 0x9e, 0x0f, 0x01, 0xe8, 0x77, 0x89, 0xf3, 0x4e, 0xfd, 0xad, 0x80, 0x98, 0x01, 0x5e, 0xe7, 0x4a, 0x4f, 0x84, 0x6d, 0xd1, 0x90, 0xd1, 0x6d, 0xc6, 0xe1,
3312
};
3313
static const u8 ecccdh_SECP521R1_10_test_vector_shared_secret[] = {
3314
0x01, 0x00, 0xc8, 0x93, 0x59, 0x69, 0x07, 0x7b, 0xae, 0x0b, 0xa8, 0x9e, 0xf0, 0xdf, 0x81, 0x61, 0xd9, 0x75, 0xec, 0x58, 0x70, 0xac, 0x81, 0x1a, 0xe7, 0xe6, 0x5c, 0xa5, 0x39, 0x4e, 0xfb, 0xa4, 0xf0, 0x63, 0x3d, 0x41, 0xbf, 0x79, 0xea, 0x5e, 0x5b, 0x94, 0x96, 0xbb, 0xd7, 0xaa, 0xe0, 0x00, 0xb0, 0x59, 0x4b, 0xaa, 0x82, 0xef, 0x8f, 0x24, 0x4e, 0x69, 0x84, 0xae, 0x87, 0xae, 0x1e, 0xd1, 0x24, 0xb7,
3315
};
3316
static const ecdh_test_case ecccdh_SECP521R1_10_test_case = {
3317
.name = "ECCCDH/SECP521R1 10",
3318
.ecdh_type = ECCCDH,
3319
.ec_str_p = &secp521r1_str_params,
3320
.our_priv_key = ecccdh_SECP521R1_10_test_vector_our_priv_key,
3321
.our_priv_key_len = sizeof(ecccdh_SECP521R1_10_test_vector_our_priv_key),
3322
.peer_pub_key = ecccdh_SECP521R1_10_test_vector_peer_pub_key,
3323
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_10_test_vector_peer_pub_key),
3324
.exp_our_pub_key = ecccdh_SECP521R1_10_test_vector_our_pub_key,
3325
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_10_test_vector_our_pub_key),
3326
.exp_shared_secret = ecccdh_SECP521R1_10_test_vector_shared_secret,
3327
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_10_test_vector_shared_secret),
3328
};
3329
#endif /* WITH_CURVE_SECP521R1 */
3330
3331
#ifdef WITH_CURVE_SECP521R1
3332
#define ECCCDH_SECP521R1_SELF_TEST_11
3333
/*** Tests for ECCCDH/SECP521R1 ***/
3334
static const u8 ecccdh_SECP521R1_11_test_vector_our_priv_key[] = {
3335
0x00, 0x00, 0x00, 0x90, 0x12, 0xec, 0xfd, 0xad, 0xc8, 0x5c, 0xed, 0x63, 0x0a, 0xfe, 0xa5, 0x34, 0xcd, 0xc8, 0xe9, 0xd1, 0xab, 0x8b, 0xe5, 0xf3, 0x75, 0x3d, 0xcf, 0x5f, 0x2b, 0x09, 0xb4, 0x0e, 0xda, 0x66, 0xfc, 0x68, 0x58, 0x54, 0x9b, 0xc3, 0x6e, 0x6f, 0x8d, 0xf5, 0x59, 0x98, 0xcf, 0xa9, 0xa0, 0x70, 0x3a, 0xec, 0xf6, 0xc4, 0x27, 0x99, 0xc2, 0x45, 0x01, 0x10, 0x64, 0xf5, 0x30, 0xc0, 0x9d, 0xb9, 0x83, 0x69,
3336
};
3337
static const u8 ecccdh_SECP521R1_11_test_vector_peer_pub_key[] = {
3338
0x00, 0x09, 0x30, 0x57, 0xfb, 0x86, 0x2f, 0x2a, 0xd2, 0xe8, 0x2e, 0x58, 0x1b, 0xae, 0xb3, 0x32, 0x4e, 0x7b, 0x32, 0x94, 0x6f, 0x2b, 0xa8, 0x45, 0xa9, 0xbe, 0xee, 0xd8, 0x7d, 0x69, 0x95, 0xf5, 0x49, 0x18, 0xec, 0x66, 0x19, 0xb9, 0x93, 0x19, 0x55, 0xd5, 0xa8, 0x9d, 0x4d, 0x74, 0xad, 0xf1, 0x04, 0x6b, 0xb3, 0x62, 0x19, 0x2f, 0x2e, 0xf6, 0xbd, 0x3e, 0x3d, 0x2d, 0x04, 0xdd, 0x1f, 0x87, 0x05, 0x4a, 0x00, 0xaa, 0x3f, 0xb2, 0x44, 0x83, 0x35, 0xf6, 0x94, 0xe3, 0xcd, 0xa4, 0xae, 0x0c, 0xc7, 0x1b, 0x1b, 0x2f, 0x2a, 0x20, 0x6f, 0xa8, 0x02, 0xd7, 0x26, 0x2f, 0x19, 0x98, 0x3c, 0x44, 0x67, 0x4f, 0xe1, 0x53, 0x27, 0xac, 0xaa, 0xc1, 0xfa, 0x40, 0x42, 0x4c, 0x39, 0x5a, 0x65, 0x56, 0xcb, 0x81, 0x67, 0x31, 0x25, 0x27, 0xfa, 0xe5, 0x86, 0x5e, 0xcf, 0xfc, 0x14, 0xbb, 0xdc, 0x17, 0xda, 0x78, 0xcd, 0xcf,
3339
};
3340
static const u8 ecccdh_SECP521R1_11_test_vector_our_pub_key[] = {
3341
0x00, 0x23, 0x4e, 0x32, 0xbe, 0x0a, 0x90, 0x71, 0x31, 0xd2, 0xd1, 0x28, 0xa6, 0x47, 0x7e, 0x0c, 0xac, 0xeb, 0x86, 0xf0, 0x24, 0x79, 0x74, 0x5e, 0x0f, 0xe2, 0x45, 0xcb, 0x33, 0x2d, 0xe6, 0x31, 0xc0, 0x78, 0x87, 0x11, 0x60, 0x48, 0x2e, 0xee, 0xf5, 0x84, 0xe2, 0x74, 0xdf, 0x7f, 0xa4, 0x12, 0xce, 0xa3, 0xe1, 0xe9, 0x1f, 0x71, 0xec, 0xba, 0x87, 0x81, 0xd9, 0x20, 0x5d, 0x48, 0x38, 0x63, 0x41, 0xad, 0x01, 0xcf, 0x86, 0x45, 0x5b, 0x09, 0xb1, 0xc0, 0x05, 0xcf, 0xfb, 0xa8, 0xd7, 0x62, 0x89, 0xa3, 0x75, 0x96, 0x28, 0xc8, 0x74, 0xbe, 0xea, 0x46, 0x2f, 0x51, 0xf3, 0x0b, 0xd5, 0x81, 0xe3, 0x80, 0x31, 0x34, 0x30, 0x7d, 0xed, 0xbb, 0x77, 0x1b, 0x33, 0x34, 0xee, 0x15, 0xbe, 0x2e, 0x24, 0x2c, 0xd7, 0x9c, 0x34, 0x07, 0xd2, 0xf5, 0x89, 0x35, 0x45, 0x6c, 0x69, 0x41, 0xdd, 0x9b, 0x6d, 0x15, 0x5a, 0x46,
3342
};
3343
static const u8 ecccdh_SECP521R1_11_test_vector_shared_secret[] = {
3344
0x01, 0x7f, 0x36, 0xaf, 0x19, 0x30, 0x38, 0x41, 0xd1, 0x3a, 0x38, 0x9d, 0x95, 0xec, 0x0b, 0x80, 0x1c, 0x7f, 0x9a, 0x67, 0x9a, 0x82, 0x31, 0x46, 0xc7, 0x5c, 0x17, 0xbc, 0x44, 0x25, 0x6e, 0x9a, 0xd4, 0x22, 0xa4, 0xf8, 0xb3, 0x1f, 0x14, 0x64, 0x7b, 0x2c, 0x7d, 0x31, 0x7b, 0x93, 0x3f, 0x7c, 0x29, 0x46, 0xc4, 0xb8, 0xab, 0xd1, 0xd5, 0x6d, 0x62, 0x0f, 0xab, 0x1b, 0x5f, 0xf1, 0xa3, 0xad, 0xc7, 0x1f,
3345
};
3346
static const ecdh_test_case ecccdh_SECP521R1_11_test_case = {
3347
.name = "ECCCDH/SECP521R1 11",
3348
.ecdh_type = ECCCDH,
3349
.ec_str_p = &secp521r1_str_params,
3350
.our_priv_key = ecccdh_SECP521R1_11_test_vector_our_priv_key,
3351
.our_priv_key_len = sizeof(ecccdh_SECP521R1_11_test_vector_our_priv_key),
3352
.peer_pub_key = ecccdh_SECP521R1_11_test_vector_peer_pub_key,
3353
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_11_test_vector_peer_pub_key),
3354
.exp_our_pub_key = ecccdh_SECP521R1_11_test_vector_our_pub_key,
3355
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_11_test_vector_our_pub_key),
3356
.exp_shared_secret = ecccdh_SECP521R1_11_test_vector_shared_secret,
3357
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_11_test_vector_shared_secret),
3358
};
3359
#endif /* WITH_CURVE_SECP521R1 */
3360
3361
#ifdef WITH_CURVE_SECP521R1
3362
#define ECCCDH_SECP521R1_SELF_TEST_12
3363
/*** Tests for ECCCDH/SECP521R1 ***/
3364
static const u8 ecccdh_SECP521R1_12_test_vector_our_priv_key[] = {
3365
0x00, 0x00, 0x01, 0xb5, 0xff, 0x84, 0x7f, 0x8e, 0xff, 0x20, 0xb8, 0x8c, 0xfa, 0xd4, 0x2c, 0x06, 0xe5, 0x8c, 0x37, 0x42, 0xf2, 0xf8, 0xf1, 0xfd, 0xfd, 0x64, 0xb5, 0x39, 0xba, 0x48, 0xc2, 0x59, 0x26, 0x92, 0x6b, 0xd5, 0xe3, 0x32, 0xb4, 0x56, 0x49, 0xc0, 0xb1, 0x84, 0xf7, 0x72, 0x55, 0xe9, 0xd5, 0x8f, 0xe8, 0xaf, 0xa1, 0xa6, 0xd9, 0x68, 0xe2, 0xcb, 0x1d, 0x46, 0x37, 0x77, 0x71, 0x20, 0xc7, 0x65, 0xc1, 0x28,
3366
};
3367
static const u8 ecccdh_SECP521R1_12_test_vector_peer_pub_key[] = {
3368
0x00, 0x83, 0x19, 0x2e, 0xd0, 0xb1, 0xcb, 0x31, 0xf7, 0x58, 0x17, 0x79, 0x49, 0x37, 0xf6, 0x6a, 0xd9, 0x1c, 0xf7, 0x45, 0x52, 0xcd, 0x51, 0x0c, 0xed, 0xb9, 0xfd, 0x64, 0x13, 0x10, 0x42, 0x2a, 0xf5, 0xd0, 0x9f, 0x22, 0x1c, 0xad, 0x24, 0x9e, 0xe8, 0x14, 0xd1, 0x6d, 0xd7, 0xac, 0x84, 0xde, 0xd9, 0xea, 0xcd, 0xc2, 0x83, 0x40, 0xfc, 0xfc, 0x9c, 0x0c, 0x06, 0xab, 0xe3, 0x0a, 0x2f, 0xc2, 0x8c, 0xd8, 0x00, 0x22, 0x12, 0xed, 0x86, 0x8c, 0x9b, 0xa0, 0xfb, 0x2c, 0x91, 0xe2, 0xc3, 0x9b, 0xa9, 0x39, 0x96, 0xa3, 0xe4, 0xeb, 0xf4, 0x5f, 0x28, 0x52, 0xd0, 0x92, 0x8c, 0x48, 0x93, 0x0e, 0x87, 0x5c, 0xc7, 0xb4, 0x28, 0xd0, 0xe7, 0xf3, 0xf4, 0xd5, 0x03, 0xe5, 0xd6, 0x0c, 0x68, 0xcb, 0x49, 0xb1, 0x3c, 0x24, 0x80, 0xcd, 0x48, 0x6b, 0xed, 0x92, 0x00, 0xca, 0xdd, 0xad, 0xdf, 0xe4, 0xff, 0x8e, 0x35, 0x62,
3369
};
3370
static const u8 ecccdh_SECP521R1_12_test_vector_our_pub_key[] = {
3371
0x01, 0xde, 0x3d, 0xc9, 0x26, 0x3b, 0xc8, 0xc4, 0x96, 0x9d, 0xc6, 0x84, 0xbe, 0x0e, 0xec, 0x54, 0xbe, 0xfd, 0x9a, 0x9f, 0x3d, 0xba, 0x19, 0x4d, 0x86, 0x58, 0xa7, 0x89, 0x34, 0x1b, 0xf0, 0xd7, 0x8d, 0x84, 0xda, 0x67, 0x35, 0x22, 0x7c, 0xaf, 0xaf, 0x09, 0x35, 0x19, 0x51, 0x69, 0x11, 0x97, 0x57, 0x3c, 0x8c, 0x36, 0x0a, 0x11, 0xe5, 0x28, 0x57, 0x12, 0xb8, 0xbb, 0xdf, 0x5a, 0xc9, 0x1b, 0x97, 0x7c, 0x00, 0x81, 0x2d, 0xe5, 0x8c, 0xd0, 0x95, 0xec, 0x2e, 0x5a, 0x9b, 0x24, 0x7e, 0xb3, 0xed, 0x41, 0xd8, 0xbe, 0xf6, 0xae, 0xac, 0xe1, 0x94, 0xa7, 0xa0, 0x5b, 0x65, 0xaa, 0x5d, 0x28, 0x9f, 0xbc, 0x9b, 0x17, 0x70, 0xec, 0x84, 0xbb, 0x6b, 0xe0, 0xc2, 0xc6, 0x4c, 0xc3, 0x7c, 0x1d, 0x54, 0xa7, 0xf5, 0xd7, 0x13, 0x77, 0xa9, 0xad, 0xbe, 0x20, 0xf2, 0x6f, 0x6f, 0x2b, 0x54, 0x4a, 0x82, 0x1e, 0xa8, 0x31,
3372
};
3373
static const u8 ecccdh_SECP521R1_12_test_vector_shared_secret[] = {
3374
0x00, 0x06, 0x2f, 0x9f, 0xc2, 0x9a, 0xe1, 0xa6, 0x8b, 0x2e, 0xe0, 0xdc, 0xf9, 0x56, 0xcb, 0xd3, 0x8c, 0x88, 0xae, 0x5f, 0x64, 0x5e, 0xaa, 0x54, 0x6b, 0x00, 0xeb, 0xe8, 0x7a, 0x72, 0x60, 0xbf, 0x72, 0x4b, 0xe2, 0x0d, 0x34, 0xb9, 0xd0, 0x20, 0x76, 0x65, 0x5c, 0x93, 0x3d, 0x05, 0x6b, 0x21, 0xe3, 0x04, 0xc2, 0x4d, 0xdb, 0x1d, 0xed, 0xf1, 0xdd, 0x76, 0xde, 0x61, 0x1f, 0xc4, 0xa2, 0x34, 0x03, 0x36,
3375
};
3376
static const ecdh_test_case ecccdh_SECP521R1_12_test_case = {
3377
.name = "ECCCDH/SECP521R1 12",
3378
.ecdh_type = ECCCDH,
3379
.ec_str_p = &secp521r1_str_params,
3380
.our_priv_key = ecccdh_SECP521R1_12_test_vector_our_priv_key,
3381
.our_priv_key_len = sizeof(ecccdh_SECP521R1_12_test_vector_our_priv_key),
3382
.peer_pub_key = ecccdh_SECP521R1_12_test_vector_peer_pub_key,
3383
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_12_test_vector_peer_pub_key),
3384
.exp_our_pub_key = ecccdh_SECP521R1_12_test_vector_our_pub_key,
3385
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_12_test_vector_our_pub_key),
3386
.exp_shared_secret = ecccdh_SECP521R1_12_test_vector_shared_secret,
3387
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_12_test_vector_shared_secret),
3388
};
3389
#endif /* WITH_CURVE_SECP521R1 */
3390
3391
#ifdef WITH_CURVE_SECP521R1
3392
#define ECCCDH_SECP521R1_SELF_TEST_13
3393
/*** Tests for ECCCDH/SECP521R1 ***/
3394
static const u8 ecccdh_SECP521R1_13_test_vector_our_priv_key[] = {
3395
0x00, 0x00, 0x01, 0x1a, 0x63, 0x47, 0xd4, 0xe8, 0x01, 0xc9, 0x19, 0x23, 0x48, 0x83, 0x54, 0xcc, 0x53, 0x3e, 0x7e, 0x35, 0xfd, 0xdf, 0x81, 0xff, 0x0f, 0xb7, 0xf5, 0x6b, 0xb0, 0x72, 0x6e, 0x0c, 0x29, 0xee, 0x5d, 0xcd, 0xc5, 0xf3, 0x94, 0xba, 0x54, 0xcf, 0x57, 0x26, 0x90, 0x48, 0xaa, 0xb6, 0xe0, 0x55, 0x89, 0x5c, 0x8d, 0xa2, 0x4b, 0x8b, 0x06, 0x39, 0xa7, 0x42, 0x31, 0x43, 0x90, 0xcc, 0x04, 0x19, 0x0e, 0xd6,
3396
};
3397
static const u8 ecccdh_SECP521R1_13_test_vector_peer_pub_key[] = {
3398
0x01, 0xa8, 0x9b, 0x63, 0x6a, 0x93, 0xe5, 0xd2, 0xba, 0x6c, 0x22, 0x92, 0xbf, 0x23, 0x03, 0x3a, 0x84, 0xf0, 0x6a, 0x3a, 0xc1, 0x22, 0x0e, 0xa7, 0x1e, 0x80, 0x6a, 0xfb, 0xe0, 0x97, 0xa8, 0x04, 0xcc, 0x67, 0xe9, 0xba, 0xa5, 0x14, 0xcf, 0xb6, 0xc1, 0x2c, 0x91, 0x94, 0xbe, 0x30, 0x21, 0x2b, 0xf7, 0xaa, 0xe7, 0xfd, 0xf6, 0xd3, 0x76, 0xc2, 0x12, 0xf0, 0x55, 0x4e, 0x65, 0x64, 0x63, 0xff, 0xab, 0x7e, 0x01, 0x82, 0xef, 0xca, 0xf7, 0x0f, 0xc4, 0x12, 0xd3, 0x36, 0x60, 0x2e, 0x01, 0x4d, 0xa4, 0x72, 0x56, 0xa0, 0xb6, 0x06, 0xf2, 0xad, 0xdc, 0xce, 0x80, 0x53, 0xbf, 0x81, 0x7a, 0xc8, 0x65, 0x6b, 0xb4, 0xe4, 0x2f, 0x14, 0xc8, 0xcb, 0xf2, 0xa6, 0x8f, 0x48, 0x8a, 0xb3, 0x5d, 0xcd, 0xf6, 0x40, 0x56, 0x27, 0x1d, 0xee, 0x1f, 0x60, 0x6a, 0x44, 0x0b, 0xa4, 0xbd, 0x4e, 0x5a, 0x11, 0xb8, 0xb8, 0xe5, 0x4f,
3399
};
3400
static const u8 ecccdh_SECP521R1_13_test_vector_our_pub_key[] = {
3401
0x00, 0xfe, 0x30, 0x26, 0x7f, 0x33, 0xba, 0x5c, 0xde, 0xfc, 0x25, 0xcb, 0xb3, 0xc9, 0x32, 0x0d, 0xad, 0x9c, 0xcb, 0x1d, 0x7d, 0x37, 0x66, 0x44, 0x62, 0x0c, 0xa4, 0xfa, 0xde, 0xe5, 0x62, 0x6a, 0x3c, 0xed, 0xe2, 0x5a, 0xd2, 0x54, 0x62, 0x4d, 0xef, 0x72, 0x7a, 0x70, 0x48, 0xf7, 0x14, 0x5f, 0x76, 0x16, 0x2a, 0xa9, 0x80, 0x42, 0xf9, 0xb1, 0x23, 0xb2, 0x07, 0x6f, 0x8e, 0x8c, 0xf5, 0x9b, 0x3f, 0xdf, 0x00, 0x11, 0x45, 0xdc, 0x66, 0x31, 0x95, 0x3b, 0x6e, 0x29, 0x45, 0xe9, 0x43, 0x01, 0xd6, 0xcb, 0xb0, 0x98, 0xfe, 0x4b, 0x04, 0xf7, 0xee, 0x9b, 0x09, 0x41, 0x1d, 0xf1, 0x04, 0xdc, 0x82, 0xd7, 0xd7, 0x9e, 0xc4, 0x6a, 0x01, 0xed, 0x0f, 0x2d, 0x3e, 0x7d, 0xb6, 0xeb, 0x68, 0x06, 0x94, 0xbd, 0xeb, 0x10, 0x7c, 0x10, 0x78, 0xae, 0xc6, 0xca, 0xbd, 0x9e, 0xbe, 0xe3, 0xd3, 0x42, 0xfe, 0x7e, 0x54, 0xdf,
3402
};
3403
static const u8 ecccdh_SECP521R1_13_test_vector_shared_secret[] = {
3404
0x01, 0x28, 0xab, 0x09, 0xbf, 0xec, 0x54, 0x06, 0x79, 0x9e, 0x61, 0x0f, 0x77, 0x2b, 0xa1, 0x7e, 0x89, 0x22, 0x49, 0xfa, 0x8e, 0x0e, 0x7b, 0x18, 0xa0, 0x4b, 0x91, 0x97, 0x03, 0x4b, 0x25, 0x0b, 0x48, 0x29, 0x4f, 0x18, 0x67, 0xfb, 0x96, 0x41, 0x51, 0x8f, 0x92, 0x76, 0x60, 0x66, 0xa0, 0x7a, 0x8b, 0x91, 0x7b, 0x0e, 0x76, 0x87, 0x9e, 0x10, 0x11, 0xe5, 0x1c, 0xcb, 0xd9, 0xf5, 0x40, 0xc5, 0x4d, 0x4f,
3405
};
3406
static const ecdh_test_case ecccdh_SECP521R1_13_test_case = {
3407
.name = "ECCCDH/SECP521R1 13",
3408
.ecdh_type = ECCCDH,
3409
.ec_str_p = &secp521r1_str_params,
3410
.our_priv_key = ecccdh_SECP521R1_13_test_vector_our_priv_key,
3411
.our_priv_key_len = sizeof(ecccdh_SECP521R1_13_test_vector_our_priv_key),
3412
.peer_pub_key = ecccdh_SECP521R1_13_test_vector_peer_pub_key,
3413
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_13_test_vector_peer_pub_key),
3414
.exp_our_pub_key = ecccdh_SECP521R1_13_test_vector_our_pub_key,
3415
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_13_test_vector_our_pub_key),
3416
.exp_shared_secret = ecccdh_SECP521R1_13_test_vector_shared_secret,
3417
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_13_test_vector_shared_secret),
3418
};
3419
#endif /* WITH_CURVE_SECP521R1 */
3420
3421
#ifdef WITH_CURVE_SECP521R1
3422
#define ECCCDH_SECP521R1_SELF_TEST_14
3423
/*** Tests for ECCCDH/SECP521R1 ***/
3424
static const u8 ecccdh_SECP521R1_14_test_vector_our_priv_key[] = {
3425
0x00, 0x00, 0x00, 0x22, 0xb6, 0xd2, 0xa2, 0x2d, 0x71, 0xdf, 0xaa, 0x81, 0x1d, 0x2d, 0x9f, 0x9f, 0x31, 0xfb, 0xed, 0x27, 0xf2, 0xe1, 0xf3, 0xd2, 0x39, 0x53, 0x8d, 0xdf, 0x3e, 0x4c, 0xc8, 0xc3, 0x9a, 0x33, 0x02, 0x66, 0xdb, 0x25, 0xb7, 0xbc, 0x0a, 0x97, 0x04, 0xf1, 0x7b, 0xde, 0x7f, 0x35, 0x92, 0xbf, 0x5f, 0x1f, 0x2d, 0x4b, 0x56, 0x01, 0x3a, 0xac, 0xc3, 0xd8, 0xd1, 0xbc, 0x02, 0xf0, 0x0d, 0x31, 0x46, 0xcc,
3426
};
3427
static const u8 ecccdh_SECP521R1_14_test_vector_peer_pub_key[] = {
3428
0x01, 0x72, 0x00, 0xb3, 0xf1, 0x6a, 0x68, 0xcb, 0xae, 0xd2, 0xbf, 0x78, 0xba, 0x8c, 0xdd, 0xfb, 0x6c, 0xff, 0xac, 0x26, 0x2b, 0xba, 0x00, 0xfb, 0xc2, 0x5f, 0x9d, 0xc7, 0x2a, 0x07, 0xce, 0x59, 0x37, 0x29, 0x04, 0x89, 0x9f, 0x36, 0x4c, 0x44, 0xcb, 0x26, 0x4c, 0x09, 0x7b, 0x64, 0x7d, 0x44, 0x12, 0xbe, 0xe3, 0xe5, 0x19, 0x89, 0x2d, 0x53, 0x4d, 0x91, 0x29, 0xf8, 0xa2, 0x8f, 0x75, 0x00, 0xfe, 0xe7, 0x00, 0xba, 0xba, 0x8d, 0x67, 0x2a, 0x4f, 0x4a, 0x3b, 0x63, 0xde, 0x48, 0xb9, 0x6f, 0x56, 0xe1, 0x8d, 0xf5, 0xd6, 0x8f, 0x7d, 0x70, 0xd5, 0x10, 0x98, 0x33, 0xf4, 0x37, 0x70, 0xd6, 0x73, 0x2e, 0x06, 0xb3, 0x9a, 0xd6, 0x0d, 0x93, 0xe5, 0xb4, 0x3d, 0xb8, 0x78, 0x9f, 0x1e, 0xc0, 0xab, 0xa4, 0x72, 0x86, 0xa3, 0x9e, 0xa5, 0x84, 0x23, 0x5a, 0xce, 0xa7, 0x57, 0xdb, 0xf1, 0x3d, 0x53, 0xb5, 0x83, 0x64,
3429
};
3430
static const u8 ecccdh_SECP521R1_14_test_vector_our_pub_key[] = {
3431
0x00, 0xba, 0x38, 0xcf, 0xbf, 0x9f, 0xd2, 0x51, 0x8a, 0x3f, 0x61, 0xd4, 0x35, 0x49, 0xe7, 0xa6, 0xa6, 0xd2, 0x8b, 0x2b, 0xe5, 0x7f, 0xfd, 0x3e, 0x0f, 0xac, 0xeb, 0x63, 0x6b, 0x34, 0xed, 0x17, 0xe0, 0x44, 0xa9, 0xf2, 0x49, 0xda, 0xe8, 0xfc, 0x13, 0x2e, 0x93, 0x7e, 0x2d, 0x93, 0x49, 0xcd, 0x2e, 0xd7, 0x7b, 0xb1, 0x04, 0x9c, 0xeb, 0x69, 0x2a, 0x2e, 0xc5, 0xb1, 0x7a, 0xd6, 0x15, 0x02, 0xa6, 0x4c, 0x00, 0x1e, 0xc9, 0x1d, 0x30, 0x58, 0x57, 0x3f, 0xa6, 0xc0, 0x56, 0x4a, 0x02, 0xa1, 0xa0, 0x10, 0x16, 0x0c, 0x31, 0x3b, 0xc7, 0xc7, 0x35, 0x10, 0xdc, 0x98, 0x3e, 0x54, 0x61, 0x68, 0x2b, 0x5b, 0xe0, 0x0d, 0xbc, 0xe7, 0xe2, 0xc6, 0x82, 0xad, 0x73, 0xf2, 0x9c, 0xa8, 0x22, 0xcd, 0xc1, 0x11, 0xf6, 0x8f, 0xab, 0xe3, 0x3a, 0x7b, 0x38, 0x4a, 0x64, 0x83, 0x42, 0xc3, 0xcd, 0xb9, 0xf0, 0x50, 0xbc, 0xdb,
3432
};
3433
static const u8 ecccdh_SECP521R1_14_test_vector_shared_secret[] = {
3434
0x01, 0x01, 0xe4, 0x62, 0xe9, 0xd9, 0x15, 0x99, 0x68, 0xf6, 0x44, 0x0e, 0x95, 0x6f, 0x11, 0xdc, 0xf2, 0x22, 0x7a, 0xe4, 0xae, 0xa8, 0x16, 0x67, 0x12, 0x2b, 0x6a, 0xf9, 0x23, 0x9a, 0x29, 0x1e, 0xb5, 0xd6, 0xcf, 0x5a, 0x40, 0x87, 0xf3, 0x58, 0x52, 0x5f, 0xca, 0xcf, 0xa4, 0x6b, 0xb2, 0xdb, 0x01, 0xa7, 0x5a, 0xf1, 0xba, 0x51, 0x9b, 0x2d, 0x31, 0xda, 0x33, 0xed, 0xa8, 0x7a, 0x9d, 0x56, 0x57, 0x48,
3435
};
3436
static const ecdh_test_case ecccdh_SECP521R1_14_test_case = {
3437
.name = "ECCCDH/SECP521R1 14",
3438
.ecdh_type = ECCCDH,
3439
.ec_str_p = &secp521r1_str_params,
3440
.our_priv_key = ecccdh_SECP521R1_14_test_vector_our_priv_key,
3441
.our_priv_key_len = sizeof(ecccdh_SECP521R1_14_test_vector_our_priv_key),
3442
.peer_pub_key = ecccdh_SECP521R1_14_test_vector_peer_pub_key,
3443
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_14_test_vector_peer_pub_key),
3444
.exp_our_pub_key = ecccdh_SECP521R1_14_test_vector_our_pub_key,
3445
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_14_test_vector_our_pub_key),
3446
.exp_shared_secret = ecccdh_SECP521R1_14_test_vector_shared_secret,
3447
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_14_test_vector_shared_secret),
3448
};
3449
#endif /* WITH_CURVE_SECP521R1 */
3450
3451
#ifdef WITH_CURVE_SECP521R1
3452
#define ECCCDH_SECP521R1_SELF_TEST_15
3453
/*** Tests for ECCCDH/SECP521R1 ***/
3454
static const u8 ecccdh_SECP521R1_15_test_vector_our_priv_key[] = {
3455
0x00, 0x00, 0x00, 0x5b, 0xac, 0xff, 0xf2, 0x68, 0xac, 0xf6, 0x55, 0x3c, 0x3c, 0x58, 0x3b, 0x46, 0x4e, 0xa3, 0x6a, 0x1d, 0x35, 0xe2, 0xb2, 0x57, 0xa5, 0xd4, 0x9e, 0xb3, 0x41, 0x9d, 0x5a, 0x09, 0x50, 0x87, 0xc2, 0xfb, 0x4d, 0x15, 0xcf, 0x5b, 0xf5, 0xaf, 0x81, 0x6d, 0x0f, 0x3f, 0xf7, 0x58, 0x64, 0x90, 0xcc, 0xd3, 0xdd, 0xc1, 0xa9, 0x8b, 0x39, 0xce, 0x63, 0x74, 0x9c, 0x62, 0x88, 0xce, 0x0d, 0xbd, 0xac, 0x7d,
3456
};
3457
static const u8 ecccdh_SECP521R1_15_test_vector_peer_pub_key[] = {
3458
0x00, 0x4e, 0xfd, 0x5d, 0xbd, 0x2f, 0x97, 0x9e, 0x38, 0x31, 0xce, 0x98, 0xf8, 0x23, 0x55, 0xd6, 0xca, 0x14, 0xa5, 0x75, 0x78, 0x42, 0x87, 0x58, 0x82, 0x99, 0x0a, 0xb8, 0x5a, 0xb9, 0xb7, 0x35, 0x2d, 0xd6, 0xb9, 0xb2, 0xf4, 0xea, 0x9a, 0x1e, 0x95, 0xc3, 0x88, 0x0d, 0x65, 0xd1, 0xf3, 0x60, 0x2f, 0x9c, 0xa6, 0x53, 0xdc, 0x34, 0x6f, 0xac, 0x85, 0x86, 0x58, 0xd7, 0x56, 0x26, 0xf4, 0xd4, 0xfb, 0x08, 0x00, 0x61, 0xcf, 0x15, 0xdb, 0xda, 0xa7, 0xf3, 0x15, 0x89, 0xc9, 0x84, 0x00, 0x37, 0x3d, 0xa2, 0x84, 0x50, 0x6d, 0x70, 0xc8, 0x9f, 0x07, 0x4e, 0xd2, 0x62, 0xa9, 0xe2, 0x81, 0x40, 0x79, 0x6b, 0x72, 0x36, 0xc2, 0xee, 0xf9, 0x90, 0x16, 0x08, 0x5e, 0x71, 0x55, 0x2f, 0xf4, 0x88, 0xc7, 0x2b, 0x73, 0x39, 0xfe, 0xfb, 0x79, 0x15, 0xc3, 0x84, 0x59, 0xcb, 0x20, 0xab, 0x85, 0xae, 0xc4, 0xe4, 0x50, 0x52,
3459
};
3460
static const u8 ecccdh_SECP521R1_15_test_vector_our_pub_key[] = {
3461
0x00, 0x36, 0xe4, 0x88, 0xda, 0x75, 0x81, 0x47, 0x2a, 0x9d, 0x8e, 0x62, 0x8c, 0x58, 0xd6, 0xad, 0x72, 0x73, 0x11, 0xb7, 0xe6, 0xa3, 0xf6, 0xae, 0x33, 0xa8, 0x54, 0x4f, 0x34, 0xb0, 0x92, 0x80, 0x24, 0x90, 0x20, 0xbe, 0x71, 0x96, 0x91, 0x6f, 0xaf, 0xd9, 0x0e, 0x2e, 0xc5, 0x4b, 0x66, 0xb5, 0x46, 0x8d, 0x23, 0x61, 0xb9, 0x9b, 0x56, 0xfa, 0x00, 0xd7, 0xac, 0x37, 0xab, 0xb8, 0xc6, 0xf1, 0x66, 0x53, 0x01, 0x1e, 0xdb, 0x9f, 0xb8, 0xad, 0xb6, 0xa4, 0x3f, 0x4f, 0x5f, 0x5f, 0xdc, 0x14, 0x21, 0xc9, 0xfe, 0x04, 0xfc, 0x8b, 0xa4, 0x6c, 0x9b, 0x66, 0x33, 0x4e, 0x3a, 0xf9, 0x27, 0xc8, 0xbe, 0xfb, 0x43, 0x07, 0x10, 0x4f, 0x29, 0x9a, 0xce, 0xc4, 0xe3, 0x0f, 0x81, 0x2d, 0x93, 0x45, 0xc9, 0x72, 0x0d, 0x19, 0x86, 0x9d, 0xbf, 0xff, 0xd4, 0xca, 0x3e, 0x7d, 0x27, 0x13, 0xeb, 0x5f, 0xc3, 0xf4, 0x26, 0x15,
3462
};
3463
static const u8 ecccdh_SECP521R1_15_test_vector_shared_secret[] = {
3464
0x01, 0x41, 0xd6, 0xa4, 0xb7, 0x19, 0xab, 0x67, 0xea, 0xf0, 0x4a, 0x92, 0xc0, 0xa4, 0x1e, 0x2d, 0xda, 0x78, 0xf4, 0x35, 0x4f, 0xb9, 0x0b, 0xdc, 0x35, 0x20, 0x2c, 0xc7, 0x69, 0x9b, 0x9b, 0x04, 0xd4, 0x96, 0x16, 0xf8, 0x22, 0x55, 0xde, 0xbf, 0x7b, 0xbe, 0xc0, 0x45, 0xae, 0x58, 0xf9, 0x82, 0xa6, 0x69, 0x05, 0xfc, 0xfa, 0xe6, 0x9d, 0x68, 0x97, 0x85, 0xe3, 0x8c, 0x86, 0x8e, 0xb4, 0xa2, 0x7e, 0x7b,
3465
};
3466
static const ecdh_test_case ecccdh_SECP521R1_15_test_case = {
3467
.name = "ECCCDH/SECP521R1 15",
3468
.ecdh_type = ECCCDH,
3469
.ec_str_p = &secp521r1_str_params,
3470
.our_priv_key = ecccdh_SECP521R1_15_test_vector_our_priv_key,
3471
.our_priv_key_len = sizeof(ecccdh_SECP521R1_15_test_vector_our_priv_key),
3472
.peer_pub_key = ecccdh_SECP521R1_15_test_vector_peer_pub_key,
3473
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_15_test_vector_peer_pub_key),
3474
.exp_our_pub_key = ecccdh_SECP521R1_15_test_vector_our_pub_key,
3475
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_15_test_vector_our_pub_key),
3476
.exp_shared_secret = ecccdh_SECP521R1_15_test_vector_shared_secret,
3477
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_15_test_vector_shared_secret),
3478
};
3479
#endif /* WITH_CURVE_SECP521R1 */
3480
3481
#ifdef WITH_CURVE_SECP521R1
3482
#define ECCCDH_SECP521R1_SELF_TEST_16
3483
/*** Tests for ECCCDH/SECP521R1 ***/
3484
static const u8 ecccdh_SECP521R1_16_test_vector_our_priv_key[] = {
3485
0x00, 0x00, 0x00, 0x8e, 0x2c, 0x93, 0xc5, 0x42, 0x38, 0x76, 0x22, 0x3a, 0x63, 0x7c, 0xad, 0x36, 0x7c, 0x85, 0x89, 0xda, 0x69, 0xa2, 0xd0, 0xfc, 0x68, 0x61, 0x2f, 0x31, 0x92, 0x3a, 0xe5, 0x02, 0x19, 0xdf, 0x24, 0x52, 0xe7, 0xcc, 0x92, 0x61, 0x5b, 0x67, 0xf1, 0x7b, 0x57, 0xff, 0xd2, 0xf5, 0x2b, 0x19, 0x15, 0x4b, 0xb4, 0x0d, 0x77, 0x15, 0x33, 0x64, 0x20, 0xfd, 0xe2, 0xe8, 0x9f, 0xee, 0x24, 0x4f, 0x59, 0xdc,
3486
};
3487
static const u8 ecccdh_SECP521R1_16_test_vector_peer_pub_key[] = {
3488
0x01, 0x29, 0x89, 0x1d, 0xe0, 0xcf, 0x3c, 0xf8, 0x2e, 0x8c, 0x2c, 0xf1, 0xbf, 0x90, 0xbb, 0x29, 0x6f, 0xe0, 0x0a, 0xb0, 0x8c, 0xa4, 0x5b, 0xb7, 0x89, 0x2e, 0x0e, 0x22, 0x7a, 0x50, 0x4f, 0xdd, 0x05, 0xd2, 0x38, 0x1a, 0x44, 0x48, 0xb6, 0x8a, 0xdf, 0xf9, 0xc4, 0x15, 0x3c, 0x87, 0xea, 0xcb, 0x78, 0x33, 0x0d, 0x8b, 0xd5, 0x25, 0x15, 0xf9, 0xf9, 0xa0, 0xb5, 0x8e, 0x85, 0xf4, 0x46, 0xbb, 0x4e, 0x10, 0x00, 0x9e, 0xdd, 0x67, 0x96, 0x96, 0xd3, 0xd1, 0xd0, 0xef, 0x32, 0x7f, 0x20, 0x03, 0x83, 0x25, 0x3f, 0x64, 0x13, 0x68, 0x3d, 0x9e, 0x4f, 0xcc, 0x87, 0xbb, 0x35, 0xf1, 0x12, 0xc2, 0xf1, 0x10, 0x09, 0x8d, 0x15, 0xe5, 0x70, 0x1d, 0x7c, 0xee, 0xe4, 0x16, 0x29, 0x1f, 0xf5, 0xfe, 0xd8, 0x5e, 0x68, 0x7f, 0x72, 0x73, 0x88, 0xb9, 0xaf, 0xe2, 0x6a, 0x4f, 0x6f, 0xee, 0xd5, 0x60, 0xb2, 0x18, 0xe6, 0xbb,
3489
};
3490
static const u8 ecccdh_SECP521R1_16_test_vector_our_pub_key[] = {
3491
0x00, 0xfa, 0x3b, 0x35, 0x11, 0x8d, 0x6c, 0x42, 0x25, 0x70, 0xf7, 0x24, 0xa2, 0x6f, 0x90, 0xb2, 0x83, 0x3b, 0x19, 0x23, 0x91, 0x74, 0xce, 0xa0, 0x81, 0xc5, 0x31, 0x33, 0xf6, 0x4d, 0xb6, 0x0d, 0x69, 0x40, 0xea, 0x12, 0x61, 0x29, 0x9c, 0x04, 0xc1, 0xf4, 0x58, 0x7c, 0xdb, 0x0c, 0x4c, 0x39, 0x61, 0x64, 0x79, 0xc1, 0xbb, 0x0c, 0x14, 0x67, 0x99, 0xa1, 0x18, 0x03, 0x2d, 0xcf, 0x98, 0xf8, 0x99, 0xc0, 0x00, 0x69, 0xf0, 0x40, 0x22, 0x90, 0x06, 0x15, 0x1f, 0xa3, 0x2b, 0x51, 0xf6, 0x79, 0xc8, 0x81, 0x6f, 0x7c, 0x17, 0x50, 0x6b, 0x40, 0x38, 0x09, 0xdc, 0x77, 0xcd, 0x58, 0xa2, 0xae, 0xc4, 0x30, 0xd9, 0x4d, 0x13, 0xb6, 0xc9, 0x16, 0xde, 0x99, 0xf3, 0x55, 0xaa, 0x45, 0xfc, 0xfb, 0xc6, 0x85, 0x3d, 0x68, 0x6c, 0x71, 0xbe, 0x49, 0x6a, 0x06, 0x7d, 0x24, 0xbf, 0xae, 0xa4, 0x81, 0x8f, 0xc5, 0x1f, 0x75,
3492
};
3493
static const u8 ecccdh_SECP521R1_16_test_vector_shared_secret[] = {
3494
0x00, 0x34, 0x5e, 0x26, 0xe0, 0xab, 0xb1, 0xaa, 0xc1, 0x2b, 0x75, 0xf3, 0xa9, 0xcf, 0x41, 0xef, 0xe1, 0xc3, 0x36, 0x39, 0x6d, 0xff, 0xa4, 0xa0, 0x67, 0xa4, 0xc2, 0xcf, 0xeb, 0x87, 0x8c, 0x68, 0xb2, 0xb0, 0x45, 0xfa, 0xa4, 0xe5, 0xb4, 0xe6, 0xfa, 0x46, 0x78, 0xf5, 0xb6, 0x03, 0xc3, 0x51, 0x90, 0x3b, 0x14, 0xbf, 0x9a, 0x6a, 0x70, 0xc4, 0x39, 0x25, 0x71, 0x99, 0xa6, 0x40, 0x89, 0x0b, 0x61, 0xd1,
3495
};
3496
static const ecdh_test_case ecccdh_SECP521R1_16_test_case = {
3497
.name = "ECCCDH/SECP521R1 16",
3498
.ecdh_type = ECCCDH,
3499
.ec_str_p = &secp521r1_str_params,
3500
.our_priv_key = ecccdh_SECP521R1_16_test_vector_our_priv_key,
3501
.our_priv_key_len = sizeof(ecccdh_SECP521R1_16_test_vector_our_priv_key),
3502
.peer_pub_key = ecccdh_SECP521R1_16_test_vector_peer_pub_key,
3503
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_16_test_vector_peer_pub_key),
3504
.exp_our_pub_key = ecccdh_SECP521R1_16_test_vector_our_pub_key,
3505
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_16_test_vector_our_pub_key),
3506
.exp_shared_secret = ecccdh_SECP521R1_16_test_vector_shared_secret,
3507
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_16_test_vector_shared_secret),
3508
};
3509
#endif /* WITH_CURVE_SECP521R1 */
3510
3511
#ifdef WITH_CURVE_SECP521R1
3512
#define ECCCDH_SECP521R1_SELF_TEST_17
3513
/*** Tests for ECCCDH/SECP521R1 ***/
3514
static const u8 ecccdh_SECP521R1_17_test_vector_our_priv_key[] = {
3515
0x00, 0x00, 0x00, 0x04, 0xd4, 0x9d, 0x39, 0xd4, 0x0d, 0x81, 0x11, 0xbf, 0x16, 0xd2, 0x8c, 0x59, 0x36, 0x55, 0x43, 0x26, 0xb1, 0x97, 0x35, 0x3e, 0xeb, 0xbc, 0xf4, 0x75, 0x45, 0x39, 0x3b, 0xc8, 0xd3, 0xaa, 0xf9, 0x8f, 0x14, 0xf5, 0xbe, 0x70, 0x74, 0xbf, 0xb3, 0x8e, 0x6c, 0xc9, 0x7b, 0x98, 0x97, 0x54, 0x07, 0x4d, 0xad, 0xdb, 0x30, 0x45, 0xf4, 0xe4, 0xce, 0x74, 0x56, 0x69, 0xfd, 0xb3, 0xec, 0x0d, 0x5f, 0xa8,
3516
};
3517
static const u8 ecccdh_SECP521R1_17_test_vector_peer_pub_key[] = {
3518
0x01, 0xa3, 0xc2, 0x02, 0x40, 0xe5, 0x9f, 0x5b, 0x7a, 0x3e, 0x17, 0xc2, 0x75, 0xd2, 0x31, 0x4b, 0xa1, 0x74, 0x12, 0x10, 0xad, 0x58, 0xb7, 0x10, 0x36, 0xf8, 0xc8, 0x3c, 0xc1, 0xf6, 0xb0, 0xf4, 0x09, 0xdf, 0xdd, 0x91, 0x13, 0xe9, 0x4b, 0x67, 0xec, 0x39, 0xc3, 0x29, 0x14, 0x26, 0xc2, 0x3f, 0xfc, 0xc4, 0x47, 0x05, 0x46, 0x70, 0xd2, 0x90, 0x8f, 0xf8, 0xfe, 0x67, 0xdc, 0x23, 0x06, 0x03, 0x4c, 0x5c, 0x01, 0xd2, 0x82, 0x5b, 0xfd, 0x3a, 0xf8, 0xb1, 0xe1, 0x32, 0x05, 0x78, 0x0c, 0x13, 0x7f, 0xe9, 0x38, 0xf8, 0x4f, 0xde, 0x40, 0x18, 0x8e, 0x61, 0xea, 0x02, 0xce, 0xad, 0x81, 0xba, 0xdf, 0xdb, 0x42, 0x5c, 0x29, 0xf7, 0xd7, 0xfb, 0x03, 0x24, 0xde, 0xba, 0xdc, 0x10, 0xbb, 0xb9, 0x3d, 0xe6, 0x8f, 0x62, 0xc3, 0x50, 0x69, 0x26, 0x82, 0x83, 0xf5, 0x26, 0x58, 0x65, 0xdb, 0x57, 0xa7, 0x9f, 0x7b, 0xf7,
3519
};
3520
static const u8 ecccdh_SECP521R1_17_test_vector_our_pub_key[] = {
3521
0x01, 0x2e, 0xc2, 0x26, 0xd0, 0x50, 0xce, 0x07, 0xc7, 0x9b, 0x3d, 0xf4, 0xd0, 0xf0, 0x89, 0x1f, 0x9f, 0x7a, 0xdf, 0x46, 0x2e, 0x8c, 0x98, 0xdb, 0xc1, 0xa2, 0xa1, 0x4f, 0x5e, 0x53, 0xa3, 0xf5, 0xad, 0x89, 0x44, 0x33, 0x58, 0x7c, 0xc4, 0x29, 0xa8, 0xbe, 0x9e, 0xa1, 0xd8, 0x4f, 0xa3, 0x3b, 0x18, 0x03, 0x69, 0x0d, 0xae, 0x04, 0xda, 0x72, 0x18, 0xd3, 0x00, 0x26, 0x15, 0x7f, 0xc9, 0x95, 0xcf, 0x52, 0x00, 0x48, 0x37, 0xdf, 0xbf, 0x34, 0x26, 0xf5, 0x7b, 0x5c, 0x79, 0x32, 0x69, 0x13, 0x0a, 0xbb, 0x9a, 0x38, 0xf6, 0x18, 0x53, 0x22, 0x11, 0x93, 0x11, 0x54, 0xdb, 0x4e, 0xeb, 0x9a, 0xed, 0xe8, 0x8e, 0x57, 0x29, 0x0f, 0x84, 0x2e, 0xa0, 0xf2, 0xea, 0x9a, 0x5f, 0x74, 0xc6, 0x20, 0x3a, 0x39, 0x20, 0xfe, 0x4e, 0x30, 0x5f, 0x61, 0x18, 0xf6, 0x76, 0xb1, 0x54, 0xe1, 0xd7, 0x5b, 0x9c, 0xb5, 0xeb, 0x88,
3522
};
3523
static const u8 ecccdh_SECP521R1_17_test_vector_shared_secret[] = {
3524
0x00, 0x6f, 0xe9, 0xde, 0x6f, 0xb8, 0xe6, 0x72, 0xe7, 0xfd, 0x15, 0x0f, 0xdc, 0x5e, 0x61, 0x7f, 0xab, 0xb0, 0xd4, 0x39, 0x06, 0x35, 0x4c, 0xcf, 0xd2, 0x24, 0x75, 0x7c, 0x72, 0x76, 0xf7, 0xa1, 0x01, 0x00, 0x91, 0xb1, 0x7e, 0xd0, 0x72, 0x07, 0x4f, 0x8d, 0x10, 0xa5, 0xec, 0x97, 0x1e, 0xb3, 0x5a, 0x5c, 0xb7, 0x07, 0x66, 0x03, 0xb7, 0xbc, 0x38, 0xd4, 0x32, 0xcb, 0xc0, 0x59, 0xf8, 0x0f, 0x94, 0x88,
3525
};
3526
static const ecdh_test_case ecccdh_SECP521R1_17_test_case = {
3527
.name = "ECCCDH/SECP521R1 17",
3528
.ecdh_type = ECCCDH,
3529
.ec_str_p = &secp521r1_str_params,
3530
.our_priv_key = ecccdh_SECP521R1_17_test_vector_our_priv_key,
3531
.our_priv_key_len = sizeof(ecccdh_SECP521R1_17_test_vector_our_priv_key),
3532
.peer_pub_key = ecccdh_SECP521R1_17_test_vector_peer_pub_key,
3533
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_17_test_vector_peer_pub_key),
3534
.exp_our_pub_key = ecccdh_SECP521R1_17_test_vector_our_pub_key,
3535
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_17_test_vector_our_pub_key),
3536
.exp_shared_secret = ecccdh_SECP521R1_17_test_vector_shared_secret,
3537
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_17_test_vector_shared_secret),
3538
};
3539
#endif /* WITH_CURVE_SECP521R1 */
3540
3541
#ifdef WITH_CURVE_SECP521R1
3542
#define ECCCDH_SECP521R1_SELF_TEST_18
3543
/*** Tests for ECCCDH/SECP521R1 ***/
3544
static const u8 ecccdh_SECP521R1_18_test_vector_our_priv_key[] = {
3545
0x00, 0x00, 0x01, 0x1a, 0x5d, 0x1c, 0xc7, 0x9c, 0xd2, 0xbf, 0x73, 0xea, 0x10, 0x6f, 0x0e, 0x60, 0xa5, 0xac, 0xe2, 0x20, 0x81, 0x3b, 0x53, 0xe2, 0x7b, 0x73, 0x98, 0x64, 0x33, 0x4a, 0x07, 0xc0, 0x33, 0x67, 0xef, 0xda, 0x7a, 0x46, 0x19, 0xfa, 0x6e, 0xef, 0x3a, 0x97, 0x46, 0x49, 0x22, 0x83, 0xb3, 0xc4, 0x45, 0x61, 0x0a, 0x02, 0x3a, 0x9c, 0xc4, 0x9b, 0xf4, 0x59, 0x11, 0x40, 0x38, 0x4f, 0xca, 0x5c, 0x8b, 0xb5,
3546
};
3547
static const u8 ecccdh_SECP521R1_18_test_vector_peer_pub_key[] = {
3548
0x00, 0x7e, 0x2d, 0x13, 0x8f, 0x28, 0x32, 0xe3, 0x45, 0xae, 0x8f, 0xf6, 0x59, 0x57, 0xe4, 0x0e, 0x5e, 0xc7, 0x16, 0x3f, 0x01, 0x6b, 0xdf, 0x6d, 0x24, 0xa2, 0x24, 0x3d, 0xaa, 0x63, 0x1d, 0x87, 0x8a, 0x4a, 0x16, 0x78, 0x39, 0x90, 0xc7, 0x22, 0x38, 0x21, 0x30, 0xf9, 0xe5, 0x1f, 0x0c, 0x1b, 0xd6, 0xff, 0x5a, 0xc9, 0x67, 0x80, 0xe4, 0x8b, 0x68, 0xf5, 0xde, 0xc9, 0x5f, 0x42, 0xe6, 0x14, 0x4b, 0xb5, 0x00, 0xb0, 0xde, 0x5c, 0x89, 0x67, 0x91, 0xf5, 0x28, 0x86, 0xb0, 0xf0, 0x99, 0x13, 0xe2, 0x6e, 0x78, 0xdd, 0x0b, 0x69, 0x79, 0x8f, 0xc4, 0xdf, 0x6d, 0x95, 0xe3, 0xca, 0x70, 0x8e, 0xcb, 0xcb, 0xcc, 0xe1, 0xc1, 0x89, 0x5f, 0x55, 0x61, 0xbb, 0xab, 0xaa, 0xe3, 0x72, 0xe9, 0xe6, 0x7e, 0x6e, 0x1a, 0x3b, 0xe6, 0x0e, 0x19, 0xb4, 0x70, 0xcd, 0xf6, 0x73, 0xec, 0x1f, 0xc3, 0x93, 0xd3, 0x42, 0x6e, 0x20,
3549
};
3550
static const u8 ecccdh_SECP521R1_18_test_vector_our_pub_key[] = {
3551
0x00, 0xeb, 0x07, 0xc7, 0x33, 0x2e, 0xed, 0xb7, 0xd3, 0x03, 0x60, 0x59, 0xd3, 0x5f, 0x7d, 0x22, 0x88, 0xd4, 0x37, 0x7d, 0x5f, 0x42, 0x33, 0x7a, 0xd3, 0x96, 0x40, 0x79, 0xfb, 0x12, 0x0c, 0xcd, 0x4c, 0x8b, 0xd3, 0x84, 0xb5, 0x85, 0x62, 0x10, 0x55, 0x21, 0x70, 0x23, 0xac, 0xd9, 0xa9, 0x4f, 0xcb, 0x3b, 0x96, 0x5b, 0xfb, 0x39, 0x46, 0x75, 0xe7, 0x88, 0xad, 0xe4, 0x1a, 0x1d, 0xe7, 0x3e, 0x62, 0x0c, 0x00, 0x49, 0x1a, 0x83, 0x5d, 0xe2, 0xe6, 0xe7, 0xde, 0xb7, 0xe0, 0x90, 0xf4, 0xa1, 0x1f, 0x2c, 0x46, 0x0c, 0x0b, 0x1f, 0x3d, 0x5e, 0x94, 0xee, 0x8d, 0x75, 0x10, 0x14, 0xdc, 0x72, 0x07, 0x84, 0xfd, 0x3b, 0x54, 0x50, 0x0c, 0x86, 0xeb, 0xae, 0xf1, 0x84, 0x29, 0xf0, 0x9e, 0x8e, 0x87, 0x6d, 0x5d, 0x15, 0x38, 0x96, 0x8a, 0x03, 0x0d, 0x77, 0x15, 0xdd, 0xe9, 0x9f, 0x0d, 0x8f, 0x06, 0xe2, 0x9d, 0x59,
3552
};
3553
static const u8 ecccdh_SECP521R1_18_test_vector_shared_secret[] = {
3554
0x01, 0xe4, 0xe7, 0x59, 0xec, 0xed, 0xce, 0x10, 0x13, 0xba, 0xf7, 0x3e, 0x6f, 0xcc, 0x0b, 0x92, 0x45, 0x1d, 0x03, 0xbd, 0xd5, 0x04, 0x89, 0xb7, 0x88, 0x71, 0xc3, 0x33, 0x11, 0x49, 0x90, 0xc9, 0xba, 0x6a, 0x9b, 0x2f, 0xc7, 0xb1, 0xa2, 0xd9, 0xa1, 0x79, 0x4c, 0x1b, 0x60, 0xd9, 0x27, 0x9a, 0xf6, 0xf1, 0x46, 0xf0, 0xbb, 0xfb, 0x06, 0x83, 0x14, 0x04, 0x03, 0xbf, 0xa4, 0xcc, 0xdb, 0x52, 0x4a, 0x29,
3555
};
3556
static const ecdh_test_case ecccdh_SECP521R1_18_test_case = {
3557
.name = "ECCCDH/SECP521R1 18",
3558
.ecdh_type = ECCCDH,
3559
.ec_str_p = &secp521r1_str_params,
3560
.our_priv_key = ecccdh_SECP521R1_18_test_vector_our_priv_key,
3561
.our_priv_key_len = sizeof(ecccdh_SECP521R1_18_test_vector_our_priv_key),
3562
.peer_pub_key = ecccdh_SECP521R1_18_test_vector_peer_pub_key,
3563
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_18_test_vector_peer_pub_key),
3564
.exp_our_pub_key = ecccdh_SECP521R1_18_test_vector_our_pub_key,
3565
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_18_test_vector_our_pub_key),
3566
.exp_shared_secret = ecccdh_SECP521R1_18_test_vector_shared_secret,
3567
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_18_test_vector_shared_secret),
3568
};
3569
#endif /* WITH_CURVE_SECP521R1 */
3570
3571
#ifdef WITH_CURVE_SECP521R1
3572
#define ECCCDH_SECP521R1_SELF_TEST_19
3573
/*** Tests for ECCCDH/SECP521R1 ***/
3574
static const u8 ecccdh_SECP521R1_19_test_vector_our_priv_key[] = {
3575
0x00, 0x00, 0x01, 0x0c, 0x90, 0x8c, 0xaf, 0x1b, 0xe7, 0x4c, 0x61, 0x6b, 0x62, 0x5f, 0xc8, 0xc1, 0xf5, 0x14, 0x44, 0x6a, 0x6a, 0xec, 0x83, 0xb5, 0x93, 0x71, 0x41, 0xd6, 0xaf, 0xbb, 0x0a, 0x8c, 0x76, 0x66, 0xa7, 0x74, 0x6f, 0xa1, 0xf7, 0xa6, 0x66, 0x4a, 0x21, 0x23, 0xe8, 0xcd, 0xf6, 0xcd, 0x8b, 0xf8, 0x36, 0xc5, 0x6d, 0x3c, 0x0e, 0xbd, 0xcc, 0x98, 0x0e, 0x43, 0xa1, 0x86, 0xf9, 0x38, 0xf3, 0xa7, 0x8a, 0xe7,
3576
};
3577
static const u8 ecccdh_SECP521R1_19_test_vector_peer_pub_key[] = {
3578
0x00, 0x11, 0x8c, 0x36, 0x02, 0x22, 0x09, 0xb1, 0xaf, 0x8e, 0xba, 0xd1, 0xa1, 0x2b, 0x56, 0x6f, 0xc4, 0x87, 0x44, 0x57, 0x6e, 0x11, 0x99, 0xfe, 0x80, 0xde, 0x1c, 0xdf, 0x85, 0x1c, 0xdf, 0x03, 0xe5, 0xb9, 0x09, 0x1a, 0x8f, 0x7e, 0x07, 0x9e, 0x83, 0xb7, 0xf8, 0x27, 0x25, 0x9b, 0x69, 0x1d, 0x0c, 0x22, 0xee, 0x29, 0xd6, 0xbd, 0xf7, 0x3e, 0xc7, 0xbb, 0xfd, 0x74, 0x6f, 0x2c, 0xd9, 0x7a, 0x35, 0x7d, 0x00, 0xda, 0x5f, 0xf4, 0x90, 0x45, 0x48, 0xa3, 0x42, 0xe2, 0xe7, 0xba, 0x6a, 0x1f, 0x4e, 0xe5, 0xf8, 0x40, 0x41, 0x1a, 0x96, 0xcf, 0x63, 0xe6, 0xfe, 0x62, 0x2f, 0x22, 0xc1, 0x3e, 0x61, 0x4e, 0x0a, 0x84, 0x7c, 0x11, 0xa1, 0xab, 0x3f, 0x1d, 0x12, 0xcc, 0x85, 0x0c, 0x32, 0xe0, 0x95, 0x61, 0x4c, 0xa8, 0xf7, 0xe2, 0x72, 0x14, 0x77, 0xb4, 0x86, 0xe9, 0xff, 0x40, 0x37, 0x29, 0x77, 0xc3, 0xf6, 0x5c,
3579
};
3580
static const u8 ecccdh_SECP521R1_19_test_vector_our_pub_key[] = {
3581
0x00, 0x31, 0x89, 0x0f, 0x4c, 0x7a, 0xbe, 0xc3, 0xf7, 0x23, 0x36, 0x22, 0x85, 0xd7, 0x7d, 0x26, 0x36, 0xf8, 0x76, 0x81, 0x7d, 0xb3, 0xbb, 0xc8, 0x8b, 0x01, 0xe7, 0x73, 0x59, 0x7b, 0x96, 0x9f, 0xf6, 0xf0, 0x13, 0xea, 0x47, 0x0c, 0x85, 0x4a, 0xb4, 0xa7, 0x73, 0x90, 0x04, 0xeb, 0x8c, 0xbe, 0xa6, 0x9b, 0x82, 0xdd, 0xf3, 0x6a, 0xca, 0xdd, 0x40, 0x68, 0x71, 0x79, 0x8e, 0xcb, 0x2a, 0xc3, 0xaa, 0x7f, 0x00, 0xd8, 0xb4, 0x29, 0xae, 0x32, 0x50, 0x26, 0x6b, 0x96, 0x43, 0xc0, 0xc7, 0x65, 0xa6, 0x0d, 0xc1, 0x01, 0x55, 0xbc, 0x25, 0x31, 0xcf, 0x86, 0x27, 0x29, 0x6f, 0x49, 0x78, 0xb6, 0x64, 0x0a, 0x9e, 0x60, 0x0e, 0x19, 0xd0, 0x03, 0x7d, 0x58, 0x50, 0x3f, 0xa8, 0x07, 0x99, 0x54, 0x6a, 0x81, 0x4d, 0x74, 0x78, 0xa5, 0x50, 0xaa, 0x90, 0xe5, 0xeb, 0xeb, 0x05, 0x25, 0x27, 0xfa, 0xae, 0xae, 0x5d, 0x08,
3582
};
3583
static const u8 ecccdh_SECP521R1_19_test_vector_shared_secret[] = {
3584
0x01, 0x63, 0xc9, 0x19, 0x1d, 0x65, 0x10, 0x39, 0xa5, 0xfe, 0x98, 0x5a, 0x0e, 0xea, 0x1e, 0xba, 0x01, 0x8a, 0x40, 0xab, 0x19, 0x37, 0xfc, 0xd2, 0xb6, 0x12, 0x20, 0x82, 0x0e, 0xe8, 0xf2, 0x30, 0x2e, 0x97, 0x99, 0xf6, 0xed, 0xfc, 0x3f, 0x51, 0x74, 0xf3, 0x69, 0xd6, 0x72, 0xd3, 0x77, 0xea, 0x89, 0x54, 0xa8, 0xd0, 0xc8, 0xb8, 0x51, 0xe8, 0x1a, 0x56, 0xfd, 0xa9, 0x52, 0x12, 0xa6, 0x57, 0x8f, 0x0e,
3585
};
3586
static const ecdh_test_case ecccdh_SECP521R1_19_test_case = {
3587
.name = "ECCCDH/SECP521R1 19",
3588
.ecdh_type = ECCCDH,
3589
.ec_str_p = &secp521r1_str_params,
3590
.our_priv_key = ecccdh_SECP521R1_19_test_vector_our_priv_key,
3591
.our_priv_key_len = sizeof(ecccdh_SECP521R1_19_test_vector_our_priv_key),
3592
.peer_pub_key = ecccdh_SECP521R1_19_test_vector_peer_pub_key,
3593
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_19_test_vector_peer_pub_key),
3594
.exp_our_pub_key = ecccdh_SECP521R1_19_test_vector_our_pub_key,
3595
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_19_test_vector_our_pub_key),
3596
.exp_shared_secret = ecccdh_SECP521R1_19_test_vector_shared_secret,
3597
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_19_test_vector_shared_secret),
3598
};
3599
#endif /* WITH_CURVE_SECP521R1 */
3600
3601
#ifdef WITH_CURVE_SECP521R1
3602
#define ECCCDH_SECP521R1_SELF_TEST_20
3603
/*** Tests for ECCCDH/SECP521R1 ***/
3604
static const u8 ecccdh_SECP521R1_20_test_vector_our_priv_key[] = {
3605
0x00, 0x00, 0x01, 0xb3, 0x7d, 0x6b, 0x72, 0x88, 0xde, 0x67, 0x13, 0x60, 0x42, 0x5d, 0x3e, 0x5a, 0xc1, 0xcc, 0xb2, 0x18, 0x15, 0x07, 0x9d, 0x8d, 0x73, 0x43, 0x1e, 0x9b, 0x74, 0xa6, 0xf0, 0xe7, 0xae, 0x00, 0x4a, 0x35, 0x75, 0x75, 0xb1, 0x1a, 0xd6, 0x66, 0x42, 0xce, 0x8b, 0x77, 0x55, 0x93, 0xeb, 0xa9, 0xd9, 0x8b, 0xf2, 0x5c, 0x75, 0xef, 0x0b, 0x4d, 0x3a, 0x20, 0x98, 0xbb, 0xc6, 0x41, 0xf5, 0x9a, 0x2b, 0x77,
3606
};
3607
static const u8 ecccdh_SECP521R1_20_test_vector_peer_pub_key[] = {
3608
0x01, 0x78, 0x0e, 0xdf, 0xf1, 0xca, 0x1c, 0x03, 0xcf, 0xbe, 0x59, 0x3e, 0xdc, 0x6c, 0x04, 0x9b, 0xcb, 0x28, 0x60, 0x29, 0x4a, 0x92, 0xc3, 0x55, 0x48, 0x9d, 0x9a, 0xfb, 0x2e, 0x70, 0x20, 0x75, 0xad, 0xe1, 0xc9, 0x53, 0x89, 0x5a, 0x45, 0x62, 0x30, 0xa0, 0xcd, 0xe9, 0x05, 0xde, 0x4a, 0x3f, 0x38, 0x57, 0x3d, 0xbf, 0xcc, 0xcd, 0x67, 0xad, 0x6e, 0x7e, 0x93, 0xf0, 0xb5, 0x58, 0x1e, 0x92, 0x6a, 0x5d, 0x00, 0xa5, 0x48, 0x19, 0x62, 0xc9, 0x16, 0x29, 0x62, 0xe7, 0xf0, 0xeb, 0xde, 0xc9, 0x36, 0x93, 0x5d, 0x0e, 0xaa, 0x81, 0x3e, 0x82, 0x26, 0xd4, 0x0d, 0x7f, 0x61, 0x19, 0xbf, 0xd9, 0x40, 0x60, 0x23, 0x80, 0xc8, 0x67, 0x21, 0xe6, 0x1d, 0xb1, 0x83, 0x0f, 0x51, 0xe1, 0x39, 0xf2, 0x10, 0x00, 0x0b, 0xce, 0xc0, 0xd8, 0xed, 0xd3, 0x9e, 0x54, 0xd7, 0x3a, 0x9a, 0x12, 0x9f, 0x95, 0xcd, 0x5f, 0xa9, 0x79,
3609
};
3610
static const u8 ecccdh_SECP521R1_20_test_vector_our_pub_key[] = {
3611
0x00, 0x18, 0x9a, 0x5e, 0xe3, 0x4d, 0xe7, 0xe3, 0x5a, 0xef, 0xea, 0xee, 0xf9, 0x22, 0x0c, 0x18, 0x07, 0x1b, 0x4c, 0x29, 0xa4, 0xc3, 0xbd, 0x9d, 0x95, 0x44, 0x58, 0xbd, 0x3e, 0x82, 0xa7, 0xa3, 0x4d, 0xa3, 0x4c, 0xff, 0x55, 0x79, 0xb8, 0x10, 0x1c, 0x06, 0x5b, 0x1f, 0x2f, 0x52, 0x7c, 0xf4, 0x58, 0x15, 0x01, 0xe2, 0x8e, 0xf5, 0x67, 0x18, 0x73, 0xe6, 0x52, 0x67, 0x73, 0x3d, 0x00, 0x35, 0x20, 0xaf, 0x01, 0xeb, 0x4b, 0xc5, 0x0a, 0x7b, 0x4d, 0x45, 0x99, 0xd7, 0xe3, 0xfa, 0x77, 0x3d, 0xdb, 0x9e, 0xb2, 0x52, 0xc9, 0xb3, 0x42, 0x28, 0x72, 0xe5, 0x44, 0xbd, 0xf7, 0x5c, 0x7b, 0xf6, 0x0f, 0x51, 0x66, 0xdd, 0xc1, 0x1e, 0xb0, 0x8f, 0xa7, 0xc3, 0x08, 0x22, 0xda, 0xba, 0xee, 0x37, 0x3a, 0xb4, 0x68, 0xeb, 0x2d, 0x92, 0x2e, 0x48, 0x4e, 0x2a, 0x52, 0x7f, 0xff, 0x2e, 0xbb, 0x80, 0x4b, 0x7d, 0x9a, 0x37,
3612
};
3613
static const u8 ecccdh_SECP521R1_20_test_vector_shared_secret[] = {
3614
0x01, 0x5d, 0x61, 0x3e, 0x26, 0x7a, 0x36, 0x34, 0x2e, 0x0d, 0x12, 0x5c, 0xda, 0xd6, 0x43, 0xd8, 0x0d, 0x97, 0xed, 0x06, 0x00, 0xaf, 0xb9, 0xe6, 0xb9, 0x54, 0x5c, 0x9e, 0x64, 0xa9, 0x8c, 0xc6, 0xda, 0x7c, 0x5a, 0xaa, 0x3a, 0x8d, 0xa0, 0xbd, 0xd9, 0xdd, 0x3b, 0x97, 0xe9, 0x78, 0x82, 0x18, 0xa8, 0x0a, 0xba, 0xfc, 0x10, 0x6e, 0xf0, 0x65, 0xc8, 0xf1, 0xc4, 0xe1, 0x11, 0x9e, 0xf5, 0x8d, 0x29, 0x8b,
3615
};
3616
static const ecdh_test_case ecccdh_SECP521R1_20_test_case = {
3617
.name = "ECCCDH/SECP521R1 20",
3618
.ecdh_type = ECCCDH,
3619
.ec_str_p = &secp521r1_str_params,
3620
.our_priv_key = ecccdh_SECP521R1_20_test_vector_our_priv_key,
3621
.our_priv_key_len = sizeof(ecccdh_SECP521R1_20_test_vector_our_priv_key),
3622
.peer_pub_key = ecccdh_SECP521R1_20_test_vector_peer_pub_key,
3623
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_20_test_vector_peer_pub_key),
3624
.exp_our_pub_key = ecccdh_SECP521R1_20_test_vector_our_pub_key,
3625
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_20_test_vector_our_pub_key),
3626
.exp_shared_secret = ecccdh_SECP521R1_20_test_vector_shared_secret,
3627
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_20_test_vector_shared_secret),
3628
};
3629
#endif /* WITH_CURVE_SECP521R1 */
3630
3631
#ifdef WITH_CURVE_SECP521R1
3632
#define ECCCDH_SECP521R1_SELF_TEST_21
3633
/*** Tests for ECCCDH/SECP521R1 ***/
3634
static const u8 ecccdh_SECP521R1_21_test_vector_our_priv_key[] = {
3635
0x00, 0x00, 0x00, 0xf2, 0x66, 0x1a, 0xc7, 0x62, 0xf6, 0x0c, 0x5f, 0xff, 0x23, 0xbe, 0x5d, 0x96, 0x9c, 0xcd, 0x4e, 0xc6, 0xf9, 0x8e, 0x4e, 0x72, 0x61, 0x8d, 0x12, 0xbd, 0xcd, 0xb9, 0xb4, 0x10, 0x21, 0x62, 0x33, 0x37, 0x88, 0xc0, 0xba, 0xe5, 0x9f, 0x91, 0xcd, 0xfc, 0x17, 0x2c, 0x7a, 0x16, 0x81, 0xee, 0x44, 0xd9, 0x6a, 0xb2, 0x13, 0x5a, 0x6e, 0x5f, 0x34, 0x15, 0xeb, 0xbc, 0xd5, 0x51, 0x65, 0xb1, 0xaf, 0xb0,
3636
};
3637
static const u8 ecccdh_SECP521R1_21_test_vector_peer_pub_key[] = {
3638
0x01, 0x6d, 0xac, 0xff, 0xa1, 0x83, 0xe5, 0x30, 0x30, 0x83, 0xa3, 0x34, 0xf7, 0x65, 0xde, 0x72, 0x4e, 0xc5, 0xec, 0x94, 0x02, 0x02, 0x6d, 0x47, 0x97, 0x88, 0x4a, 0x98, 0x28, 0xa0, 0xd3, 0x21, 0xa8, 0xcf, 0xac, 0x74, 0xab, 0x73, 0x7f, 0xe2, 0x0a, 0x7d, 0x6b, 0xef, 0xcf, 0xc7, 0x3b, 0x6a, 0x35, 0xc1, 0xc7, 0xb0, 0x1d, 0x37, 0x3e, 0x31, 0xab, 0xc1, 0x92, 0xd4, 0x8a, 0x42, 0x41, 0xa3, 0x58, 0x03, 0x01, 0x1e, 0x53, 0x27, 0xca, 0xc2, 0x2d, 0x30, 0x5e, 0x71, 0x56, 0xe5, 0x59, 0x17, 0x6e, 0x19, 0xbe, 0xe7, 0xe4, 0xf2, 0xf5, 0x9e, 0x86, 0xf1, 0xa9, 0xd0, 0xb6, 0x60, 0x3b, 0x6a, 0x7d, 0xf1, 0x06, 0x9b, 0xde, 0x63, 0x87, 0xfe, 0xb7, 0x15, 0x87, 0xb8, 0xff, 0xce, 0x5b, 0x26, 0x6e, 0x1b, 0xae, 0x86, 0xde, 0x29, 0x37, 0x8a, 0x34, 0xe5, 0xc7, 0x4b, 0x67, 0x24, 0xc4, 0xd4, 0x0a, 0x71, 0x99, 0x23,
3639
};
3640
static const u8 ecccdh_SECP521R1_21_test_vector_our_pub_key[] = {
3641
0x00, 0xa8, 0xe2, 0x5a, 0x69, 0x02, 0xd6, 0x87, 0xb4, 0x78, 0x7c, 0xdc, 0x94, 0xc3, 0x64, 0xac, 0x7c, 0xec, 0xc5, 0xc4, 0x95, 0x48, 0x3e, 0xd3, 0x63, 0xdc, 0x0a, 0xa9, 0x5e, 0xe2, 0xbd, 0x73, 0x9c, 0x4c, 0x4d, 0x46, 0xb1, 0x70, 0x06, 0xc7, 0x28, 0xb0, 0x76, 0x35, 0x0d, 0x7d, 0x7e, 0x54, 0xc6, 0x82, 0x2f, 0x52, 0xf4, 0x71, 0x62, 0xa2, 0x51, 0x09, 0xaa, 0xab, 0xa6, 0x90, 0xca, 0xb6, 0x96, 0xec, 0x01, 0x68, 0xd2, 0xf0, 0x8f, 0xe1, 0x9e, 0x4d, 0xc9, 0xee, 0x7a, 0x19, 0x5b, 0x03, 0xc9, 0xf7, 0xfe, 0x66, 0x76, 0xf9, 0xf5, 0x20, 0xb6, 0x27, 0x05, 0x57, 0x50, 0x4e, 0x72, 0xca, 0x43, 0x94, 0xa2, 0xc6, 0x91, 0x86, 0x25, 0xe1, 0x5a, 0xc0, 0xc5, 0x1b, 0x8f, 0x95, 0xcd, 0x56, 0x01, 0x23, 0x65, 0x3f, 0xb8, 0xe8, 0xee, 0x6d, 0xb9, 0x61, 0xe2, 0xc4, 0xc6, 0x2c, 0xc5, 0x4e, 0x92, 0xe2, 0xa2, 0xa9,
3642
};
3643
static const u8 ecccdh_SECP521R1_21_test_vector_shared_secret[] = {
3644
0x01, 0x4d, 0x60, 0x82, 0xa3, 0xb5, 0xce, 0xd1, 0xab, 0x8c, 0xa2, 0x65, 0xa8, 0x10, 0x6f, 0x30, 0x21, 0x46, 0xc4, 0xac, 0xb8, 0xc3, 0x0b, 0xb1, 0x4a, 0x4c, 0x99, 0x1e, 0x3c, 0x82, 0xa9, 0x73, 0x12, 0x88, 0xbd, 0xb9, 0x1e, 0x0e, 0x85, 0xbd, 0xa3, 0x13, 0x91, 0x2d, 0x06, 0x38, 0x4f, 0xc4, 0x4f, 0x21, 0x53, 0xfb, 0x13, 0x50, 0x6f, 0xa9, 0xcf, 0x43, 0xc9, 0xaa, 0xb5, 0x75, 0x09, 0x88, 0xc9, 0x43,
3645
};
3646
static const ecdh_test_case ecccdh_SECP521R1_21_test_case = {
3647
.name = "ECCCDH/SECP521R1 21",
3648
.ecdh_type = ECCCDH,
3649
.ec_str_p = &secp521r1_str_params,
3650
.our_priv_key = ecccdh_SECP521R1_21_test_vector_our_priv_key,
3651
.our_priv_key_len = sizeof(ecccdh_SECP521R1_21_test_vector_our_priv_key),
3652
.peer_pub_key = ecccdh_SECP521R1_21_test_vector_peer_pub_key,
3653
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_21_test_vector_peer_pub_key),
3654
.exp_our_pub_key = ecccdh_SECP521R1_21_test_vector_our_pub_key,
3655
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_21_test_vector_our_pub_key),
3656
.exp_shared_secret = ecccdh_SECP521R1_21_test_vector_shared_secret,
3657
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_21_test_vector_shared_secret),
3658
};
3659
#endif /* WITH_CURVE_SECP521R1 */
3660
3661
#ifdef WITH_CURVE_SECP521R1
3662
#define ECCCDH_SECP521R1_SELF_TEST_22
3663
/*** Tests for ECCCDH/SECP521R1 ***/
3664
static const u8 ecccdh_SECP521R1_22_test_vector_our_priv_key[] = {
3665
0x00, 0x00, 0x00, 0xf4, 0x30, 0xca, 0x12, 0x61, 0xf0, 0x96, 0x81, 0xa9, 0x28, 0x2e, 0x9e, 0x97, 0x0a, 0x92, 0x34, 0x22, 0x7b, 0x1d, 0x5e, 0x58, 0xd5, 0x58, 0xc3, 0xcc, 0x6e, 0xff, 0x44, 0xd1, 0xbd, 0xf5, 0x3d, 0xe1, 0x6a, 0xd5, 0xee, 0x2b, 0x18, 0xb9, 0x2d, 0x62, 0xfc, 0x79, 0x58, 0x61, 0x16, 0xb0, 0xef, 0xc1, 0x5f, 0x79, 0x34, 0x0f, 0xb7, 0xea, 0xf5, 0xce, 0x6c, 0x44, 0x34, 0x1d, 0xcf, 0x8d, 0xde, 0x27,
3666
};
3667
static const u8 ecccdh_SECP521R1_22_test_vector_peer_pub_key[] = {
3668
0x00, 0xa0, 0x91, 0x42, 0x1d, 0x37, 0x03, 0xe3, 0xb3, 0x41, 0xe9, 0xf1, 0xe7, 0xd5, 0x8f, 0x8c, 0xf7, 0xbd, 0xbd, 0x17, 0x98, 0xd0, 0x01, 0x96, 0x7b, 0x80, 0x1d, 0x1c, 0xec, 0x27, 0xe6, 0x05, 0xc5, 0x80, 0xb2, 0x38, 0x7c, 0x1c, 0xb4, 0x64, 0xf5, 0x5c, 0xe7, 0xac, 0x80, 0x33, 0x41, 0x02, 0xab, 0x03, 0xcf, 0xb8, 0x6d, 0x88, 0xaf, 0x76, 0xc9, 0xf4, 0x12, 0x9c, 0x01, 0xbe, 0xdd, 0x3b, 0xbf, 0xc4, 0x00, 0x8c, 0x9c, 0x57, 0x7a, 0x8e, 0x6f, 0xc4, 0x46, 0x81, 0x5e, 0x9d, 0x40, 0xba, 0xa6, 0x60, 0x25, 0xf1, 0x5d, 0xae, 0x28, 0x5f, 0x19, 0xeb, 0x66, 0x8e, 0xe6, 0x0a, 0xe9, 0xc9, 0x8e, 0x7e, 0xcd, 0xbf, 0x2b, 0x2a, 0x68, 0xe2, 0x29, 0x28, 0x05, 0x9f, 0x67, 0xdb, 0x18, 0x80, 0x07, 0x16, 0x1d, 0x3e, 0xcf, 0x39, 0x7e, 0x08, 0x83, 0xf0, 0xc4, 0xeb, 0x7e, 0xaf, 0x78, 0x27, 0xa6, 0x22, 0x05, 0xcc,
3669
};
3670
static const u8 ecccdh_SECP521R1_22_test_vector_our_pub_key[] = {
3671
0x00, 0x6c, 0x1d, 0x9b, 0x5e, 0xca, 0x87, 0xde, 0x1f, 0xb8, 0x71, 0xa0, 0xa3, 0x2f, 0x80, 0x7c, 0x72, 0x5a, 0xdc, 0xcd, 0xe9, 0xb3, 0x96, 0x74, 0x53, 0xa7, 0x13, 0x47, 0xd6, 0x08, 0xf0, 0xc0, 0x30, 0xcd, 0x09, 0xe3, 0x38, 0xcd, 0xec, 0xbf, 0x4a, 0x02, 0x01, 0x5b, 0xc8, 0xa6, 0xe8, 0xd3, 0xe2, 0x59, 0x5f, 0xe7, 0x73, 0xff, 0xc2, 0xfc, 0x4e, 0x4a, 0x55, 0xd0, 0xb1, 0xa2, 0xcc, 0x00, 0x32, 0x3b, 0x01, 0x14, 0x1b, 0x21, 0x09, 0xe7, 0xf4, 0x98, 0x1c, 0x95, 0x2a, 0xa8, 0x18, 0xa2, 0xb9, 0xf6, 0xf5, 0xc4, 0x1f, 0xec, 0xcd, 0xb7, 0xa7, 0xa4, 0x5b, 0x9b, 0x4b, 0x67, 0x29, 0x37, 0x77, 0x1b, 0x00, 0x8c, 0xae, 0x5f, 0x93, 0x4d, 0xfe, 0x3f, 0xed, 0x10, 0xd3, 0x83, 0xab, 0x1f, 0x38, 0x76, 0x9c, 0x92, 0xce, 0x88, 0xd9, 0xbe, 0x54, 0x14, 0x81, 0x7e, 0xcb, 0x07, 0x3a, 0x31, 0xab, 0x36, 0x8c, 0xcb,
3672
};
3673
static const u8 ecccdh_SECP521R1_22_test_vector_shared_secret[] = {
3674
0x00, 0x20, 0xc0, 0x07, 0x47, 0xcb, 0x8d, 0x49, 0x2f, 0xd4, 0x97, 0xe0, 0xfe, 0xc5, 0x46, 0x44, 0xbf, 0x02, 0x7d, 0x41, 0x8a, 0xb6, 0x86, 0x38, 0x1f, 0x10, 0x97, 0x12, 0xa9, 0x9c, 0xab, 0xe3, 0x28, 0xb9, 0x74, 0x3d, 0x22, 0x25, 0x83, 0x6f, 0x9a, 0xd6, 0x6e, 0x5d, 0x7f, 0xed, 0x1d, 0xe2, 0x47, 0xe0, 0xda, 0x92, 0xf6, 0x0d, 0x5b, 0x31, 0xf9, 0xe4, 0x76, 0x72, 0xe5, 0x7f, 0x71, 0x05, 0x98, 0xf4,
3675
};
3676
static const ecdh_test_case ecccdh_SECP521R1_22_test_case = {
3677
.name = "ECCCDH/SECP521R1 22",
3678
.ecdh_type = ECCCDH,
3679
.ec_str_p = &secp521r1_str_params,
3680
.our_priv_key = ecccdh_SECP521R1_22_test_vector_our_priv_key,
3681
.our_priv_key_len = sizeof(ecccdh_SECP521R1_22_test_vector_our_priv_key),
3682
.peer_pub_key = ecccdh_SECP521R1_22_test_vector_peer_pub_key,
3683
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_22_test_vector_peer_pub_key),
3684
.exp_our_pub_key = ecccdh_SECP521R1_22_test_vector_our_pub_key,
3685
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_22_test_vector_our_pub_key),
3686
.exp_shared_secret = ecccdh_SECP521R1_22_test_vector_shared_secret,
3687
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_22_test_vector_shared_secret),
3688
};
3689
#endif /* WITH_CURVE_SECP521R1 */
3690
3691
#ifdef WITH_CURVE_SECP521R1
3692
#define ECCCDH_SECP521R1_SELF_TEST_23
3693
/*** Tests for ECCCDH/SECP521R1 ***/
3694
static const u8 ecccdh_SECP521R1_23_test_vector_our_priv_key[] = {
3695
0x00, 0x00, 0x00, 0x5d, 0xc3, 0x3a, 0xed, 0xa0, 0x3c, 0x2e, 0xb2, 0x33, 0x01, 0x4e, 0xe4, 0x68, 0xdf, 0xf7, 0x53, 0xb7, 0x2f, 0x73, 0xb0, 0x09, 0x91, 0x04, 0x3e, 0xa3, 0x53, 0x82, 0x8a, 0xe6, 0x9d, 0x4c, 0xd0, 0xfa, 0xde, 0xda, 0x7b, 0xb2, 0x78, 0xb5, 0x35, 0xd7, 0xc5, 0x74, 0x06, 0xff, 0x2e, 0x6e, 0x47, 0x3a, 0x5a, 0x4f, 0xf9, 0x8e, 0x90, 0xf9, 0x0d, 0x6d, 0xad, 0xd2, 0x51, 0x00, 0xe8, 0xd8, 0x56, 0x66,
3696
};
3697
static const u8 ecccdh_SECP521R1_23_test_vector_peer_pub_key[] = {
3698
0x00, 0x4f, 0x38, 0x81, 0x66, 0x81, 0x77, 0x12, 0x89, 0xce, 0x0c, 0xb8, 0x3a, 0x5e, 0x29, 0xa1, 0xab, 0x06, 0xfc, 0x91, 0xf7, 0x86, 0x99, 0x4b, 0x23, 0x70, 0x8f, 0xf0, 0x8a, 0x08, 0xa0, 0xf6, 0x75, 0xb8, 0x09, 0xae, 0x99, 0xe9, 0xf9, 0x96, 0x7e, 0xb1, 0xa4, 0x9f, 0x19, 0x60, 0x57, 0xd6, 0x9e, 0x50, 0xd6, 0xde, 0xdb, 0x4d, 0xd2, 0xd9, 0xa8, 0x1c, 0x02, 0xbd, 0xcc, 0x8f, 0x7f, 0x51, 0x84, 0x60, 0x00, 0x9e, 0xfb, 0x24, 0x4c, 0x8b, 0x91, 0x08, 0x7d, 0xe1, 0xee, 0xd7, 0x66, 0x50, 0x0f, 0x0e, 0x81, 0x53, 0x07, 0x52, 0xd4, 0x69, 0x25, 0x6e, 0xf7, 0x9f, 0x6b, 0x96, 0x5d, 0x8a, 0x22, 0x32, 0xa0, 0xc2, 0xdb, 0xc4, 0xe8, 0xe1, 0xd0, 0x92, 0x14, 0xba, 0xb3, 0x84, 0x85, 0xbe, 0x6e, 0x35, 0x7c, 0x42, 0x00, 0xd0, 0x73, 0xb5, 0x2f, 0x04, 0xe4, 0xa1, 0x6f, 0xc6, 0xf5, 0x24, 0x71, 0x87, 0xae, 0xcb,
3699
};
3700
static const u8 ecccdh_SECP521R1_23_test_vector_our_pub_key[] = {
3701
0x00, 0xc8, 0x25, 0xba, 0x30, 0x73, 0x73, 0xce, 0xc8, 0xdd, 0x24, 0x98, 0xee, 0xf8, 0x2e, 0x21, 0xfd, 0x98, 0x62, 0x16, 0x8d, 0xbf, 0xeb, 0x83, 0x59, 0x39, 0x80, 0xca, 0x9f, 0x82, 0x87, 0x53, 0x33, 0x89, 0x9f, 0xe9, 0x4f, 0x13, 0x7d, 0xaf, 0x1c, 0x41, 0x89, 0xeb, 0x50, 0x29, 0x37, 0xc3, 0xa3, 0x67, 0xea, 0x79, 0x51, 0xed, 0x8b, 0x0f, 0x33, 0x77, 0xfc, 0xdf, 0x29, 0x22, 0x02, 0x1d, 0x46, 0xa5, 0x01, 0x6b, 0x8a, 0x25, 0x40, 0xd5, 0xe6, 0x54, 0x93, 0x88, 0x8b, 0xc3, 0x37, 0x24, 0x9e, 0x67, 0xc0, 0xa6, 0x87, 0x74, 0xf3, 0xe8, 0xd8, 0x1e, 0x3b, 0x45, 0x74, 0xa0, 0x12, 0x51, 0x65, 0xf0, 0xbd, 0x58, 0xb8, 0xaf, 0x9d, 0xe7, 0x4b, 0x35, 0x83, 0x25, 0x39, 0xf9, 0x5c, 0x3c, 0xd9, 0xf1, 0xb7, 0x59, 0x40, 0x85, 0x60, 0xaa, 0x68, 0x51, 0xae, 0x3a, 0xc7, 0x55, 0x53, 0x47, 0xb0, 0xd3, 0xb1, 0x3b,
3702
};
3703
static const u8 ecccdh_SECP521R1_23_test_vector_shared_secret[] = {
3704
0x00, 0xc2, 0xbf, 0xaf, 0xcd, 0x7f, 0xbd, 0x3e, 0x2f, 0xd1, 0xc7, 0x50, 0xfd, 0xea, 0x61, 0xe7, 0x0b, 0xd4, 0x78, 0x7a, 0x7e, 0x68, 0x46, 0x8c, 0x57, 0x4e, 0xe9, 0x9e, 0xbc, 0x47, 0xee, 0xde, 0xf0, 0x64, 0xe8, 0x94, 0x4a, 0x73, 0xbc, 0xb7, 0x91, 0x3d, 0xba, 0xb5, 0xd9, 0x3d, 0xca, 0x66, 0x0d, 0x21, 0x6c, 0x55, 0x36, 0x22, 0x36, 0x27, 0x94, 0xf7, 0xa2, 0xac, 0xc7, 0x10, 0x22, 0xbd, 0xb1, 0x6f,
3705
};
3706
static const ecdh_test_case ecccdh_SECP521R1_23_test_case = {
3707
.name = "ECCCDH/SECP521R1 23",
3708
.ecdh_type = ECCCDH,
3709
.ec_str_p = &secp521r1_str_params,
3710
.our_priv_key = ecccdh_SECP521R1_23_test_vector_our_priv_key,
3711
.our_priv_key_len = sizeof(ecccdh_SECP521R1_23_test_vector_our_priv_key),
3712
.peer_pub_key = ecccdh_SECP521R1_23_test_vector_peer_pub_key,
3713
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_23_test_vector_peer_pub_key),
3714
.exp_our_pub_key = ecccdh_SECP521R1_23_test_vector_our_pub_key,
3715
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_23_test_vector_our_pub_key),
3716
.exp_shared_secret = ecccdh_SECP521R1_23_test_vector_shared_secret,
3717
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_23_test_vector_shared_secret),
3718
};
3719
#endif /* WITH_CURVE_SECP521R1 */
3720
3721
#ifdef WITH_CURVE_SECP521R1
3722
#define ECCCDH_SECP521R1_SELF_TEST_24
3723
/*** Tests for ECCCDH/SECP521R1 ***/
3724
static const u8 ecccdh_SECP521R1_24_test_vector_our_priv_key[] = {
3725
0x00, 0x00, 0x00, 0xdf, 0x14, 0xb1, 0xf1, 0x43, 0x2a, 0x7b, 0x0f, 0xb0, 0x53, 0x96, 0x5f, 0xd8, 0x64, 0x3a, 0xfe, 0xe2, 0x6b, 0x24, 0x51, 0xec, 0xb6, 0xa8, 0xa5, 0x3a, 0x65, 0x5d, 0x5f, 0xbe, 0x16, 0xe4, 0xc6, 0x4c, 0xe8, 0x64, 0x72, 0x25, 0xeb, 0x11, 0xe7, 0xfd, 0xcb, 0x23, 0x62, 0x74, 0x71, 0xdf, 0xfc, 0x5c, 0x25, 0x23, 0xbd, 0x2a, 0xe8, 0x99, 0x57, 0xcb, 0xa3, 0xa5, 0x7a, 0x23, 0x93, 0x3e, 0x5a, 0x78,
3726
};
3727
static const u8 ecccdh_SECP521R1_24_test_vector_peer_pub_key[] = {
3728
0x01, 0xa3, 0x20, 0x99, 0xb0, 0x2c, 0x0b, 0xd8, 0x53, 0x71, 0xf6, 0x0b, 0x0d, 0xd2, 0x08, 0x90, 0xe6, 0xc7, 0xaf, 0x04, 0x8c, 0x81, 0x79, 0x89, 0x0f, 0xda, 0x30, 0x8b, 0x35, 0x9d, 0xbb, 0xc2, 0xb7, 0xa8, 0x32, 0xbb, 0x8c, 0x65, 0x26, 0xc4, 0xaf, 0x99, 0xa7, 0xea, 0x3f, 0x0b, 0x3c, 0xb9, 0x6a, 0xe1, 0xeb, 0x76, 0x84, 0x13, 0x27, 0x95, 0xc4, 0x78, 0xad, 0x6f, 0x96, 0x2e, 0x4a, 0x6f, 0x44, 0x6d, 0x01, 0x76, 0x27, 0x35, 0x7b, 0x39, 0xe9, 0xd7, 0x63, 0x2a, 0x13, 0x70, 0xb3, 0xe9, 0x3c, 0x1a, 0xfb, 0x5c, 0x85, 0x1b, 0x91, 0x0e, 0xb4, 0xea, 0xd0, 0xc9, 0xd3, 0x87, 0xdf, 0x67, 0xcd, 0xe8, 0x50, 0x03, 0xe0, 0xe4, 0x27, 0x55, 0x2f, 0x1c, 0xd0, 0x90, 0x59, 0xaa, 0xd0, 0x26, 0x2e, 0x23, 0x5c, 0xce, 0x5f, 0xba, 0x8c, 0xed, 0xc4, 0xfd, 0xc1, 0x46, 0x3d, 0xa7, 0x6d, 0xcd, 0x4b, 0x6d, 0x1a, 0x46,
3729
};
3730
static const u8 ecccdh_SECP521R1_24_test_vector_our_pub_key[] = {
3731
0x00, 0x4e, 0x85, 0x83, 0xbb, 0xbb, 0x2e, 0xcd, 0x93, 0xf0, 0x71, 0x4c, 0x33, 0x2d, 0xff, 0x5a, 0xb3, 0xbc, 0x63, 0x96, 0xe6, 0x2f, 0x3c, 0x56, 0x02, 0x29, 0x66, 0x43, 0x29, 0xba, 0xa5, 0x13, 0x8c, 0x3b, 0xb1, 0xc3, 0x64, 0x28, 0xab, 0xd4, 0xe2, 0x3d, 0x17, 0xfc, 0xb7, 0xa2, 0xcf, 0xcc, 0x22, 0x4b, 0x2e, 0x73, 0x4c, 0x89, 0x41, 0xf6, 0xf1, 0x21, 0x72, 0x2d, 0x7b, 0x6b, 0x94, 0x15, 0x45, 0x76, 0x01, 0xcf, 0x08, 0x74, 0xf2, 0x04, 0xb0, 0x36, 0x3f, 0x02, 0x08, 0x64, 0x67, 0x2f, 0xad, 0xbf, 0x87, 0xc8, 0x81, 0x1e, 0xb1, 0x47, 0x75, 0x8b, 0x25, 0x4b, 0x74, 0xb1, 0x4f, 0xae, 0x74, 0x21, 0x59, 0xf0, 0xf6, 0x71, 0xa0, 0x18, 0x21, 0x2b, 0xbf, 0x25, 0xb8, 0x51, 0x9e, 0x12, 0x6d, 0x4c, 0xad, 0x77, 0x8c, 0xff, 0xf5, 0x0d, 0x28, 0x8f, 0xd3, 0x9c, 0xeb, 0x0c, 0xac, 0x63, 0x5b, 0x17, 0x5e, 0xc0,
3732
};
3733
static const u8 ecccdh_SECP521R1_24_test_vector_shared_secret[] = {
3734
0x01, 0xaa, 0xf2, 0x4e, 0x5d, 0x47, 0xe4, 0x08, 0x0c, 0x18, 0xc5, 0x5e, 0xa3, 0x55, 0x81, 0xcd, 0x8d, 0xa3, 0x0f, 0x1a, 0x07, 0x95, 0x65, 0x04, 0x5d, 0x20, 0x08, 0xd5, 0x1b, 0x12, 0xd0, 0xab, 0xb4, 0x41, 0x1c, 0xda, 0x7a, 0x07, 0x85, 0xb1, 0x5d, 0x14, 0x9e, 0xd3, 0x01, 0xa3, 0x69, 0x70, 0x62, 0xf4, 0x2d, 0xa2, 0x37, 0xaa, 0x7f, 0x07, 0xe0, 0xaf, 0x3f, 0xd0, 0x0e, 0xb1, 0x80, 0x0d, 0x9c, 0x41,
3735
};
3736
static const ecdh_test_case ecccdh_SECP521R1_24_test_case = {
3737
.name = "ECCCDH/SECP521R1 24",
3738
.ecdh_type = ECCCDH,
3739
.ec_str_p = &secp521r1_str_params,
3740
.our_priv_key = ecccdh_SECP521R1_24_test_vector_our_priv_key,
3741
.our_priv_key_len = sizeof(ecccdh_SECP521R1_24_test_vector_our_priv_key),
3742
.peer_pub_key = ecccdh_SECP521R1_24_test_vector_peer_pub_key,
3743
.peer_pub_key_len = sizeof(ecccdh_SECP521R1_24_test_vector_peer_pub_key),
3744
.exp_our_pub_key = ecccdh_SECP521R1_24_test_vector_our_pub_key,
3745
.exp_our_pub_key_len = sizeof(ecccdh_SECP521R1_24_test_vector_our_pub_key),
3746
.exp_shared_secret = ecccdh_SECP521R1_24_test_vector_shared_secret,
3747
.exp_shared_secret_len = sizeof(ecccdh_SECP521R1_24_test_vector_shared_secret),
3748
};
3749
#endif /* WITH_CURVE_SECP521R1 */
3750
3751
3752