mirror of
https://github.com/bjc/prosody.git
synced 2025-04-04 05:37:39 +03:00
38 lines
906 B
Text
38 lines
906 B
Text
local crypto = require "util.crypto"
|
|
local record jwtlib
|
|
enum algorithm
|
|
"HS256"
|
|
"HS384"
|
|
"HS512"
|
|
"ES256"
|
|
"ES512"
|
|
"RS256"
|
|
"RS384"
|
|
"RS512"
|
|
"PS256"
|
|
"PS384"
|
|
"PS512"
|
|
end
|
|
type payload = { string : any }
|
|
type signer_t = function (payload : payload) : string
|
|
type verifier_t = function (token : string) : payload
|
|
enum key_type
|
|
"rsaEncryption"
|
|
"id-ecPublicKey"
|
|
end
|
|
record algorithm_t
|
|
sign : signer_t
|
|
verify : verifier_t
|
|
load_key : function (key : string) : crypto.key
|
|
end
|
|
init : function (algorithm, private_key : string, public_key : string, table) : signer_t, verifier_t
|
|
new_signer : function (algorithm, string, table) : signer_t
|
|
new_verifier : function (algorithm, string, table) : verifier_t
|
|
_algorithms : {
|
|
algorithm : algorithm_t
|
|
}
|
|
-- Deprecated
|
|
sign : function (private_key : string, payload) : string
|
|
verify : function (string) : payload
|
|
end
|
|
return jwtlib
|