summaryrefslogtreecommitdiff
path: root/tests/jwk.scm
diff options
context:
space:
mode:
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>)))