summaryrefslogtreecommitdiff
path: root/tests/jwk.scm
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2022-01-29 12:55:08 +0100
committerVivien Kraus <vivien@planete-kraus.eu>2022-01-29 16:44:38 +0100
commitbf046889ea0a24d897175621347d4e571fb2609e (patch)
treee6a00231cbb8fda1b69660accf643a5a3aecef0a /tests/jwk.scm
parentfc8809fc034973898a2577f2c2b900526ec4596d (diff)
Generate an RSA key pair0.0.3
Diffstat (limited to 'tests/jwk.scm')
-rw-r--r--tests/jwk.scm58
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/jwk.scm b/tests/jwk.scm
new file mode 100644
index 0000000..6750456
--- /dev/null
+++ b/tests/jwk.scm
@@ -0,0 +1,58 @@
+(define-module (tests jwk)
+ #:use-module (disfluid jwk)
+ #:use-module (oop goops)
+ #:use-module (srfi srfi-64)
+ #:declarative? #t)
+
+(test-group "Generating a key: RSA"
+ (let* ((key (make <jwk> #:n-size 2048))
+ (public (jwk-public->json key))
+ (pair (jwk->json key)))
+ (test-group "Generating an RSA key: public and private parts"
+ (test-equal "RSA" (assq-ref pair 'kty))
+ (test-equal (jkt key) (assq-ref pair 'kid))
+ (test-assert (not (string-suffix? "=" (assq-ref pair 'kid))))
+ (test-assert (string? (assq-ref pair 'n)))
+ (test-assert (string? (assq-ref pair 'e)))
+ (test-assert (string? (assq-ref pair 'd)))
+ (test-assert (string? (assq-ref pair 'p)))
+ (test-assert (string? (assq-ref pair 'q)))
+ ;; Fixme: find a way to compute dp and dq
+ (test-assert (not (assq-ref pair 'dp)))
+ (test-assert (not (assq-ref pair 'dq)))
+ (test-assert (string? (assq-ref pair 'qi))))
+ (test-group "Generating an RSA key: public part"
+ (test-equal "RSA" (assq-ref public 'kty))
+ (test-assert (string? (assq-ref public 'kid)))
+ (test-assert (string? (assq-ref public 'n)))
+ (test-assert (string? (assq-ref public 'e)))
+ (test-assert (not (assq-ref public 'd)))
+ (test-assert (not (assq-ref public 'p)))
+ (test-assert (not (assq-ref public 'q)))
+ (test-assert (not (assq-ref public 'dp)))
+ (test-assert (not (assq-ref public 'dq)))
+ (test-assert (not (assq-ref public 'qi))))
+ (test-group "Generating a key: RSA with e=0"
+ (let ((key (jwk-public->json (make <jwk> #:n-size 2048 #:e 0))))
+ (test-equal "RSA" (assq-ref key 'kty))
+ (test-assert (not (equal? (assq-ref key 'e) "AA")))))
+ (test-group "Generating a key: RSA with e=1"
+ (let ((key (jwk-public->json (make <jwk> #:n-size 2048 #:e 1))))
+ (test-equal "RSA" (assq-ref key 'kty))
+ (test-assert (not (equal? (assq-ref key 'e) "AQ")))))
+ (test-group "Generating a key: RSA with e=3"
+ (let ((key (jwk-public->json (make <jwk> #:n-size 2048 #:e 3))))
+ (test-equal "RSA" (assq-ref key 'kty))
+ (test-equal "Aw" (assq-ref key 'e))))
+ (test-group "Generating a key: RSA with e=AQAB"
+ (let ((key (jwk-public->json (make <jwk> #:n-size 2048 #:e "AQAB"))))
+ (test-equal "RSA" (assq-ref key 'kty))
+ (test-equal "AQAB" (assq-ref key 'e))))))
+
+(test-group "Generating a key with incorrect parameters: RSA"
+ (test-error &invalid-key-parameters (make <jwk> #:n-size 8))
+ (test-error &invalid-key-parameters (make <jwk> #:n-size 16))
+ (test-error &invalid-key-parameters (make <jwk> #:n-size 64))
+ (test-error &invalid-key-parameters (make <jwk> #:n-size "garbage"))
+ (test-error &invalid-key-parameters (make <jwk> #:n-size 2048 #:e "garbage"))
+ (test-error &invalid-key-parameters (make <jwk>)))