Skip to content

Commit

Permalink
Added padding for base64 in order to use strict base64 decoding of Zn…
Browse files Browse the repository at this point in the history
…. Added explicity conversion between byte array and string. This make it work in pharo7
  • Loading branch information
noha committed Jul 25, 2018
1 parent 4a4d20e commit 4b9364c
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
reading
materialize: aString key: aKeyString checkSignature: checkSignature
| parts header jws |
parts := $. split: aString.
header := JWSHeader fromJson: (parts at: 1) base64Decoded.
parts := $. split: aString.
header := JWSHeader fromJson: (parts at: 1) base64Padded base64Decoded asString.
jws := JsonWebSignature new
key: aKeyString;
setProtectedHeader: header.
checkSignature ifTrue: [
jws checkSignature: parts ].
^ jws payload: (JWTClaimsSet fromJson: parts second base64Decoded)
^ jws payload: (JWTClaimsSet fromJson: parts second base64Padded base64Decoded asString)
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
as yet unclassified
writeHeader: aHeader
stream nextPutAll: aHeader asJson base64Encoded
stream nextPutAll: aHeader asJson asByteArray base64Encoded
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
writing
writePayload: anObject
stream nextPutAll: anObject asJson base64Encoded
stream nextPutAll: anObject asJson asByteArray base64Encoded
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
signature
checkSignature: parts
((self signatureFor: ($. join: { parts first . parts second })) = parts third base64Decoded asByteArray) ifFalse: [
((self signatureFor: ($. join: { parts first . parts second })) = parts third base64Padded base64Decoded) ifFalse: [
Error signal: 'signature does not match' ].
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
*JSONWebToken-Core
base64Padded
| paddedString |
paddedString := ((self size \\ 4) = 0)
ifTrue: [ self ]
ifFalse: [
String streamContents: [ :stream |
stream nextPutAll: self.
(4 - (self size \\ 4)) timesRepeat: [
stream nextPut: $= ] ] ].
^ paddedString
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"name" : "String"
}

0 comments on commit 4b9364c

Please sign in to comment.