13
#include "eet_test_common.h"
19
static char _key_pem[PATH_MAX] = "";
20
static char _cert_pem[PATH_MAX] = "";
21
static char _key_enc[PATH_MAX] = "";
22
static char _key_enc_pem[PATH_MAX] = "";
23
static char _key_enc_none_pem[PATH_MAX] = "";
28
EINA_UNUSED int rwflags,
31
memset(pass, 0, size);
33
if ((int)strlen("password") > size)
36
snprintf(pass, size, "%s", "password");
41
badpass_get(char *pass,
43
EINA_UNUSED int rwflags,
46
memset(pass, 0, size);
48
if ((int)strlen("bad password") > size)
51
snprintf(pass, size, "%s", "bad password");
55
EFL_START_TEST(eet_test_identity_simple)
57
const char *buffer = "Here is a string of data to save !";
65
Eina_Tmpstr *tmpf = NULL;
67
fail_if(-1 == (fd = eina_file_mkstemp("eet_suite_testXXXXXX", &tmpf)));
69
fail_if(!(noread = fopen("/dev/null", "wb")));
72
ef = eet_open(tmpf, EET_FILE_MODE_WRITE);
75
fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 0));
77
k = eet_identity_open(_cert_pem, _key_pem, NULL);
80
fail_if(eet_identity_set(ef, k) != EET_ERROR_NONE);
81
eet_identity_print(k, noread);
86
ef = eet_open(tmpf, EET_FILE_MODE_READ);
90
fail_if(!eet_identity_verify(ef, _cert_pem));
92
test = eet_read(ef, "keys/tests", &size);
94
fail_if(size != (int)strlen(buffer) + 1);
96
fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
98
tmp = eet_identity_x509(ef, &size);
101
eet_identity_certificate_print(tmp, size, noread);
110
fd = open(tmpf, O_WRONLY | O_BINARY);
113
fail_if(lseek(fd, 200, SEEK_SET) != 200);
114
fail_if(write(fd, "42", 2) != 2);
115
fail_if(lseek(fd, 50, SEEK_SET) != 50);
116
fail_if(write(fd, "42", 2) != 2);
117
fail_if(lseek(fd, 88, SEEK_SET) != 88);
118
fail_if(write(fd, "42", 2) != 2);
123
ef = eet_open(tmpf, EET_FILE_MODE_READ);
126
fail_if(unlink(tmpf) != 0);
128
eina_tmpstr_del(tmpf);
132
EFL_START_TEST(eet_test_identity_open_simple)
136
k = eet_identity_open(_cert_pem, _key_pem, NULL);
140
eet_identity_close(k);
145
EFL_START_TEST(eet_test_identity_open_pkcs8)
149
k = eet_identity_open(_cert_pem, _key_enc_none_pem, NULL);
153
eet_identity_close(k);
159
pw_cb(char *buf EINA_UNUSED, int size EINA_UNUSED, int rwflag EINA_UNUSED, void *data EINA_UNUSED)
164
EFL_START_TEST(eet_test_identity_open_pkcs8_enc)
168
k = eet_identity_open(_cert_pem, _key_enc_pem, pw_cb);
172
eet_identity_close(k);
174
k = eet_identity_open(_cert_pem, _key_enc_pem, &badpass_get);
178
eet_identity_close(k);
180
k = eet_identity_open(_cert_pem, _key_enc_pem, &pass_get);
184
eet_identity_close(k);
189
static const char *_cert_dir_find(const char *_argv0)
191
static char base[PATH_MAX] = "";
195
eina_strlcpy(base, TESTS_SRC_DIR, sizeof(base));
196
eina_str_join(path, sizeof(path), '/', base, "key.pem");
197
if (stat(path, &st) == 0)
202
snprintf(base, sizeof(base), "%s/%s", TESTS_WD, TESTS_SRC_DIR);
203
eina_str_join(path, sizeof(path), '/', base, "key.pem");
204
if (stat(path, &st) == 0)
208
eina_strlcpy(base, _argv0, sizeof(base));
211
char *p = strrchr(base, '/');
218
eina_str_join(path, sizeof(path), '/', base, "key.pem");
220
while (stat(path, &st) != 0);
225
void eet_test_identity(TCase *tc)
229
base = _cert_dir_find(argv0);
230
eina_str_join(_key_pem, sizeof(_key_pem), '/', base, "key.pem");
231
eina_str_join(_cert_pem, sizeof(_cert_pem), '/', base,"cert.pem");
232
eina_str_join(_key_enc, sizeof(_key_enc), '/', base, "key.enc");
233
eina_str_join(_key_enc_pem, sizeof(_key_enc_pem), '/', base, "key_enc.pem");
234
eina_str_join(_key_enc_none_pem, sizeof(_key_enc_none_pem), '/',
235
base, "key_enc_none.pem");
237
tcase_add_test(tc, eet_test_identity_simple);
238
tcase_add_test(tc, eet_test_identity_open_simple);
239
tcase_add_test(tc, eet_test_identity_open_pkcs8);
240
tcase_add_test(tc, eet_test_identity_open_pkcs8_enc);