Updated JWT library, add supports for claim exp, iat, nbf, iss, aud .
This commit is contained in:
80
library/security/jwt/src/jws.e
Normal file
80
library/security/jwt/src/jws.e
Normal file
@@ -0,0 +1,80 @@
|
||||
note
|
||||
description: "Summary description for {JWS}."
|
||||
author: ""
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
class
|
||||
JWS
|
||||
|
||||
inherit
|
||||
JWT
|
||||
|
||||
JWT_UTILITIES
|
||||
undefine
|
||||
default_create
|
||||
end
|
||||
|
||||
create
|
||||
default_create,
|
||||
make_with_claims,
|
||||
make_with_json_payload
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make_with_claims (tb: STRING_TABLE [READABLE_STRING_GENERAL])
|
||||
do
|
||||
default_create
|
||||
across
|
||||
tb as ic
|
||||
loop
|
||||
claimset.set_claim (ic.key, ic.item)
|
||||
end
|
||||
end
|
||||
|
||||
make_with_json_payload (a_json: READABLE_STRING_8)
|
||||
do
|
||||
default_create
|
||||
claimset.import_json (a_json)
|
||||
end
|
||||
|
||||
feature -- Access
|
||||
|
||||
algorithm: READABLE_STRING_8
|
||||
do
|
||||
Result := header.algorithm
|
||||
end
|
||||
|
||||
feature -- Conversion
|
||||
|
||||
encoded_string (a_secret: READABLE_STRING_8): STRING
|
||||
local
|
||||
alg, sign: READABLE_STRING_8
|
||||
l_enc_payload, l_enc_header: READABLE_STRING_8
|
||||
do
|
||||
reset_error
|
||||
alg := header.algorithm
|
||||
if not is_supporting_signature_algorithm (alg) then
|
||||
report_unsupported_alg_error (alg)
|
||||
alg := alg_hs256 -- Default ...
|
||||
end
|
||||
l_enc_header := base64url_encode (header.string)
|
||||
l_enc_payload := base64url_encode (claimset.string)
|
||||
sign := signature (l_enc_header, l_enc_payload, a_secret, alg)
|
||||
|
||||
create Result.make (l_enc_header.count + 1 + l_enc_payload.count + 1 + sign.count)
|
||||
Result.append (l_enc_header)
|
||||
Result.append_character ('.')
|
||||
Result.append (l_enc_payload)
|
||||
Result.append_character ('.')
|
||||
Result.append (sign)
|
||||
end
|
||||
|
||||
feature -- Element change
|
||||
|
||||
set_algorithm (alg: detachable READABLE_STRING_8)
|
||||
do
|
||||
header.set_algorithm (alg)
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user