diff options
Diffstat (limited to 'regress/unittests/sshkey/test_file.c')
-rw-r--r-- | regress/unittests/sshkey/test_file.c | 457 |
1 files changed, 457 insertions, 0 deletions
diff --git a/regress/unittests/sshkey/test_file.c b/regress/unittests/sshkey/test_file.c new file mode 100644 index 000000000..764f7fb76 --- /dev/null +++ b/regress/unittests/sshkey/test_file.c | |||
@@ -0,0 +1,457 @@ | |||
1 | /* $OpenBSD: test_file.c,v 1.1 2014/06/24 01:14:18 djm Exp $ */ | ||
2 | /* | ||
3 | * Regress test for sshkey.h key management API | ||
4 | * | ||
5 | * Placed in the public domain | ||
6 | */ | ||
7 | |||
8 | #include "includes.h" | ||
9 | |||
10 | #include <sys/types.h> | ||
11 | #include <sys/param.h> | ||
12 | #include <sys/stat.h> | ||
13 | #include <fcntl.h> | ||
14 | #include <stdio.h> | ||
15 | #ifdef HAVE_STDINT_H | ||
16 | #include <stdint.h> | ||
17 | #endif | ||
18 | #include <stdlib.h> | ||
19 | #include <string.h> | ||
20 | #include <unistd.h> | ||
21 | |||
22 | #include <openssl/bn.h> | ||
23 | #include <openssl/rsa.h> | ||
24 | #include <openssl/dsa.h> | ||
25 | #include <openssl/objects.h> | ||
26 | #ifdef OPENSSL_HAS_NISTP256 | ||
27 | # include <openssl/ec.h> | ||
28 | #endif | ||
29 | |||
30 | #include "../test_helper/test_helper.h" | ||
31 | |||
32 | #include "ssherr.h" | ||
33 | #include "authfile.h" | ||
34 | #include "sshkey.h" | ||
35 | #include "sshbuf.h" | ||
36 | |||
37 | #include "common.h" | ||
38 | |||
39 | void sshkey_file_tests(void); | ||
40 | |||
41 | void | ||
42 | sshkey_file_tests(void) | ||
43 | { | ||
44 | struct sshkey *k1, *k2; | ||
45 | struct sshbuf *buf, *pw; | ||
46 | BIGNUM *a, *b, *c; | ||
47 | char *cp; | ||
48 | |||
49 | TEST_START("load passphrase"); | ||
50 | pw = load_text_file("pw"); | ||
51 | TEST_DONE(); | ||
52 | |||
53 | TEST_START("parse RSA1 from private"); | ||
54 | buf = load_file("rsa1_1"); | ||
55 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, "", "rsa1_1", | ||
56 | &k1, NULL), 0); | ||
57 | sshbuf_free(buf); | ||
58 | ASSERT_PTR_NE(k1, NULL); | ||
59 | a = load_bignum("rsa1_1.param.n"); | ||
60 | ASSERT_BIGNUM_EQ(k1->rsa->n, a); | ||
61 | BN_free(a); | ||
62 | TEST_DONE(); | ||
63 | |||
64 | TEST_START("parse RSA1 from private w/ passphrase"); | ||
65 | buf = load_file("rsa1_1_pw"); | ||
66 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, | ||
67 | (const char *)sshbuf_ptr(pw), "rsa1_1_pw", &k2, NULL), 0); | ||
68 | sshbuf_free(buf); | ||
69 | ASSERT_PTR_NE(k2, NULL); | ||
70 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
71 | sshkey_free(k2); | ||
72 | TEST_DONE(); | ||
73 | |||
74 | TEST_START("load RSA1 from public"); | ||
75 | ASSERT_INT_EQ(sshkey_load_public(test_data_file("rsa1_1.pub"), &k2, | ||
76 | NULL), 0); | ||
77 | ASSERT_PTR_NE(k2, NULL); | ||
78 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
79 | sshkey_free(k2); | ||
80 | TEST_DONE(); | ||
81 | |||
82 | TEST_START("RSA1 key hex fingerprint"); | ||
83 | buf = load_text_file("rsa1_1.fp"); | ||
84 | cp = sshkey_fingerprint(k1, SSH_FP_MD5, SSH_FP_HEX); | ||
85 | ASSERT_PTR_NE(cp, NULL); | ||
86 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
87 | sshbuf_free(buf); | ||
88 | free(cp); | ||
89 | TEST_DONE(); | ||
90 | |||
91 | TEST_START("RSA1 key bubblebabble fingerprint"); | ||
92 | buf = load_text_file("rsa1_1.fp.bb"); | ||
93 | cp = sshkey_fingerprint(k1, SSH_FP_SHA1, SSH_FP_BUBBLEBABBLE); | ||
94 | ASSERT_PTR_NE(cp, NULL); | ||
95 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
96 | sshbuf_free(buf); | ||
97 | free(cp); | ||
98 | TEST_DONE(); | ||
99 | |||
100 | sshkey_free(k1); | ||
101 | |||
102 | TEST_START("parse RSA from private"); | ||
103 | buf = load_file("rsa_1"); | ||
104 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, "", "rsa_1", | ||
105 | &k1, NULL), 0); | ||
106 | sshbuf_free(buf); | ||
107 | ASSERT_PTR_NE(k1, NULL); | ||
108 | a = load_bignum("rsa_1.param.n"); | ||
109 | b = load_bignum("rsa_1.param.p"); | ||
110 | c = load_bignum("rsa_1.param.q"); | ||
111 | ASSERT_BIGNUM_EQ(k1->rsa->n, a); | ||
112 | ASSERT_BIGNUM_EQ(k1->rsa->p, b); | ||
113 | ASSERT_BIGNUM_EQ(k1->rsa->q, c); | ||
114 | BN_free(a); | ||
115 | BN_free(b); | ||
116 | BN_free(c); | ||
117 | TEST_DONE(); | ||
118 | |||
119 | TEST_START("parse RSA from private w/ passphrase"); | ||
120 | buf = load_file("rsa_1_pw"); | ||
121 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, | ||
122 | (const char *)sshbuf_ptr(pw), "rsa_1_pw", &k2, NULL), 0); | ||
123 | sshbuf_free(buf); | ||
124 | ASSERT_PTR_NE(k2, NULL); | ||
125 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
126 | sshkey_free(k2); | ||
127 | TEST_DONE(); | ||
128 | |||
129 | TEST_START("parse RSA from new-format"); | ||
130 | buf = load_file("rsa_n"); | ||
131 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, | ||
132 | "", "rsa_n", &k2, NULL), 0); | ||
133 | sshbuf_free(buf); | ||
134 | ASSERT_PTR_NE(k2, NULL); | ||
135 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
136 | sshkey_free(k2); | ||
137 | TEST_DONE(); | ||
138 | |||
139 | TEST_START("parse RSA from new-format w/ passphrase"); | ||
140 | buf = load_file("rsa_n_pw"); | ||
141 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, | ||
142 | (const char *)sshbuf_ptr(pw), "rsa_n_pw", &k2, NULL), 0); | ||
143 | sshbuf_free(buf); | ||
144 | ASSERT_PTR_NE(k2, NULL); | ||
145 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
146 | sshkey_free(k2); | ||
147 | TEST_DONE(); | ||
148 | |||
149 | TEST_START("load RSA from public"); | ||
150 | ASSERT_INT_EQ(sshkey_load_public(test_data_file("rsa_1.pub"), &k2, | ||
151 | NULL), 0); | ||
152 | ASSERT_PTR_NE(k2, NULL); | ||
153 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
154 | sshkey_free(k2); | ||
155 | TEST_DONE(); | ||
156 | |||
157 | TEST_START("load RSA cert"); | ||
158 | ASSERT_INT_EQ(sshkey_load_cert(test_data_file("rsa_1"), &k2), 0); | ||
159 | ASSERT_PTR_NE(k2, NULL); | ||
160 | ASSERT_INT_EQ(k2->type, KEY_RSA_CERT); | ||
161 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 0); | ||
162 | ASSERT_INT_EQ(sshkey_equal_public(k1, k2), 1); | ||
163 | TEST_DONE(); | ||
164 | |||
165 | TEST_START("RSA key hex fingerprint"); | ||
166 | buf = load_text_file("rsa_1.fp"); | ||
167 | cp = sshkey_fingerprint(k1, SSH_FP_MD5, SSH_FP_HEX); | ||
168 | ASSERT_PTR_NE(cp, NULL); | ||
169 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
170 | sshbuf_free(buf); | ||
171 | free(cp); | ||
172 | TEST_DONE(); | ||
173 | |||
174 | TEST_START("RSA cert hex fingerprint"); | ||
175 | buf = load_text_file("rsa_1-cert.fp"); | ||
176 | cp = sshkey_fingerprint(k2, SSH_FP_MD5, SSH_FP_HEX); | ||
177 | ASSERT_PTR_NE(cp, NULL); | ||
178 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
179 | sshbuf_free(buf); | ||
180 | free(cp); | ||
181 | sshkey_free(k2); | ||
182 | TEST_DONE(); | ||
183 | |||
184 | TEST_START("RSA key bubblebabble fingerprint"); | ||
185 | buf = load_text_file("rsa_1.fp.bb"); | ||
186 | cp = sshkey_fingerprint(k1, SSH_FP_SHA1, SSH_FP_BUBBLEBABBLE); | ||
187 | ASSERT_PTR_NE(cp, NULL); | ||
188 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
189 | sshbuf_free(buf); | ||
190 | free(cp); | ||
191 | TEST_DONE(); | ||
192 | |||
193 | sshkey_free(k1); | ||
194 | |||
195 | TEST_START("parse DSA from private"); | ||
196 | buf = load_file("dsa_1"); | ||
197 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, "", "dsa_1", | ||
198 | &k1, NULL), 0); | ||
199 | sshbuf_free(buf); | ||
200 | ASSERT_PTR_NE(k1, NULL); | ||
201 | a = load_bignum("dsa_1.param.g"); | ||
202 | b = load_bignum("dsa_1.param.priv"); | ||
203 | c = load_bignum("dsa_1.param.pub"); | ||
204 | ASSERT_BIGNUM_EQ(k1->dsa->g, a); | ||
205 | ASSERT_BIGNUM_EQ(k1->dsa->priv_key, b); | ||
206 | ASSERT_BIGNUM_EQ(k1->dsa->pub_key, c); | ||
207 | BN_free(a); | ||
208 | BN_free(b); | ||
209 | BN_free(c); | ||
210 | TEST_DONE(); | ||
211 | |||
212 | TEST_START("parse DSA from private w/ passphrase"); | ||
213 | buf = load_file("dsa_1_pw"); | ||
214 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, | ||
215 | (const char *)sshbuf_ptr(pw), "dsa_1_pw", &k2, NULL), 0); | ||
216 | sshbuf_free(buf); | ||
217 | ASSERT_PTR_NE(k2, NULL); | ||
218 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
219 | sshkey_free(k2); | ||
220 | TEST_DONE(); | ||
221 | |||
222 | TEST_START("parse DSA from new-format"); | ||
223 | buf = load_file("dsa_n"); | ||
224 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, | ||
225 | "", "dsa_n", &k2, NULL), 0); | ||
226 | sshbuf_free(buf); | ||
227 | ASSERT_PTR_NE(k2, NULL); | ||
228 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
229 | sshkey_free(k2); | ||
230 | TEST_DONE(); | ||
231 | |||
232 | TEST_START("parse DSA from new-format w/ passphrase"); | ||
233 | buf = load_file("dsa_n_pw"); | ||
234 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, | ||
235 | (const char *)sshbuf_ptr(pw), "dsa_n_pw", &k2, NULL), 0); | ||
236 | sshbuf_free(buf); | ||
237 | ASSERT_PTR_NE(k2, NULL); | ||
238 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
239 | sshkey_free(k2); | ||
240 | TEST_DONE(); | ||
241 | |||
242 | TEST_START("load DSA from public"); | ||
243 | ASSERT_INT_EQ(sshkey_load_public(test_data_file("dsa_1.pub"), &k2, | ||
244 | NULL), 0); | ||
245 | ASSERT_PTR_NE(k2, NULL); | ||
246 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
247 | sshkey_free(k2); | ||
248 | TEST_DONE(); | ||
249 | |||
250 | TEST_START("load DSA cert"); | ||
251 | ASSERT_INT_EQ(sshkey_load_cert(test_data_file("dsa_1"), &k2), 0); | ||
252 | ASSERT_PTR_NE(k2, NULL); | ||
253 | ASSERT_INT_EQ(k2->type, KEY_DSA_CERT); | ||
254 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 0); | ||
255 | ASSERT_INT_EQ(sshkey_equal_public(k1, k2), 1); | ||
256 | TEST_DONE(); | ||
257 | |||
258 | TEST_START("DSA key hex fingerprint"); | ||
259 | buf = load_text_file("dsa_1.fp"); | ||
260 | cp = sshkey_fingerprint(k1, SSH_FP_MD5, SSH_FP_HEX); | ||
261 | ASSERT_PTR_NE(cp, NULL); | ||
262 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
263 | sshbuf_free(buf); | ||
264 | free(cp); | ||
265 | TEST_DONE(); | ||
266 | |||
267 | TEST_START("DSA cert hex fingerprint"); | ||
268 | buf = load_text_file("dsa_1-cert.fp"); | ||
269 | cp = sshkey_fingerprint(k2, SSH_FP_MD5, SSH_FP_HEX); | ||
270 | ASSERT_PTR_NE(cp, NULL); | ||
271 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
272 | sshbuf_free(buf); | ||
273 | free(cp); | ||
274 | sshkey_free(k2); | ||
275 | TEST_DONE(); | ||
276 | |||
277 | TEST_START("DSA key bubblebabble fingerprint"); | ||
278 | buf = load_text_file("dsa_1.fp.bb"); | ||
279 | cp = sshkey_fingerprint(k1, SSH_FP_SHA1, SSH_FP_BUBBLEBABBLE); | ||
280 | ASSERT_PTR_NE(cp, NULL); | ||
281 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
282 | sshbuf_free(buf); | ||
283 | free(cp); | ||
284 | TEST_DONE(); | ||
285 | |||
286 | sshkey_free(k1); | ||
287 | |||
288 | #ifdef OPENSSL_HAS_ECC | ||
289 | TEST_START("parse ECDSA from private"); | ||
290 | buf = load_file("ecdsa_1"); | ||
291 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, "", "ecdsa_1", | ||
292 | &k1, NULL), 0); | ||
293 | sshbuf_free(buf); | ||
294 | ASSERT_PTR_NE(k1, NULL); | ||
295 | buf = load_text_file("ecdsa_1.param.curve"); | ||
296 | ASSERT_STRING_EQ((const char *)sshbuf_ptr(buf), | ||
297 | OBJ_nid2sn(k1->ecdsa_nid)); | ||
298 | sshbuf_free(buf); | ||
299 | a = load_bignum("ecdsa_1.param.priv"); | ||
300 | b = load_bignum("ecdsa_1.param.pub"); | ||
301 | c = EC_POINT_point2bn(EC_KEY_get0_group(k1->ecdsa), | ||
302 | EC_KEY_get0_public_key(k1->ecdsa), POINT_CONVERSION_UNCOMPRESSED, | ||
303 | NULL, NULL); | ||
304 | ASSERT_PTR_NE(c, NULL); | ||
305 | ASSERT_BIGNUM_EQ(EC_KEY_get0_private_key(k1->ecdsa), a); | ||
306 | ASSERT_BIGNUM_EQ(b, c); | ||
307 | BN_free(a); | ||
308 | BN_free(b); | ||
309 | BN_free(c); | ||
310 | TEST_DONE(); | ||
311 | |||
312 | TEST_START("parse ECDSA from private w/ passphrase"); | ||
313 | buf = load_file("ecdsa_1_pw"); | ||
314 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, | ||
315 | (const char *)sshbuf_ptr(pw), "ecdsa_1_pw", &k2, NULL), 0); | ||
316 | sshbuf_free(buf); | ||
317 | ASSERT_PTR_NE(k2, NULL); | ||
318 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
319 | sshkey_free(k2); | ||
320 | TEST_DONE(); | ||
321 | |||
322 | TEST_START("parse ECDSA from new-format"); | ||
323 | buf = load_file("ecdsa_n"); | ||
324 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, | ||
325 | "", "ecdsa_n", &k2, NULL), 0); | ||
326 | sshbuf_free(buf); | ||
327 | ASSERT_PTR_NE(k2, NULL); | ||
328 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
329 | sshkey_free(k2); | ||
330 | TEST_DONE(); | ||
331 | |||
332 | TEST_START("parse ECDSA from new-format w/ passphrase"); | ||
333 | buf = load_file("ecdsa_n_pw"); | ||
334 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, | ||
335 | (const char *)sshbuf_ptr(pw), "ecdsa_n_pw", &k2, NULL), 0); | ||
336 | sshbuf_free(buf); | ||
337 | ASSERT_PTR_NE(k2, NULL); | ||
338 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
339 | sshkey_free(k2); | ||
340 | TEST_DONE(); | ||
341 | |||
342 | TEST_START("load ECDSA from public"); | ||
343 | ASSERT_INT_EQ(sshkey_load_public(test_data_file("ecdsa_1.pub"), &k2, | ||
344 | NULL), 0); | ||
345 | ASSERT_PTR_NE(k2, NULL); | ||
346 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
347 | sshkey_free(k2); | ||
348 | TEST_DONE(); | ||
349 | |||
350 | TEST_START("load ECDSA cert"); | ||
351 | ASSERT_INT_EQ(sshkey_load_cert(test_data_file("ecdsa_1"), &k2), 0); | ||
352 | ASSERT_PTR_NE(k2, NULL); | ||
353 | ASSERT_INT_EQ(k2->type, KEY_ECDSA_CERT); | ||
354 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 0); | ||
355 | ASSERT_INT_EQ(sshkey_equal_public(k1, k2), 1); | ||
356 | TEST_DONE(); | ||
357 | |||
358 | TEST_START("ECDSA key hex fingerprint"); | ||
359 | buf = load_text_file("ecdsa_1.fp"); | ||
360 | cp = sshkey_fingerprint(k1, SSH_FP_MD5, SSH_FP_HEX); | ||
361 | ASSERT_PTR_NE(cp, NULL); | ||
362 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
363 | sshbuf_free(buf); | ||
364 | free(cp); | ||
365 | TEST_DONE(); | ||
366 | |||
367 | TEST_START("ECDSA cert hex fingerprint"); | ||
368 | buf = load_text_file("ecdsa_1-cert.fp"); | ||
369 | cp = sshkey_fingerprint(k2, SSH_FP_MD5, SSH_FP_HEX); | ||
370 | ASSERT_PTR_NE(cp, NULL); | ||
371 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
372 | sshbuf_free(buf); | ||
373 | free(cp); | ||
374 | sshkey_free(k2); | ||
375 | TEST_DONE(); | ||
376 | |||
377 | TEST_START("ECDSA key bubblebabble fingerprint"); | ||
378 | buf = load_text_file("ecdsa_1.fp.bb"); | ||
379 | cp = sshkey_fingerprint(k1, SSH_FP_SHA1, SSH_FP_BUBBLEBABBLE); | ||
380 | ASSERT_PTR_NE(cp, NULL); | ||
381 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
382 | sshbuf_free(buf); | ||
383 | free(cp); | ||
384 | TEST_DONE(); | ||
385 | |||
386 | sshkey_free(k1); | ||
387 | #endif /* OPENSSL_HAS_ECC */ | ||
388 | |||
389 | TEST_START("parse Ed25519 from private"); | ||
390 | buf = load_file("ed25519_1"); | ||
391 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, "", "ed25519_1", | ||
392 | &k1, NULL), 0); | ||
393 | sshbuf_free(buf); | ||
394 | ASSERT_PTR_NE(k1, NULL); | ||
395 | ASSERT_INT_EQ(k1->type, KEY_ED25519); | ||
396 | /* XXX check key contents */ | ||
397 | TEST_DONE(); | ||
398 | |||
399 | TEST_START("parse Ed25519 from private w/ passphrase"); | ||
400 | buf = load_file("ed25519_1_pw"); | ||
401 | ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, | ||
402 | (const char *)sshbuf_ptr(pw), "ed25519_1_pw", &k2, NULL), 0); | ||
403 | sshbuf_free(buf); | ||
404 | ASSERT_PTR_NE(k2, NULL); | ||
405 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
406 | sshkey_free(k2); | ||
407 | TEST_DONE(); | ||
408 | |||
409 | TEST_START("load Ed25519 from public"); | ||
410 | ASSERT_INT_EQ(sshkey_load_public(test_data_file("ed25519_1.pub"), &k2, | ||
411 | NULL), 0); | ||
412 | ASSERT_PTR_NE(k2, NULL); | ||
413 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 1); | ||
414 | sshkey_free(k2); | ||
415 | TEST_DONE(); | ||
416 | |||
417 | TEST_START("load Ed25519 cert"); | ||
418 | ASSERT_INT_EQ(sshkey_load_cert(test_data_file("ed25519_1"), &k2), 0); | ||
419 | ASSERT_PTR_NE(k2, NULL); | ||
420 | ASSERT_INT_EQ(k2->type, KEY_ED25519_CERT); | ||
421 | ASSERT_INT_EQ(sshkey_equal(k1, k2), 0); | ||
422 | ASSERT_INT_EQ(sshkey_equal_public(k1, k2), 1); | ||
423 | TEST_DONE(); | ||
424 | |||
425 | TEST_START("Ed25519 key hex fingerprint"); | ||
426 | buf = load_text_file("ed25519_1.fp"); | ||
427 | cp = sshkey_fingerprint(k1, SSH_FP_MD5, SSH_FP_HEX); | ||
428 | ASSERT_PTR_NE(cp, NULL); | ||
429 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
430 | sshbuf_free(buf); | ||
431 | free(cp); | ||
432 | TEST_DONE(); | ||
433 | |||
434 | TEST_START("Ed25519 cert hex fingerprint"); | ||
435 | buf = load_text_file("ed25519_1-cert.fp"); | ||
436 | cp = sshkey_fingerprint(k2, SSH_FP_MD5, SSH_FP_HEX); | ||
437 | ASSERT_PTR_NE(cp, NULL); | ||
438 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
439 | sshbuf_free(buf); | ||
440 | free(cp); | ||
441 | sshkey_free(k2); | ||
442 | TEST_DONE(); | ||
443 | |||
444 | TEST_START("Ed25519 key bubblebabble fingerprint"); | ||
445 | buf = load_text_file("ed25519_1.fp.bb"); | ||
446 | cp = sshkey_fingerprint(k1, SSH_FP_SHA1, SSH_FP_BUBBLEBABBLE); | ||
447 | ASSERT_PTR_NE(cp, NULL); | ||
448 | ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf)); | ||
449 | sshbuf_free(buf); | ||
450 | free(cp); | ||
451 | TEST_DONE(); | ||
452 | |||
453 | sshkey_free(k1); | ||
454 | |||
455 | sshbuf_free(pw); | ||
456 | |||
457 | } | ||