summaryrefslogtreecommitdiff
path: root/src/scm/webid-oidc/oidc-id-token.scm
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2021-09-23 12:21:03 +0200
committerVivien Kraus <vivien@planete-kraus.eu>2021-10-01 12:32:20 +0200
commit98de254d3c77feadad464f77f51f9cad5993a9f8 (patch)
tree95d959724e449588e1707075263b9d25719f10d2 /src/scm/webid-oidc/oidc-id-token.scm
parentca67854900dbf0f7200e75c73f32900a8fe0b63e (diff)
Define an XML-loadable meta-class
Diffstat (limited to 'src/scm/webid-oidc/oidc-id-token.scm')
-rw-r--r--src/scm/webid-oidc/oidc-id-token.scm14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/scm/webid-oidc/oidc-id-token.scm b/src/scm/webid-oidc/oidc-id-token.scm
index 19e22d7..17a3299 100644
--- a/src/scm/webid-oidc/oidc-id-token.scm
+++ b/src/scm/webid-oidc/oidc-id-token.scm
@@ -20,6 +20,7 @@
#:use-module (webid-oidc jwk)
#:use-module (webid-oidc jti)
#:use-module (webid-oidc web-i18n)
+ #:use-module (webid-oidc serializable)
#:use-module ((webid-oidc stubs) #:prefix stubs:)
#:use-module ((webid-oidc parameters) #:prefix p:)
#:use-module (web uri)
@@ -55,9 +56,18 @@
invalid-id-token?)
(define-class <id-token> (<single-use-token> <oidc-token>)
- (webid #:init-keyword #:webid #:accessor webid)
+ (webid #:init-keyword #:webid #:accessor webid #:->sxml uri->string)
(sub #:init-keyword #:sub #:accessor sub)
- (aud #:init-keyword #:aud #:accessor aud))
+ (aud #:init-keyword #:aud #:accessor aud #:->sxml uri->string)
+ #:metaclass <plugin-class>
+ #:module-name '(webid-oidc oidc-id-token))
+
+(define-method (equal? (x <id-token>) (y <id-token>))
+ (and (equal? (alg x) (alg y))
+ (equal? (iat x) (iat y))
+ (equal? ((@ (webid-oidc jws) exp) x) ((@ (webid-oidc jws) exp) y))
+ (equal? (nonce x) (nonce y))
+ (equal? (iss x) (iss y))))
(define-method (initialize (token <id-token>) initargs)
(with-exception-handler