commit 6b9e7d0adaa5dffdea06a5c8c35aa8f6209e4b84
parent 264498e48dc93916697a4b570f6c19fb0e221ec7
Author: lash <dev@holbrook.no>
Date: Fri, 4 Apr 2025 21:10:38 +0100
WIP writing proper cert verify tests
Diffstat:
6 files changed, 75 insertions(+), 23 deletions(-)
diff --git a/src/cli/main.c b/src/cli/main.c
@@ -124,19 +124,23 @@ int main(int argc, char **argv) {
lq_ui_free();
return 1;
}
-//
-// res = lq_msg_new("foo", 4);
-// if (res == NULL) {
-// lq_ui_free();
-// return 1;
-// }
-// r = lq_certificate_respond(cert, res, pk_bob);
-// if (r != ERR_OK) {
-// lq_ui_free();
-// return 1;
-// }
-
-// r = lq_certificate_verify(cert, pubk_alice, NULL);
+
+ res = lq_msg_new("foo", 4);
+ if (res == NULL) {
+ lq_ui_free();
+ return 1;
+ }
+ r = lq_certificate_respond(cert, res, pk_bob);
+ if (r != ERR_OK) {
+ lq_ui_free();
+ return 1;
+ }
+
+ r = lq_certificate_verify(cert, pubk_alice, NULL);
+ if (r != ERR_OK) {
+ lq_ui_free();
+ return 1;
+ }
lq_certificate_free(cert);
diff --git a/src/lq/base.h b/src/lq/base.h
@@ -1,6 +1,10 @@
#ifndef LQ_BASE_H_
#define LQ_BASE_H_
+#ifndef LQ_BLOCKSIZE
+#define LQ_BLOCKSIZE 4096
+#endif
+
int lq_init();
void lq_finish();
diff --git a/src/lq/cert.c b/src/lq/cert.c
@@ -80,7 +80,7 @@ void lq_certificate_set_domain(LQCert *cert, const char *domain) {
static int state_digest(LQCert *cert, char *out, int final) {
int r;
int c;
- char data[1024];
+ char data[LQ_BLOCKSIZE];
char *p;
char *sigdata;
size_t siglen;
diff --git a/src/lq/crypto.h b/src/lq/crypto.h
@@ -3,6 +3,8 @@
#include <stddef.h>
+#include "base.h"
+
#ifndef LQ_DIGEST_LEN
#define LQ_DIGEST_LEN 64
#endif
@@ -36,7 +38,7 @@
#endif
#ifndef LQ_CRYPTO_BLOCKSIZE
-#define LQ_CRYPTO_BLOCKSIZE 4096
+#define LQ_CRYPTO_BLOCKSIZE LQ_BLOCKSIZE
#endif
#ifndef LQ_POINT_LEN
diff --git a/src/test/Makefile b/src/test/Makefile
@@ -7,8 +7,8 @@ LIBS := ../asn1/defs_asn1_tab.o `pkg-config --libs libtasn1 libgcrypt` -L.. -L..
LDFLAGS := -lcheck $(LIBS)
COMMONOBJS = ../mem/std.o ../lq/config.o ../lq/err.o ../lq/base.o ../debug.o
-all: build all-tests
-#all: build one-test
+#all: build all-tests
+all: build one-test
all-tests:
cK_FORK=no LD_LIBRARY_PATH=`realpath ../aux/lib` ./test_test_bin
@@ -21,7 +21,7 @@ all-tests:
CK_FORK=no LD_LIBRARY_PATH=`realpath ../aux/lib` ./test_store_bin
one-test: build
- CK_FORK=no LD_LIBRARY_PATH=`realpath ../aux/lib` ./test_crypto_bin
+ CK_FORK=no LD_LIBRARY_PATH=`realpath ../aux/lib` ./test_cert_bin
test: all
diff --git a/src/test/test_cert.c b/src/test/test_cert.c
@@ -30,6 +30,42 @@ static const char passphrase[32] = {
};
+START_TEST(check_cert_sig_req) {
+ int r;
+ size_t c;
+ LQCert *cert;
+ LQMsg *req;
+ LQPrivKey *pk;
+ LQPubKey *pubk;
+
+ pk = lq_privatekey_new(passphrase, LQ_PRIVKEY_LEN);
+ ck_assert_ptr_nonnull(pk);
+
+ pubk = lq_publickey_from_privatekey(pk);
+ ck_assert_ptr_nonnull(pubk);
+
+ req = lq_msg_new("foo", 4);
+ ck_assert_ptr_nonnull(req);
+
+ cert = lq_certificate_new(NULL);
+ ck_assert_ptr_nonnull(cert);
+ r = lq_certificate_request(cert, req, pk);
+ ck_assert_int_eq(r, 0);
+
+ //res = lq_msg_new("barbaz", 7);
+ //ck_assert_ptr_nonnull(res);
+ //r = lq_certificate_respond(cert, res, pk_bob);
+ //ck_assert_int_eq(r, 0);
+
+ r = lq_certificate_verify(cert, pubk, NULL);
+ ck_assert_int_eq(r, 0);
+
+ lq_certificate_free(cert);
+ lq_publickey_free(pubk);
+ lq_privatekey_free(pk);
+}
+END_TEST
+
START_TEST(check_cert_symmetric_nomsg) {
int r;
size_t c;
@@ -78,6 +114,7 @@ START_TEST(check_cert_symmetric_req_sig) {
char buf[4096];
pk = lq_privatekey_new(passphrase, 32);
+
req = lq_msg_new(data, strlen(data) + 1);
cert = lq_certificate_new(NULL);
lq_privatekey_unlock(pk, passphrase, 32);
@@ -169,12 +206,17 @@ Suite * common_suite(void) {
TCase *tc;
s = suite_create("cert");
+ tc = tcase_create("sign");
+
+ tcase_add_test(tc, check_cert_sig_req);
+// tcase_add_test(tc, check_cert_sig_res);
+
tc = tcase_create("serialize");
-// tcase_add_test(tc, check_cert_symmetric_nomsg);
-// tcase_add_test(tc, check_cert_symmetric_req_nosig);
- tcase_add_test(tc, check_cert_symmetric_req_sig);
-// tcase_add_test(tc, check_cert_symmetric_rsp_onesig);
-// tcase_add_test(tc, check_cert_symmetric_rsp_bothsig);
+// tcase_add_test(tc, check_cert_symmetric_ser_nomsg);
+// tcase_add_test(tc, check_cert_symmetric_ser_req_nosig);
+// tcase_add_test(tc, check_cert_symmetric_ser_req_sig);
+// tcase_add_test(tc, check_cert_symmetric_ser_rsp_onesig);
+// tcase_add_test(tc, check_cert_symmetric_ser_rsp_bothsig);
suite_add_tcase(s, tc);
return s;