summaryrefslogtreecommitdiff
path: root/src/scm/webid-oidc/stubs.scm
diff options
context:
space:
mode:
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