summaryrefslogtreecommitdiff
path: root/src/scm/webid-oidc/stubs.scm
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2020-01-01 00:00:00 +0100
committerVivien Kraus <vivien@planete-kraus.eu>2021-06-19 15:44:24 +0200
commit6202ffc3fa4ffd0ab4f62535a0526792571f76e7 (patch)
tree3a08b46f05339658544411bbd92ef93642c364f0 /src/scm/webid-oidc/stubs.scm
parentb421139970323462df02c52bccfc960558d4c10f (diff)
Add a signature and verification function for JWS
Diffstat (limited to 'src/scm/webid-oidc/stubs.scm')
-rw-r--r--src/scm/webid-oidc/stubs.scm21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/scm/webid-oidc/stubs.scm b/src/scm/webid-oidc/stubs.scm
index 58fe356..3f16888 100644
--- a/src/scm/webid-oidc/stubs.scm
+++ b/src/scm/webid-oidc/stubs.scm
@@ -38,6 +38,23 @@
(lambda error
(raise-unsupported-alg (cadr error)))))
+(define (fix-sign alg key payload)
+ (catch 'unsupported-alg
+ (lambda ()
+ (sign alg key payload))
+ (lambda error
+ (raise-unsupported-alg (cadr error)))))
+
+(define (fix-verify alg key payload signature)
+ (catch 'unsupported-alg
+ (lambda ()
+ (let ((ok
+ (verify alg key payload signature)))
+ (unless ok
+ (raise-invalid-signature key payload signature))))
+ (lambda error
+ (raise-unsupported-alg (cadr error)))))
+
(export
base64-encode
(fix-base64-decode . base64-decode)
@@ -47,7 +64,9 @@
(fix-kty . kty)
strip-key
(fix-hash . hash)
- jkt)
+ jkt
+ (fix-sign . sign)
+ (fix-verify . verify))
;; json reader from guile-json will not behave consistently with
;; SRFI-180 with objects: keys will be mapped to strings, not