diff options
Diffstat (limited to 'tests/jwk.scm')
-rw-r--r-- | tests/jwk.scm | 58 |
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>))) |