1 /*	$NetBSD: ssl_init.c,v 1.4 2020/05/25 20:47:36 christos Exp $	*/
2 
3 #include "config.h"
4 
5 #include "ntp.h"
6 
7 #ifdef OPENSSL
8 # include "openssl/err.h"
9 # include "openssl/rand.h"
10 # include "openssl/evp.h"
11 
12 #define CMAC "AES128CMAC"
13 #endif
14 
15 #include "unity.h"
16 
17 
18 static const size_t TEST_MD5_DIGEST_LENGTH = 16;
19 static const size_t TEST_SHA1_DIGEST_LENGTH = 20;
20 static const size_t TEST_CMAC_DIGEST_LENGTH = 16;
21 
22 void test_MD5KeyTypeWithoutDigestLength(void);
23 void test_MD5KeyTypeWithDigestLength(void);
24 void test_SHA1KeyTypeWithDigestLength(void);
25 void test_CMACKeyTypeWithDigestLength(void);
26 void test_MD5KeyName(void);
27 void test_SHA1KeyName(void);
28 void test_CMACKeyName(void);
29 
30 
31 // keytype_from_text()
32 void
test_MD5KeyTypeWithoutDigestLength(void)33 test_MD5KeyTypeWithoutDigestLength(void) {
34 	TEST_ASSERT_EQUAL(KEY_TYPE_MD5, keytype_from_text("MD5", NULL));
35 }
36 
37 void
test_MD5KeyTypeWithDigestLength(void)38 test_MD5KeyTypeWithDigestLength(void) {
39 	size_t digestLength;
40 	size_t expected = TEST_MD5_DIGEST_LENGTH;
41 
42 	TEST_ASSERT_EQUAL(KEY_TYPE_MD5, keytype_from_text("MD5", &digestLength));
43 	TEST_ASSERT_EQUAL(expected, digestLength);
44 }
45 
46 
47 void
test_SHA1KeyTypeWithDigestLength(void)48 test_SHA1KeyTypeWithDigestLength(void) {
49 #ifdef OPENSSL
50 	size_t digestLength;
51 	size_t expected = TEST_SHA1_DIGEST_LENGTH;
52 
53 	TEST_ASSERT_EQUAL(NID_sha1, keytype_from_text("SHA1", &digestLength));
54 	TEST_ASSERT_EQUAL(expected, digestLength);
55 	/* OPENSSL */
56 #else
57 	TEST_IGNORE_MESSAGE("Skipping because OPENSSL isn't defined");
58 #endif
59 }
60 
61 
62 void
test_CMACKeyTypeWithDigestLength(void)63 test_CMACKeyTypeWithDigestLength(void) {
64 #if defined(OPENSSL) && defined(ENABLE_CMAC)
65 	size_t digestLength;
66 	size_t expected = TEST_CMAC_DIGEST_LENGTH;
67 
68 	TEST_ASSERT_EQUAL(NID_cmac, keytype_from_text(CMAC, &digestLength));
69 	TEST_ASSERT_EQUAL(expected, digestLength);
70 	/* OPENSSL */
71 #else
72 	TEST_IGNORE_MESSAGE("Skipping because OPENSSL/CMAC isn't defined");
73 #endif
74 }
75 
76 
77 // keytype_name()
78 void
test_MD5KeyName(void)79 test_MD5KeyName(void) {
80 	TEST_ASSERT_EQUAL_STRING("MD5", keytype_name(KEY_TYPE_MD5));
81 }
82 
83 
84 void
test_SHA1KeyName(void)85 test_SHA1KeyName(void) {
86 #ifdef OPENSSL
87 	TEST_ASSERT_EQUAL_STRING("SHA1", keytype_name(NID_sha1));
88 #else
89 	TEST_IGNORE_MESSAGE("Skipping because OPENSSL isn't defined");
90 #endif	/* OPENSSL */
91 }
92 
93 
94 void
test_CMACKeyName(void)95 test_CMACKeyName(void) {
96 #if defined(OPENSSL)  && defined(ENABLE_CMAC)
97 	TEST_ASSERT_EQUAL_STRING(CMAC, keytype_name(NID_cmac));
98 #else
99 	TEST_IGNORE_MESSAGE("Skipping because OPENSSL/CMAC isn't defined");
100 #endif	/* OPENSSL */
101 }
102 
103