]> Cypherpunks repositories - keks.git/commitdiff
Monocypher-based cyac ed25519-blake2b cer-verify
authorSergey Matveev <stargrave@stargrave.org>
Wed, 4 Dec 2024 12:26:23 +0000 (15:26 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Wed, 4 Dec 2024 12:26:23 +0000 (15:26 +0300)
cyac/cmd/cer-verify/cer-verify.c
cyac/cmd/cer-verify/cer-verify.do
cyac/cmd/cer-verify/clean
cyac/cmd/cer-verify/conf/.gitignore
cyac/cmd/cer-verify/conf/monocypher.rc.do [new file with mode: 0644]
cyac/cmd/cer-verify/verifier-ed25519-blake2b.c [new file with mode: 0644]
cyac/cmd/cer-verify/verifier-ed25519-blake2b.h [new file with mode: 0644]
cyac/cmd/cer-verify/verifier-ed25519-blake2b.o.do [new file with mode: 0644]

index e31e3dfcbc3420ed943ec28f47d4086223be91aa33bdb9935036181cbef942c3..22bf26e7203d8f5c529509ea8ab110c1cdbd5cf7ee57e97e62c3891c56a28aad 100644 (file)
@@ -27,6 +27,7 @@
 #include "../lib/mmap.h"
 #include "../lib/uuid.h"
 
+#include "verifier-ed25519-blake2b.h"
 #include "verifier-gost3410.h"
 
 int
@@ -72,6 +73,7 @@ main(int argc, char **argv)
     }
 
     struct YACCerSigVerifier sigVerifiers[] = {
+        {.algo = "ed25519-blake2b", .func = ed25519blake2bSignatureVerifier},
         {.algo = "gost3410-256A", .func = gost3410SignatureVerifier},
         {.algo = "gost3410-512C", .func = gost3410SignatureVerifier},
         {.algo = NULL},
index ad7515962a791992224a0a5b75ef889396caddad8896a2dfd589b5beaa81ca3e..8f431f1ce144eee141b8857903a3c519bb21ee7dd1cdab2ce20548706a6759ac 100644 (file)
@@ -1,13 +1,14 @@
-deps="../lib/mmap.o ../lib/uuid.o verifier-gost3410.o"
-redo-ifchange $1.c $deps conf/gcl3.rc \
+deps="../lib/mmap.o ../lib/uuid.o verifier-ed25519-blake2b.o verifier-gost3410.o"
+redo-ifchange $1.c $deps conf/gcl3.rc conf/monocypher.rc \
     ../../conf/cc ../../conf/cflags ../../conf/ldflags ../../conf/prefix
 read CC <../../conf/cc
 CFLAGS=$(cat ../../conf/cflags)
 LDFLAGS=$(cat ../../conf/ldflags)
 . conf/gcl3.rc
+. conf/monocypher.rc
 read PREFIX <../../conf/prefix
 $CC \
     $CFLAGS -I$PREFIX/include \
     -o $3 $2.c $deps \
-    $LDFLAGS $GCL3_LDFLAGS -L$PREFIX/lib \
-    -lyac -lyacpki $GCL3_LDLIBS
+    $LDFLAGS $GCL3_LDFLAGS $MONOCYPHER_LDFLAGS -L$PREFIX/lib \
+    -lyac -lyacpki $GCL3_LDLIBS $MONOCYPHER_LDLIBS -static
index cdb7ffb6bd9f0857758f7158b2e40841a199c19302885656eb44f575ec7eb50e..0a413ac7ca365ebb8667315d9711e50c8474ea165308b042d85d79bba38cf575 100755 (executable)
@@ -1,3 +1,3 @@
 #!/bin/sh -e
 
-exec rm -f cer-verify compile_flags.txt conf/gcl3.rc
+exec rm -f cer-verify compile_flags.txt conf/gcl3.rc conf/monocypher.rc *.o
index 0f57c2ccddb8b3d2ae5ebac0d06f2f4d8cbb960f87d8d6f18ec8fbe27f1af60b..6d4233fa473182eb65682e3ca567d3f457c0322b4e1d9df4883309997659506a 100644 (file)
@@ -1 +1,2 @@
 /gcl3.rc
+/monocypher.rc
diff --git a/cyac/cmd/cer-verify/conf/monocypher.rc.do b/cyac/cmd/cer-verify/conf/monocypher.rc.do
new file mode 100644 (file)
index 0000000..a848036
--- /dev/null
@@ -0,0 +1,12 @@
+PKGCONF=${PKGCONF:-`command -v pkgconf || command -v pkg-config`}
+cat <<EOF
+{
+    read MONOCYPHER_CFLAGS
+    read MONOCYPHER_LDFLAGS
+    read MONOCYPHER_LDLIBS
+} <<EOF
+EOF
+$PKGCONF --cflags monocypher
+$PKGCONF --libs-only-L monocypher
+$PKGCONF --libs-only-l monocypher
+echo EOF
diff --git a/cyac/cmd/cer-verify/verifier-ed25519-blake2b.c b/cyac/cmd/cer-verify/verifier-ed25519-blake2b.c
new file mode 100644 (file)
index 0000000..0ecadd9
--- /dev/null
@@ -0,0 +1,31 @@
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#include <monocypher.h>
+
+#include "verifier-ed25519-blake2b.h"
+
+bool
+ed25519blake2bSignatureVerifier(
+    char **failReason,
+    const unsigned char *ai,
+    const size_t aiLen,
+    const unsigned char *sig,
+    const size_t sigLen,
+    const unsigned char *pub,
+    const size_t pubLen,
+    const unsigned char *data,
+    const size_t dataLen)
+{
+    if (pubLen != 32) {
+        (*failReason) = "invalid pubkey len";
+        return false;
+    }
+    if (sigLen != 64) {
+        (*failReason) = "invalid signature len";
+        return false;
+    }
+    return crypto_eddsa_check(sig, pub, data, dataLen) == 0;
+}
diff --git a/cyac/cmd/cer-verify/verifier-ed25519-blake2b.h b/cyac/cmd/cer-verify/verifier-ed25519-blake2b.h
new file mode 100644 (file)
index 0000000..4050260
--- /dev/null
@@ -0,0 +1,19 @@
+#ifndef YAC_VERIFIER_ED25519_BLAKE2B_H
+#define YAC_VERIFIER_ED25519_BLAKE2B_H
+
+#include <stdbool.h>
+#include <stdlib.h>
+
+bool
+ed25519blake2bSignatureVerifier(
+    char **failReason,
+    const unsigned char *ai,
+    const size_t aiLen,
+    const unsigned char *sig,
+    const size_t sigLen,
+    const unsigned char *pub,
+    const size_t pubLen,
+    const unsigned char *data,
+    const size_t dataLen);
+
+#endif // YAC_VERIFIER_ED25519_BLAKE2B_H
diff --git a/cyac/cmd/cer-verify/verifier-ed25519-blake2b.o.do b/cyac/cmd/cer-verify/verifier-ed25519-blake2b.o.do
new file mode 100644 (file)
index 0000000..59c0009
--- /dev/null
@@ -0,0 +1,5 @@
+redo-ifchange ${1%.o}.c conf/monocypher.rc ../../conf/cc ../../conf/cflags
+read CC <../../conf/cc
+CFLAGS=$(cat ../../conf/cflags)
+. conf/monocypher.rc
+$CC $CFLAGS $MONOCYPHER_CFLAGS -c -o $3 ${1%.o}.c