summaryrefslogtreecommitdiff
path: root/regress/unittests/sshkey
diff options
context:
space:
mode:
Diffstat (limited to 'regress/unittests/sshkey')
-rw-r--r--regress/unittests/sshkey/common.c6
-rw-r--r--regress/unittests/sshkey/test_file.c8
-rw-r--r--regress/unittests/sshkey/test_fuzz.c14
-rw-r--r--regress/unittests/sshkey/test_sshkey.c36
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_1_pw12
5 files changed, 55 insertions, 21 deletions
diff --git a/regress/unittests/sshkey/common.c b/regress/unittests/sshkey/common.c
index e63465c47..e21638093 100644
--- a/regress/unittests/sshkey/common.c
+++ b/regress/unittests/sshkey/common.c
@@ -19,13 +19,15 @@
19#include <string.h> 19#include <string.h>
20#include <unistd.h> 20#include <unistd.h>
21 21
22#ifdef WITH_OPENSSL
22#include <openssl/bn.h> 23#include <openssl/bn.h>
23#include <openssl/rsa.h> 24#include <openssl/rsa.h>
24#include <openssl/dsa.h> 25#include <openssl/dsa.h>
25#include <openssl/objects.h> 26#include <openssl/objects.h>
26#ifdef OPENSSL_HAS_NISTP256 27#ifdef OPENSSL_HAS_NISTP256
27# include <openssl/ec.h> 28# include <openssl/ec.h>
28#endif 29#endif /* OPENSSL_HAS_NISTP256 */
30#endif /* WITH_OPENSSL */
29 31
30#include "openbsd-compat/openssl-compat.h" 32#include "openbsd-compat/openssl-compat.h"
31 33
@@ -72,6 +74,7 @@ load_text_file(const char *name)
72 return ret; 74 return ret;
73} 75}
74 76
77#ifdef WITH_OPENSSL
75BIGNUM * 78BIGNUM *
76load_bignum(const char *name) 79load_bignum(const char *name)
77{ 80{
@@ -160,4 +163,5 @@ dsa_priv_key(struct sshkey *k)
160 DSA_get0_key(k->dsa, NULL, &priv_key); 163 DSA_get0_key(k->dsa, NULL, &priv_key);
161 return priv_key; 164 return priv_key;
162} 165}
166#endif /* WITH_OPENSSL */
163 167
diff --git a/regress/unittests/sshkey/test_file.c b/regress/unittests/sshkey/test_file.c
index 65610dacc..55627bc12 100644
--- a/regress/unittests/sshkey/test_file.c
+++ b/regress/unittests/sshkey/test_file.c
@@ -19,13 +19,15 @@
19#include <string.h> 19#include <string.h>
20#include <unistd.h> 20#include <unistd.h>
21 21
22#ifdef WITH_OPENSSL
22#include <openssl/bn.h> 23#include <openssl/bn.h>
23#include <openssl/rsa.h> 24#include <openssl/rsa.h>
24#include <openssl/dsa.h> 25#include <openssl/dsa.h>
25#include <openssl/objects.h> 26#include <openssl/objects.h>
26#ifdef OPENSSL_HAS_NISTP256 27#ifdef OPENSSL_HAS_NISTP256
27# include <openssl/ec.h> 28# include <openssl/ec.h>
28#endif 29#endif /* OPENSSL_HAS_NISTP256 */
30#endif /* WITH_OPENSSL */
29 31
30#include "../test_helper/test_helper.h" 32#include "../test_helper/test_helper.h"
31 33
@@ -44,7 +46,9 @@ sshkey_file_tests(void)
44{ 46{
45 struct sshkey *k1, *k2; 47 struct sshkey *k1, *k2;
46 struct sshbuf *buf, *pw; 48 struct sshbuf *buf, *pw;
49#ifdef WITH_OPENSSL
47 BIGNUM *a, *b, *c; 50 BIGNUM *a, *b, *c;
51#endif
48 char *cp; 52 char *cp;
49 53
50 TEST_START("load passphrase"); 54 TEST_START("load passphrase");
@@ -52,6 +56,7 @@ sshkey_file_tests(void)
52 TEST_DONE(); 56 TEST_DONE();
53 57
54 58
59#ifdef WITH_OPENSSL
55 TEST_START("parse RSA from private"); 60 TEST_START("parse RSA from private");
56 buf = load_file("rsa_1"); 61 buf = load_file("rsa_1");
57 ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, "", &k1, NULL), 0); 62 ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, "", &k1, NULL), 0);
@@ -350,6 +355,7 @@ sshkey_file_tests(void)
350 355
351 sshkey_free(k1); 356 sshkey_free(k1);
352#endif /* OPENSSL_HAS_ECC */ 357#endif /* OPENSSL_HAS_ECC */
358#endif /* WITH_OPENSSL */
353 359
354 TEST_START("parse Ed25519 from private"); 360 TEST_START("parse Ed25519 from private");
355 buf = load_file("ed25519_1"); 361 buf = load_file("ed25519_1");
diff --git a/regress/unittests/sshkey/test_fuzz.c b/regress/unittests/sshkey/test_fuzz.c
index 5953de595..1323f8997 100644
--- a/regress/unittests/sshkey/test_fuzz.c
+++ b/regress/unittests/sshkey/test_fuzz.c
@@ -113,7 +113,7 @@ sshkey_fuzz_tests(void)
113 struct fuzz *fuzz; 113 struct fuzz *fuzz;
114 int r, i; 114 int r, i;
115 115
116 116#ifdef WITH_OPENSSL
117 TEST_START("fuzz RSA private"); 117 TEST_START("fuzz RSA private");
118 buf = load_file("rsa_1"); 118 buf = load_file("rsa_1");
119 fuzz = fuzz_begin(FUZZ_BASE64, sshbuf_mutable_ptr(buf), 119 fuzz = fuzz_begin(FUZZ_BASE64, sshbuf_mutable_ptr(buf),
@@ -246,7 +246,8 @@ sshkey_fuzz_tests(void)
246 sshbuf_free(fuzzed); 246 sshbuf_free(fuzzed);
247 fuzz_cleanup(fuzz); 247 fuzz_cleanup(fuzz);
248 TEST_DONE(); 248 TEST_DONE();
249#endif 249#endif /* OPENSSL_HAS_ECC */
250#endif /* WITH_OPENSSL */
250 251
251 TEST_START("fuzz Ed25519 private"); 252 TEST_START("fuzz Ed25519 private");
252 buf = load_file("ed25519_1"); 253 buf = load_file("ed25519_1");
@@ -270,6 +271,7 @@ sshkey_fuzz_tests(void)
270 fuzz_cleanup(fuzz); 271 fuzz_cleanup(fuzz);
271 TEST_DONE(); 272 TEST_DONE();
272 273
274#ifdef WITH_OPENSSL
273 TEST_START("fuzz RSA public"); 275 TEST_START("fuzz RSA public");
274 buf = load_file("rsa_1"); 276 buf = load_file("rsa_1");
275 ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, "", &k1, NULL), 0); 277 ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, "", &k1, NULL), 0);
@@ -312,7 +314,8 @@ sshkey_fuzz_tests(void)
312 public_fuzz(k1); 314 public_fuzz(k1);
313 sshkey_free(k1); 315 sshkey_free(k1);
314 TEST_DONE(); 316 TEST_DONE();
315#endif 317#endif /* OPENSSL_HAS_ECC */
318#endif /* WITH_OPENSSL */
316 319
317 TEST_START("fuzz Ed25519 public"); 320 TEST_START("fuzz Ed25519 public");
318 buf = load_file("ed25519_1"); 321 buf = load_file("ed25519_1");
@@ -328,6 +331,7 @@ sshkey_fuzz_tests(void)
328 sshkey_free(k1); 331 sshkey_free(k1);
329 TEST_DONE(); 332 TEST_DONE();
330 333
334#ifdef WITH_OPENSSL
331 TEST_START("fuzz RSA sig"); 335 TEST_START("fuzz RSA sig");
332 buf = load_file("rsa_1"); 336 buf = load_file("rsa_1");
333 ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, "", &k1, NULL), 0); 337 ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, "", &k1, NULL), 0);
@@ -368,7 +372,8 @@ sshkey_fuzz_tests(void)
368 sig_fuzz(k1, NULL); 372 sig_fuzz(k1, NULL);
369 sshkey_free(k1); 373 sshkey_free(k1);
370 TEST_DONE(); 374 TEST_DONE();
371#endif 375#endif /* OPENSSL_HAS_ECC */
376#endif /* WITH_OPENSSL */
372 377
373 TEST_START("fuzz Ed25519 sig"); 378 TEST_START("fuzz Ed25519 sig");
374 buf = load_file("ed25519_1"); 379 buf = load_file("ed25519_1");
@@ -379,5 +384,6 @@ sshkey_fuzz_tests(void)
379 TEST_DONE(); 384 TEST_DONE();
380 385
381/* XXX fuzz decoded new-format blobs too */ 386/* XXX fuzz decoded new-format blobs too */
387/* XXX fuzz XMSS too */
382 388
383} 389}
diff --git a/regress/unittests/sshkey/test_sshkey.c b/regress/unittests/sshkey/test_sshkey.c
index d003483f5..42395b8db 100644
--- a/regress/unittests/sshkey/test_sshkey.c
+++ b/regress/unittests/sshkey/test_sshkey.c
@@ -50,6 +50,7 @@ put_opt(struct sshbuf *b, const char *name, const char *value)
50 sshbuf_free(sect); 50 sshbuf_free(sect);
51} 51}
52 52
53#ifdef WITH_OPENSSL
53static void 54static void
54build_cert(struct sshbuf *b, struct sshkey *k, const char *type, 55build_cert(struct sshbuf *b, struct sshkey *k, const char *type,
55 struct sshkey *sign_key, struct sshkey *ca_key, 56 struct sshkey *sign_key, struct sshkey *ca_key,
@@ -110,6 +111,7 @@ build_cert(struct sshbuf *b, struct sshkey *k, const char *type,
110 sshbuf_free(principals); 111 sshbuf_free(principals);
111 sshbuf_free(pk); 112 sshbuf_free(pk);
112} 113}
114#endif /* WITH_OPENSSL */
113 115
114static void 116static void
115signature_test(struct sshkey *k, struct sshkey *bad, const char *sig_alg, 117signature_test(struct sshkey *k, struct sshkey *bad, const char *sig_alg,
@@ -176,10 +178,13 @@ get_private(const char *n)
176void 178void
177sshkey_tests(void) 179sshkey_tests(void)
178{ 180{
179 struct sshkey *k1, *k2, *k3, *k4, *kr, *kd, *kf; 181 struct sshkey *k1, *k2, *k3, *kf;
182#ifdef WITH_OPENSSL
183 struct sshkey *k4, *kr, *kd;
180#ifdef OPENSSL_HAS_ECC 184#ifdef OPENSSL_HAS_ECC
181 struct sshkey *ke; 185 struct sshkey *ke;
182#endif 186#endif /* OPENSSL_HAS_ECC */
187#endif /* WITH_OPENSSL */
183 struct sshbuf *b; 188 struct sshbuf *b;
184 189
185 TEST_START("new invalid"); 190 TEST_START("new invalid");
@@ -193,6 +198,7 @@ sshkey_tests(void)
193 sshkey_free(k1); 198 sshkey_free(k1);
194 TEST_DONE(); 199 TEST_DONE();
195 200
201#ifdef WITH_OPENSSL
196 TEST_START("new/free KEY_RSA"); 202 TEST_START("new/free KEY_RSA");
197 k1 = sshkey_new(KEY_RSA); 203 k1 = sshkey_new(KEY_RSA);
198 ASSERT_PTR_NE(k1, NULL); 204 ASSERT_PTR_NE(k1, NULL);
@@ -281,7 +287,8 @@ sshkey_tests(void)
281 ASSERT_PTR_NE(EC_KEY_get0_public_key(ke->ecdsa), NULL); 287 ASSERT_PTR_NE(EC_KEY_get0_public_key(ke->ecdsa), NULL);
282 ASSERT_PTR_NE(EC_KEY_get0_private_key(ke->ecdsa), NULL); 288 ASSERT_PTR_NE(EC_KEY_get0_private_key(ke->ecdsa), NULL);
283 TEST_DONE(); 289 TEST_DONE();
284#endif 290#endif /* OPENSSL_HAS_ECC */
291#endif /* WITH_OPENSSL */
285 292
286 TEST_START("generate KEY_ED25519"); 293 TEST_START("generate KEY_ED25519");
287 ASSERT_INT_EQ(sshkey_generate(KEY_ED25519, 256, &kf), 0); 294 ASSERT_INT_EQ(sshkey_generate(KEY_ED25519, 256, &kf), 0);
@@ -291,6 +298,7 @@ sshkey_tests(void)
291 ASSERT_PTR_NE(kf->ed25519_sk, NULL); 298 ASSERT_PTR_NE(kf->ed25519_sk, NULL);
292 TEST_DONE(); 299 TEST_DONE();
293 300
301#ifdef WITH_OPENSSL
294 TEST_START("demote KEY_RSA"); 302 TEST_START("demote KEY_RSA");
295 ASSERT_INT_EQ(sshkey_from_private(kr, &k1), 0); 303 ASSERT_INT_EQ(sshkey_from_private(kr, &k1), 0);
296 ASSERT_PTR_NE(k1, NULL); 304 ASSERT_PTR_NE(k1, NULL);
@@ -338,7 +346,8 @@ sshkey_tests(void)
338 ASSERT_INT_EQ(sshkey_equal(ke, k1), 1); 346 ASSERT_INT_EQ(sshkey_equal(ke, k1), 1);
339 sshkey_free(k1); 347 sshkey_free(k1);
340 TEST_DONE(); 348 TEST_DONE();
341#endif 349#endif /* OPENSSL_HAS_ECC */
350#endif /* WITH_OPENSSL */
342 351
343 TEST_START("demote KEY_ED25519"); 352 TEST_START("demote KEY_ED25519");
344 ASSERT_INT_EQ(sshkey_from_private(kf, &k1), 0); 353 ASSERT_INT_EQ(sshkey_from_private(kf, &k1), 0);
@@ -354,17 +363,20 @@ sshkey_tests(void)
354 sshkey_free(k1); 363 sshkey_free(k1);
355 TEST_DONE(); 364 TEST_DONE();
356 365
366#ifdef WITH_OPENSSL
357 TEST_START("equal mismatched key types"); 367 TEST_START("equal mismatched key types");
358 ASSERT_INT_EQ(sshkey_equal(kd, kr), 0); 368 ASSERT_INT_EQ(sshkey_equal(kd, kr), 0);
359#ifdef OPENSSL_HAS_ECC 369#ifdef OPENSSL_HAS_ECC
360 ASSERT_INT_EQ(sshkey_equal(kd, ke), 0); 370 ASSERT_INT_EQ(sshkey_equal(kd, ke), 0);
361 ASSERT_INT_EQ(sshkey_equal(kr, ke), 0); 371 ASSERT_INT_EQ(sshkey_equal(kr, ke), 0);
362 ASSERT_INT_EQ(sshkey_equal(ke, kf), 0); 372 ASSERT_INT_EQ(sshkey_equal(ke, kf), 0);
363#endif 373#endif /* OPENSSL_HAS_ECC */
364 ASSERT_INT_EQ(sshkey_equal(kd, kf), 0); 374 ASSERT_INT_EQ(sshkey_equal(kd, kf), 0);
365 TEST_DONE(); 375 TEST_DONE();
376#endif /* WITH_OPENSSL */
366 377
367 TEST_START("equal different keys"); 378 TEST_START("equal different keys");
379#ifdef WITH_OPENSSL
368 ASSERT_INT_EQ(sshkey_generate(KEY_RSA, 1024, &k1), 0); 380 ASSERT_INT_EQ(sshkey_generate(KEY_RSA, 1024, &k1), 0);
369 ASSERT_INT_EQ(sshkey_equal(kr, k1), 0); 381 ASSERT_INT_EQ(sshkey_equal(kr, k1), 0);
370 sshkey_free(k1); 382 sshkey_free(k1);
@@ -375,17 +387,20 @@ sshkey_tests(void)
375 ASSERT_INT_EQ(sshkey_generate(KEY_ECDSA, 256, &k1), 0); 387 ASSERT_INT_EQ(sshkey_generate(KEY_ECDSA, 256, &k1), 0);
376 ASSERT_INT_EQ(sshkey_equal(ke, k1), 0); 388 ASSERT_INT_EQ(sshkey_equal(ke, k1), 0);
377 sshkey_free(k1); 389 sshkey_free(k1);
378#endif 390#endif /* OPENSSL_HAS_ECC */
391#endif /* WITH_OPENSSL */
379 ASSERT_INT_EQ(sshkey_generate(KEY_ED25519, 256, &k1), 0); 392 ASSERT_INT_EQ(sshkey_generate(KEY_ED25519, 256, &k1), 0);
380 ASSERT_INT_EQ(sshkey_equal(kf, k1), 0); 393 ASSERT_INT_EQ(sshkey_equal(kf, k1), 0);
381 sshkey_free(k1); 394 sshkey_free(k1);
382 TEST_DONE(); 395 TEST_DONE();
383 396
397#ifdef WITH_OPENSSL
384 sshkey_free(kr); 398 sshkey_free(kr);
385 sshkey_free(kd); 399 sshkey_free(kd);
386#ifdef OPENSSL_HAS_ECC 400#ifdef OPENSSL_HAS_ECC
387 sshkey_free(ke); 401 sshkey_free(ke);
388#endif 402#endif /* OPENSSL_HAS_ECC */
403#endif /* WITH_OPENSSL */
389 sshkey_free(kf); 404 sshkey_free(kf);
390 405
391 TEST_START("certify key"); 406 TEST_START("certify key");
@@ -434,6 +449,7 @@ sshkey_tests(void)
434 sshbuf_reset(b); 449 sshbuf_reset(b);
435 TEST_DONE(); 450 TEST_DONE();
436 451
452#ifdef WITH_OPENSSL
437 TEST_START("sign and verify RSA"); 453 TEST_START("sign and verify RSA");
438 k1 = get_private("rsa_1"); 454 k1 = get_private("rsa_1");
439 ASSERT_INT_EQ(sshkey_load_public(test_data_file("rsa_2.pub"), &k2, 455 ASSERT_INT_EQ(sshkey_load_public(test_data_file("rsa_2.pub"), &k2,
@@ -479,7 +495,8 @@ sshkey_tests(void)
479 sshkey_free(k1); 495 sshkey_free(k1);
480 sshkey_free(k2); 496 sshkey_free(k2);
481 TEST_DONE(); 497 TEST_DONE();
482#endif 498#endif /* OPENSSL_HAS_ECC */
499#endif /* WITH_OPENSSL */
483 500
484 TEST_START("sign and verify ED25519"); 501 TEST_START("sign and verify ED25519");
485 k1 = get_private("ed25519_1"); 502 k1 = get_private("ed25519_1");
@@ -490,6 +507,7 @@ sshkey_tests(void)
490 sshkey_free(k2); 507 sshkey_free(k2);
491 TEST_DONE(); 508 TEST_DONE();
492 509
510#ifdef WITH_OPENSSL
493 TEST_START("nested certificate"); 511 TEST_START("nested certificate");
494 ASSERT_INT_EQ(sshkey_load_cert(test_data_file("rsa_1"), &k1), 0); 512 ASSERT_INT_EQ(sshkey_load_cert(test_data_file("rsa_1"), &k1), 0);
495 ASSERT_INT_EQ(sshkey_load_public(test_data_file("rsa_1.pub"), &k2, 513 ASSERT_INT_EQ(sshkey_load_public(test_data_file("rsa_1.pub"), &k2,
@@ -504,5 +522,5 @@ sshkey_tests(void)
504 sshkey_free(k3); 522 sshkey_free(k3);
505 sshbuf_free(b); 523 sshbuf_free(b);
506 TEST_DONE(); 524 TEST_DONE();
507 525#endif /* WITH_OPENSSL */
508} 526}
diff --git a/regress/unittests/sshkey/testdata/ed25519_1_pw b/regress/unittests/sshkey/testdata/ed25519_1_pw
index c3b7ae7f8..da94d2b8e 100644
--- a/regress/unittests/sshkey/testdata/ed25519_1_pw
+++ b/regress/unittests/sshkey/testdata/ed25519_1_pw
@@ -1,8 +1,8 @@
1-----BEGIN OPENSSH PRIVATE KEY----- 1-----BEGIN OPENSSH PRIVATE KEY-----
2b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jYmMAAAAGYmNyeXB0AAAAGAAAABCus+kaow 2b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABDKT56mBA
3AUjHphacvRp98dAAAAEAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIFOG6kY7Rf4UtCFv 3tXIMsWqmuuA2gdAAAAEAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIFOG6kY7Rf4UtCFv
4PwKgo/BztXck2xC4a2WyA34XtIwZAAAAoJaqqgiYQuElraJAmYOm7Tb4nJ3eI4oj9mQ52M 4PwKgo/BztXck2xC4a2WyA34XtIwZAAAAoC13U47yfUOSZJePNUAwWXuFOk3aOKwPM5PMvK
5/Yd+ION2Ur1v8BDewpDX+LHEYgKHo3Mlmcn2UyF+QJ+7xUCW7QCtk/4szrJzw74DlEl6mH 50zwRnMZZjgn+tsMAYPwhsT3Mx3h5QzvVGFyFEqsiK7j4vAotD+LVQeBN5TwWbUBx4lnoGs
6T8PT/f/av7PpECBD/YD3NoDlB9OWm/Q4sHcxfBEKfTGD7s2Onn71HgrdEOPqd4Sj/IQigR 63iAfYVDakO/gNvVBDDGOqv5kdCc4cgn5HacjHQLKOAx6KzHe7JFn7uCywMdVVQjlpI6LHb
7drfjtXEMlD32k9n3dd2eS9x7AHWYaGFEMkOcY= 7mHkaKiVX/C2oiRnsoe17HZ8Fxyt3vd1qNM8BE=
8-----END OPENSSH PRIVATE KEY----- 8-----END OPENSSH PRIVATE KEY-----