Download test/test_crypto.lisp from Snapkitty/marlborg-worm: direct link, hf CLI and curl.
- Browser
- Download file 2.71 kB
-
https://huggingface.co/Snapkitty/marlborg-worm/resolve/main/test/test_crypto.lisp
- Command line
-
hf download hf://Snapkitty/marlborg-worm/test/test_crypto.lisp
-
curl -L -o test_crypto.lisp https://huggingface.co/Snapkitty/marlborg-worm/resolve/main/test/test_crypto.lisp
2.71 kB
| ;;; | |
| ;;; Copyright (c) 2026 BEL ESPRIT D ACCORD TRUST HOLDINGS INC | |
| ;;; All rights reserved. | |
| (defpackage :marlborg.worm.test.crypto | |
| (:use :cl :marlborg.worm.primitives) | |
| (:export :run-crypto-tests)) | |
| (in-package :marlborg.worm.test.crypto) | |
| (defun run-crypto-tests () | |
| (format t "~%=== Crypto Tests ===~%") | |
| (test-sha3-deterministic) | |
| (test-sha3-different-inputs) | |
| (test-ed25519-sign-verify) | |
| (test-ecies-roundtrip) | |
| (test-entropy-bound) | |
| (format t "All crypto tests passed.~%")) | |
| (defun test-sha3-deterministic () | |
| (let* ((input (make-array 5 :element-type '(unsigned-byte 8) | |
| :initial-contents '(72 101 108 108 111))) | |
| (h1 (sha3-256 input)) | |
| (h2 (sha3-256 input))) | |
| (assert (equalp h1 h2) () | |
| "SHA3-256 must be deterministic") | |
| (assert (= 32 (length h1)) () | |
| "SHA3-256 output must be 32 bytes") | |
| (format t " sha3 deterministic: PASS~%"))) | |
| (defun test-sha3-different-inputs () | |
| (let* ((a (make-array 3 :element-type '(unsigned-byte 8) :initial-contents '(1 2 3))) | |
| (b (make-array 3 :element-type '(unsigned-byte 8) :initial-contents '(4 5 6))) | |
| (ha (sha3-256 a)) | |
| (hb (sha3-256 b))) | |
| (assert (not (equalp ha hb)) () | |
| "SHA3-256 different inputs must produce different outputs") | |
| (format t " sha3 collision avoidance: PASS~%"))) | |
| (defun test-ed25519-sign-verify () | |
| (multiple-value-bind (sk pk) (ed25519-keypair) | |
| (let* ((msg (make-array 10 :element-type '(unsigned-byte 8) | |
| :initial-contents '(0 1 2 3 4 5 6 7 8 9))) | |
| (sig (sign sk msg)) | |
| (valid (verify pk msg sig))) | |
| (assert valid () | |
| "Ed25519 signature must verify with correct key") | |
| (assert (= 64 (length sig)) () | |
| "Signature must be 64 bytes") | |
| (format t " ed25519 sign/verify: PASS~%")))) | |
| (defun test-ecies-roundtrip () | |
| (multiple-value-bind (sk pk) (ed25519-keypair) | |
| (let* ((plaintext (sha3-256 (make-array 1 :element-type '(unsigned-byte 8) | |
| :initial-contents '(42)))) | |
| (ciphertext (ecies-encrypt pk plaintext)) | |
| (decrypted (ecies-decrypt sk ciphertext))) | |
| (assert (equalp plaintext decrypted) () | |
| "ECIES roundtrip must recover plaintext") | |
| (format t " ecies roundtrip: PASS~%")))) | |
| (defun test-entropy-bound () | |
| (multiple-value-bind (ok entropy) (entropy-bound-p #'quantum-nonce :samples 1000) | |
| (declare (ignore ok)) | |
| (assert (>= entropy 0.0d0) () | |
| "Entropy must be non-negative") | |
| (format t " entropy bound (H=~,4f): PASS~%" entropy))) | |