From f449f278dd3c70e479a035f50a9bb817a9b433ba Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 17:24:08 +0200 Subject: Adding upstream version 3.2.6. Signed-off-by: Daniel Baumann --- tests/libdnssec/test_keystore_pkcs8.c | 98 +++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 tests/libdnssec/test_keystore_pkcs8.c (limited to 'tests/libdnssec/test_keystore_pkcs8.c') diff --git a/tests/libdnssec/test_keystore_pkcs8.c b/tests/libdnssec/test_keystore_pkcs8.c new file mode 100644 index 0000000..26acbd4 --- /dev/null +++ b/tests/libdnssec/test_keystore_pkcs8.c @@ -0,0 +1,98 @@ +/* Copyright (C) 2022 CZ.NIC, z.s.p.o. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include +#include + +#include "error.h" +#include "key.h" +#include "keystore.h" + +int main(void) +{ + plan_lazy(); + + char *dir = test_tmpdir(); + if (!dir) { + return 1; + } + + // create context + + dnssec_keystore_t *store = NULL; + int r = dnssec_keystore_init_pkcs8(&store); + ok(r == DNSSEC_EOK, "dnssec_keystore_init_pkcs8()"); + + r = dnssec_keystore_init(store, dir); + ok(r == DNSSEC_EOK, "init"); + + r = dnssec_keystore_open(store, dir); + ok(r == DNSSEC_EOK, "open"); + + // writing new content + + char *id_A = NULL; + r = dnssec_keystore_generate(store, DNSSEC_KEY_ALGORITHM_RSA_SHA256, + 1024, NULL, &id_A); + ok(r == DNSSEC_EOK, "generate A"); + + char *id_B = NULL; + r = dnssec_keystore_generate(store, DNSSEC_KEY_ALGORITHM_RSA_SHA256, + 1024, NULL, &id_B); + ok(r == DNSSEC_EOK, "generate B"); + + // reading existing content + + dnssec_key_t *key = NULL; + dnssec_key_new(&key); + dnssec_key_set_algorithm(key, DNSSEC_KEY_ALGORITHM_RSA_SHA256); + r = dnssec_keystore_get_private(store, id_A, key); + ok(r == DNSSEC_EOK, "read A"); + dnssec_key_free(key); + + dnssec_key_new(&key); + dnssec_key_set_algorithm(key, DNSSEC_KEY_ALGORITHM_RSA_SHA256); + r = dnssec_keystore_get_private(store, id_B, key); + ok(r == DNSSEC_EOK, "read B"); + dnssec_key_free(key); + + // content removal + + r = dnssec_keystore_remove(store, id_A); + ok(r == DNSSEC_EOK, "remove A"); + + dnssec_key_new(&key); + dnssec_key_set_algorithm(key, DNSSEC_KEY_ALGORITHM_RSA_SHA256); + r = dnssec_keystore_get_private(store, id_A, key); + ok(r == DNSSEC_ENOENT, "read removed"); + dnssec_key_free(key); + + // cleanup + + free(id_A); + free(id_B); + + r = dnssec_keystore_close(store); + ok(r == DNSSEC_EOK, "close"); + + r = dnssec_keystore_deinit(store); + ok(r == DNSSEC_EOK, "deinit"); + + test_rm_rf(dir); + free(dir); + + return 0; +} -- cgit v1.2.3