Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/crypto/libecc/src/tests/x25519_test_vectors.h
34878 views
1
/*
2
* Copyright (C) 2021 - This file is part of libecc project
3
*
4
* Authors:
5
* Ryad BENADJILA <[email protected]>
6
* Arnaud EBALARD <[email protected]>
7
*
8
* This software is licensed under a dual BSD and GPL v2 license.
9
* See LICENSE file at the root folder of the project.
10
*/
11
12
#ifdef WITH_CURVE_WEI25519
13
14
/***** Test vectors from RFC7748 ****/
15
static const u8 x25519_WEI25519_0_our_priv_key[] = {
16
0x77, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, 0xc1, 0x72, 0x51, 0xb2, 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0, 0x99, 0x2a, 0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x2a,
17
};
18
19
static const u8 x25519_WEI25519_0_peer_pub_key[] = {
20
0xde, 0x9e, 0xdb, 0x7d, 0x7b, 0x7d, 0xc1, 0xb4, 0xd3, 0x5b, 0x61, 0xc2, 0xec, 0xe4, 0x35, 0x37, 0x3f, 0x83, 0x43, 0xc8, 0x5b, 0x78, 0x67, 0x4d, 0xad, 0xfc, 0x7e, 0x14, 0x6f, 0x88, 0x2b, 0x4f,
21
};
22
23
static const u8 x25519_WEI25519_0_our_pub_key[] = {
24
0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d, 0xdc, 0xb4, 0x3e, 0xf7, 0x5a, 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, 0x1a, 0xf4, 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a,
25
};
26
27
static const u8 x25519_WEI25519_0_shared_secret[] = {
28
0x4a, 0x5d, 0x9d, 0x5b, 0xa4, 0xce, 0x2d, 0xe1, 0x72, 0x8e, 0x3b, 0xf4, 0x80, 0x35, 0x0f, 0x25, 0xe0, 0x7e, 0x21, 0xc9, 0x47, 0xd1, 0x9e, 0x33, 0x76, 0xf0, 0x9b, 0x3c, 0x1e, 0x16, 0x17, 0x42,
29
};
30
31
static const ecdh_test_case x25519_WEI25519_0_test_case = {
32
.name = "X25519/WEI25519 0",
33
.ecdh_type = X25519,
34
.ec_str_p = &wei25519_str_params,
35
.our_priv_key = x25519_WEI25519_0_our_priv_key,
36
.our_priv_key_len = sizeof(x25519_WEI25519_0_our_priv_key),
37
.peer_pub_key = x25519_WEI25519_0_peer_pub_key,
38
.peer_pub_key_len = sizeof(x25519_WEI25519_0_peer_pub_key),
39
.exp_our_pub_key = x25519_WEI25519_0_our_pub_key,
40
.exp_our_pub_key_len = sizeof(x25519_WEI25519_0_our_pub_key),
41
.exp_shared_secret = x25519_WEI25519_0_shared_secret,
42
.exp_shared_secret_len = sizeof(x25519_WEI25519_0_shared_secret),
43
};
44
/******************/
45
46
static const u8 x25519_WEI25519_1_our_priv_key[] = {
47
0x5d, 0xab, 0x08, 0x7e, 0x62, 0x4a, 0x8a, 0x4b, 0x79, 0xe1, 0x7f, 0x8b, 0x83, 0x80, 0x0e, 0xe6, 0x6f, 0x3b, 0xb1, 0x29, 0x26, 0x18, 0xb6, 0xfd, 0x1c, 0x2f, 0x8b, 0x27, 0xff, 0x88, 0xe0, 0xeb,
48
};
49
50
static const u8 x25519_WEI25519_1_peer_pub_key[] = {
51
0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d, 0xdc, 0xb4, 0x3e, 0xf7, 0x5a, 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, 0x1a, 0xf4, 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a,
52
};
53
54
static const u8 x25519_WEI25519_1_our_pub_key[] = {
55
0xde, 0x9e, 0xdb, 0x7d, 0x7b, 0x7d, 0xc1, 0xb4, 0xd3, 0x5b, 0x61, 0xc2, 0xec, 0xe4, 0x35, 0x37, 0x3f, 0x83, 0x43, 0xc8, 0x5b, 0x78, 0x67, 0x4d, 0xad, 0xfc, 0x7e, 0x14, 0x6f, 0x88, 0x2b, 0x4f,
56
};
57
58
static const u8 x25519_WEI25519_1_shared_secret[] = {
59
0x4a, 0x5d, 0x9d, 0x5b, 0xa4, 0xce, 0x2d, 0xe1, 0x72, 0x8e, 0x3b, 0xf4, 0x80, 0x35, 0x0f, 0x25, 0xe0, 0x7e, 0x21, 0xc9, 0x47, 0xd1, 0x9e, 0x33, 0x76, 0xf0, 0x9b, 0x3c, 0x1e, 0x16, 0x17, 0x42,
60
};
61
62
static const ecdh_test_case x25519_WEI25519_1_test_case = {
63
.name = "X25519/WEI25519 1",
64
.ecdh_type = X25519,
65
.ec_str_p = &wei25519_str_params,
66
.our_priv_key = x25519_WEI25519_1_our_priv_key,
67
.our_priv_key_len = sizeof(x25519_WEI25519_1_our_priv_key),
68
.peer_pub_key = x25519_WEI25519_1_peer_pub_key,
69
.peer_pub_key_len = sizeof(x25519_WEI25519_1_peer_pub_key),
70
.exp_our_pub_key = x25519_WEI25519_1_our_pub_key,
71
.exp_our_pub_key_len = sizeof(x25519_WEI25519_1_our_pub_key),
72
.exp_shared_secret = x25519_WEI25519_1_shared_secret,
73
.exp_shared_secret_len = sizeof(x25519_WEI25519_1_shared_secret),
74
};
75
76
77
/***** Test vectors from https://tools.ietf.org/id/draft-ietf-ipsecme-safecurves-03.xml ****/
78
/******************/
79
80
static const u8 x25519_WEI25519_2_our_priv_key[] = {
81
0x75, 0x1f, 0xb4, 0x30, 0x86, 0x55, 0xb4, 0x76, 0xb6, 0x78, 0x9b, 0x73, 0x25, 0xf9, 0xea, 0x8c, 0xdd, 0xd1, 0x6a, 0x58, 0x53, 0x3f, 0xf6, 0xd9, 0xe6, 0x00, 0x09, 0x46, 0x4a, 0x5f, 0x9d, 0x94,
82
};
83
84
static const u8 x25519_WEI25519_2_peer_pub_key[] = {
85
0x0b, 0xe7, 0xc1, 0xf5, 0xaa, 0xd8, 0x7d, 0x7e, 0x44, 0x86, 0x62, 0x67, 0x32, 0x98, 0xa4, 0x43, 0x47, 0x8b, 0x85, 0x97, 0x45, 0x17, 0x9e, 0xaf, 0x56, 0x4c, 0x79, 0xc0, 0xef, 0x6e, 0xee, 0x25,
86
};
87
88
static const u8 x25519_WEI25519_2_our_pub_key[] = {
89
0x48, 0xd5, 0xdd, 0xd4, 0x06, 0x12, 0x57, 0xba, 0x16, 0x6f, 0xa3, 0xf9, 0xbb, 0xdb, 0x74, 0xf1, 0xa4, 0xe8, 0x1c, 0x08, 0x93, 0x84, 0xfa, 0x77, 0xf7, 0x90, 0x70, 0x9f, 0x0d, 0xfb, 0xc7, 0x66,
90
};
91
92
static const u8 x25519_WEI25519_2_shared_secret[] = {
93
0xc7, 0x49, 0x50, 0x60, 0x7a, 0x12, 0x32, 0x7f, 0x32, 0x04, 0xd9, 0x4b, 0x68, 0x25, 0xbf, 0xb0, 0x68, 0xb7, 0xf8, 0x31, 0x9a, 0x9e, 0x37, 0x08, 0xed, 0x3d, 0x43, 0xce, 0x81, 0x30, 0xc9, 0x50,
94
};
95
96
static const ecdh_test_case x25519_WEI25519_2_test_case = {
97
.name = "X25519/WEI25519 2",
98
.ecdh_type = X25519,
99
.ec_str_p = &wei25519_str_params,
100
.our_priv_key = x25519_WEI25519_2_our_priv_key,
101
.our_priv_key_len = sizeof(x25519_WEI25519_2_our_priv_key),
102
.peer_pub_key = x25519_WEI25519_2_peer_pub_key,
103
.peer_pub_key_len = sizeof(x25519_WEI25519_2_peer_pub_key),
104
.exp_our_pub_key = x25519_WEI25519_2_our_pub_key,
105
.exp_our_pub_key_len = sizeof(x25519_WEI25519_2_our_pub_key),
106
.exp_shared_secret = x25519_WEI25519_2_shared_secret,
107
.exp_shared_secret_len = sizeof(x25519_WEI25519_2_shared_secret),
108
};
109
110
/******************/
111
112
static const u8 x25519_WEI25519_3_our_priv_key[] = {
113
0x0a, 0x54, 0x64, 0x52, 0x53, 0x29, 0x0d, 0x60, 0xdd, 0xad, 0xd0, 0xe0, 0x30, 0xba, 0xcd, 0x9e, 0x55, 0x01, 0xef, 0xdc, 0x22, 0x07, 0x55, 0xa1, 0xe9, 0x78, 0xf1, 0xb8, 0x39, 0xa0, 0x56, 0x88,
114
};
115
116
static const u8 x25519_WEI25519_3_peer_pub_key[] = {
117
0x48, 0xd5, 0xdd, 0xd4, 0x06, 0x12, 0x57, 0xba, 0x16, 0x6f, 0xa3, 0xf9, 0xbb, 0xdb, 0x74, 0xf1, 0xa4, 0xe8, 0x1c, 0x08, 0x93, 0x84, 0xfa, 0x77, 0xf7, 0x90, 0x70, 0x9f, 0x0d, 0xfb, 0xc7, 0x66,
118
};
119
120
static const u8 x25519_WEI25519_3_our_pub_key[] = {
121
0x0b, 0xe7, 0xc1, 0xf5, 0xaa, 0xd8, 0x7d, 0x7e, 0x44, 0x86, 0x62, 0x67, 0x32, 0x98, 0xa4, 0x43, 0x47, 0x8b, 0x85, 0x97, 0x45, 0x17, 0x9e, 0xaf, 0x56, 0x4c, 0x79, 0xc0, 0xef, 0x6e, 0xee, 0x25,
122
};
123
124
static const u8 x25519_WEI25519_3_shared_secret[] = {
125
0xc7, 0x49, 0x50, 0x60, 0x7a, 0x12, 0x32, 0x7f, 0x32, 0x04, 0xd9, 0x4b, 0x68, 0x25, 0xbf, 0xb0, 0x68, 0xb7, 0xf8, 0x31, 0x9a, 0x9e, 0x37, 0x08, 0xed, 0x3d, 0x43, 0xce, 0x81, 0x30, 0xc9, 0x50,
126
};
127
128
static const ecdh_test_case x25519_WEI25519_3_test_case = {
129
.name = "X25519/WEI25519 3",
130
.ecdh_type = X25519,
131
.ec_str_p = &wei25519_str_params,
132
.our_priv_key = x25519_WEI25519_3_our_priv_key,
133
.our_priv_key_len = sizeof(x25519_WEI25519_3_our_priv_key),
134
.peer_pub_key = x25519_WEI25519_3_peer_pub_key,
135
.peer_pub_key_len = sizeof(x25519_WEI25519_3_peer_pub_key),
136
.exp_our_pub_key = x25519_WEI25519_3_our_pub_key,
137
.exp_our_pub_key_len = sizeof(x25519_WEI25519_3_our_pub_key),
138
.exp_shared_secret = x25519_WEI25519_3_shared_secret,
139
.exp_shared_secret_len = sizeof(x25519_WEI25519_3_shared_secret),
140
};
141
142
#endif
143
144