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
18static const size_t TEST_MD5_DIGEST_LENGTH = 16;
19static const size_t TEST_SHA1_DIGEST_LENGTH = 20;
20static const size_t TEST_CMAC_DIGEST_LENGTH = 16;
21
22void test_MD5KeyTypeWithoutDigestLength(void);
23void test_MD5KeyTypeWithDigestLength(void);
24void test_SHA1KeyTypeWithDigestLength(void);
25void test_CMACKeyTypeWithDigestLength(void);
26void test_MD5KeyName(void);
27void test_SHA1KeyName(void);
28void test_CMACKeyName(void);
29
30
31// keytype_from_text()
32void
33test_MD5KeyTypeWithoutDigestLength(void) {
34	TEST_ASSERT_EQUAL(KEY_TYPE_MD5, keytype_from_text("MD5", NULL));
35}
36
37void
38test_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
47void
48test_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
62void
63test_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()
78void
79test_MD5KeyName(void) {
80	TEST_ASSERT_EQUAL_STRING("MD5", keytype_name(KEY_TYPE_MD5));
81}
82
83
84void
85test_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
94void
95test_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