comparison libtomcrypt/src/pk/dh/dh.c @ 1471:6dba84798cd5

Update to libtomcrypt 1.18.1, merged with Dropbear changes
author Matt Johnston <matt@ucc.asn.au>
date Fri, 09 Feb 2018 21:44:05 +0800
parents
children
comparison
equal deleted inserted replaced
1470:8bba51a55704 1471:6dba84798cd5
1 /* LibTomCrypt, modular cryptographic library -- Tom St Denis
2 *
3 * LibTomCrypt is a library that provides various cryptographic
4 * algorithms in a highly modular and flexible manner.
5 *
6 * The library is free for all purposes without any express
7 * guarantee it works.
8 */
9
10 #include "tomcrypt.h"
11
12 #ifdef LTC_MDH
13
14 /* This holds the key settings. ***MUST*** be organized by size from smallest to largest. */
15 const ltc_dh_set_type ltc_dh_sets[] = {
16 #ifdef LTC_DH768
17 { /* 768-bit MODP Group 1 - https://tools.ietf.org/html/rfc7296#appendix-B.1 */
18 96,
19 "DH-768",
20 "2",
21 "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
22 "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
23 "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
24 "E485B576625E7EC6F44C42E9A63A3620FFFFFFFFFFFFFFFF"
25 },
26 #endif
27 #ifdef LTC_DH1024
28 { /* 1024-bit MODP Group 2 - https://tools.ietf.org/html/rfc7296#appendix-B.2 */
29 128,
30 "DH-1024",
31 "2",
32 "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
33 "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
34 "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
35 "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
36 "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381"
37 "FFFFFFFFFFFFFFFF"
38 },
39 #endif
40 #ifdef LTC_DH1536
41 { /* 1536-bit MODP Group 5 - https://tools.ietf.org/html/rfc3526#section-2 */
42 192,
43 "DH-1536",
44 "2",
45 "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
46 "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
47 "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
48 "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
49 "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
50 "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
51 "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
52 "670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF"
53 },
54 #endif
55 #ifdef LTC_DH2048
56 { /* 2048-bit MODP Group 14 - https://tools.ietf.org/html/rfc3526#section-3 */
57 256,
58 "DH-2048",
59 "2",
60 "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
61 "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
62 "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
63 "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
64 "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
65 "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
66 "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
67 "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"
68 "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"
69 "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
70 "15728E5A8AACAA68FFFFFFFFFFFFFFFF"
71 },
72 #endif
73 #ifdef LTC_DH3072
74 { /* 3072-bit MODP Group 15 - https://tools.ietf.org/html/rfc3526#section-4 */
75 384,
76 "DH-3072",
77 "2",
78 "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
79 "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
80 "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
81 "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
82 "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
83 "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
84 "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
85 "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"
86 "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"
87 "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
88 "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64"
89 "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7"
90 "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B"
91 "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C"
92 "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31"
93 "43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF"
94 },
95 #endif
96 #ifdef LTC_DH4096
97 { /* 4096-bit MODP Group 16 - https://tools.ietf.org/html/rfc3526#section-5 */
98 512,
99 "DH-4096",
100 "2",
101 "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
102 "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
103 "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
104 "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
105 "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
106 "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
107 "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
108 "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"
109 "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"
110 "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
111 "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64"
112 "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7"
113 "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B"
114 "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C"
115 "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31"
116 "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7"
117 "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA"
118 "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6"
119 "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED"
120 "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9"
121 "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199"
122 "FFFFFFFFFFFFFFFF"
123 },
124 #endif
125 #ifdef LTC_DH6144
126 { /* 6144-bit MODP Group 17 - https://tools.ietf.org/html/rfc3526#section-6 */
127 768,
128 "DH-6144",
129 "2",
130 "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
131 "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
132 "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
133 "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
134 "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
135 "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
136 "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
137 "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"
138 "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"
139 "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
140 "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64"
141 "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7"
142 "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B"
143 "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C"
144 "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31"
145 "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7"
146 "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA"
147 "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6"
148 "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED"
149 "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9"
150 "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492"
151 "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BD"
152 "F8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831"
153 "179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1B"
154 "DB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF"
155 "5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6"
156 "D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F3"
157 "23A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA"
158 "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE328"
159 "06A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C"
160 "DA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE"
161 "12BF2D5B0B7474D6E694F91E6DCC4024FFFFFFFFFFFFFFFF"
162 },
163 #endif
164 #ifdef LTC_DH8192
165 { /* 8192-bit MODP Group 18 - https://tools.ietf.org/html/rfc3526#section-7 */
166 1024,
167 "DH-8192",
168 "2",
169 "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
170 "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
171 "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
172 "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
173 "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
174 "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
175 "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
176 "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"
177 "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"
178 "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
179 "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64"
180 "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7"
181 "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B"
182 "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C"
183 "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31"
184 "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7"
185 "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA"
186 "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6"
187 "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED"
188 "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9"
189 "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492"
190 "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BD"
191 "F8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831"
192 "179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1B"
193 "DB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF"
194 "5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6"
195 "D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F3"
196 "23A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA"
197 "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE328"
198 "06A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C"
199 "DA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE"
200 "12BF2D5B0B7474D6E694F91E6DBE115974A3926F12FEE5E4"
201 "38777CB6A932DF8CD8BEC4D073B931BA3BC832B68D9DD300"
202 "741FA7BF8AFC47ED2576F6936BA424663AAB639C5AE4F568"
203 "3423B4742BF1C978238F16CBE39D652DE3FDB8BEFC848AD9"
204 "22222E04A4037C0713EB57A81A23F0C73473FC646CEA306B"
205 "4BCBC8862F8385DDFA9D4B7FA2C087E879683303ED5BDD3A"
206 "062B3CF5B3A278A66D2A13F83F44F82DDF310EE074AB6A36"
207 "4597E899A0255DC164F31CC50846851DF9AB48195DED7EA1"
208 "B1D510BD7EE74D73FAF36BC31ECFA268359046F4EB879F92"
209 "4009438B481C6CD7889A002ED5EE382BC9190DA6FC026E47"
210 "9558E4475677E9AA9E3050E2765694DFC81F56E880B96E71"
211 "60C980DD98EDD3DFFFFFFFFFFFFFFFFF"
212 },
213 #endif
214 {
215 0,
216 NULL,
217 NULL,
218 NULL
219 }
220 };
221
222 /**
223 Returns the DH group size (octets) for given key
224 @param key The DH key to get the size of
225 @return The group size in octets (0 on error)
226 */
227 int dh_get_groupsize(dh_key *key)
228 {
229 if (key == NULL) return 0;
230 return mp_unsigned_bin_size(key->prime);
231 }
232
233 #endif /* LTC_MDH */
234
235 /* ref: $Format:%D$ */
236 /* git commit: $Format:%H$ */
237 /* commit time: $Format:%ai$ */