diff --git a/source/JSONWebToken-Core.package/JWAHMACSHA256.class/class/checkSignature.withKey..st b/source/JSONWebToken-Core.package/JWAHMACSHA256.class/class/checkSignature.withKey..st new file mode 100644 index 0000000..c5f1dbe --- /dev/null +++ b/source/JSONWebToken-Core.package/JWAHMACSHA256.class/class/checkSignature.withKey..st @@ -0,0 +1,10 @@ +sign +checkSignature: parts withKey: key + (self + signMessage: + ($. + join: + {parts first. + parts second}) withKey: key) + = parts third base64Padded base64Decoded asByteArray + ifFalse: [ Error signal: 'signature does not match' ] \ No newline at end of file diff --git a/source/JSONWebToken-Core.package/JWANone.class/class/checkSignature.withKey..st b/source/JSONWebToken-Core.package/JWANone.class/class/checkSignature.withKey..st new file mode 100644 index 0000000..1b3e167 --- /dev/null +++ b/source/JSONWebToken-Core.package/JWANone.class/class/checkSignature.withKey..st @@ -0,0 +1,3 @@ +sign +checkSignature: parts withKey: key + \ No newline at end of file diff --git a/source/JSONWebToken-Core.package/JWARSASHA256.class/class/checkSignature.withKey..st b/source/JSONWebToken-Core.package/JWARSASHA256.class/class/checkSignature.withKey..st new file mode 100644 index 0000000..92a361c --- /dev/null +++ b/source/JSONWebToken-Core.package/JWARSASHA256.class/class/checkSignature.withKey..st @@ -0,0 +1,15 @@ +sign +checkSignature: parts withKey: key + | jwtHeaderAndPayload signatureByteArray rsa pubKey | + jwtHeaderAndPayload := $. + join: + {parts first. + parts second}. + signatureByteArray := parts third base64Padded base64Decoded + asByteArray. + rsa := LcRSA fromRsaPublicKeyPemString: key. + pubKey := LcEvpPublicKey setRSA: rsa. + + (pubKey + digestVerifyMessage: jwtHeaderAndPayload + with: signatureByteArray) ifFalse: [ Error signal: 'signature does not match' ] \ No newline at end of file diff --git a/source/JSONWebToken-Core.package/JWARSASHA256.class/class/signMessage.withKey..st b/source/JSONWebToken-Core.package/JWARSASHA256.class/class/signMessage.withKey..st deleted file mode 100644 index c48d300..0000000 --- a/source/JSONWebToken-Core.package/JWARSASHA256.class/class/signMessage.withKey..st +++ /dev/null @@ -1,3 +0,0 @@ -sign -signMessage: aString withKey: anObject - self notYetImplemented \ No newline at end of file diff --git a/source/JSONWebToken-Core.package/JsonWebSignature.class/instance/checkSignature..st b/source/JSONWebToken-Core.package/JsonWebSignature.class/instance/checkSignature..st index 4219a18..d74e82f 100644 --- a/source/JSONWebToken-Core.package/JsonWebSignature.class/instance/checkSignature..st +++ b/source/JSONWebToken-Core.package/JsonWebSignature.class/instance/checkSignature..st @@ -1,4 +1,5 @@ signature checkSignature: parts - ((self signatureFor: ($. join: { parts first . parts second })) = parts third base64Padded base64Decoded asByteArray) ifFalse: [ - Error signal: 'signature does not match' ]. + + + self protectedHeader algorithm checkSignature: parts withKey: key