Skip to content

Commit 4b9364c

Browse files
committed
Added padding for base64 in order to use strict base64 decoding of Zn. Added explicity conversion between byte array and string. This make it work in pharo7
1 parent 4a4d20e commit 4b9364c

6 files changed

Lines changed: 20 additions & 6 deletions

File tree

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
reading
22
materialize: aString key: aKeyString checkSignature: checkSignature
33
| parts header jws |
4-
parts := $. split: aString.
5-
header := JWSHeader fromJson: (parts at: 1) base64Decoded.
4+
parts := $. split: aString.
5+
header := JWSHeader fromJson: (parts at: 1) base64Padded base64Decoded asString.
66
jws := JsonWebSignature new
77
key: aKeyString;
88
setProtectedHeader: header.
99
checkSignature ifTrue: [
1010
jws checkSignature: parts ].
11-
^ jws payload: (JWTClaimsSet fromJson: parts second base64Decoded)
11+
^ jws payload: (JWTClaimsSet fromJson: parts second base64Padded base64Decoded asString)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
as yet unclassified
22
writeHeader: aHeader
3-
stream nextPutAll: aHeader asJson base64Encoded
3+
stream nextPutAll: aHeader asJson asByteArray base64Encoded
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
writing
22
writePayload: anObject
3-
stream nextPutAll: anObject asJson base64Encoded
3+
stream nextPutAll: anObject asJson asByteArray base64Encoded
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
signature
22
checkSignature: parts
3-
((self signatureFor: ($. join: { parts first . parts second })) = parts third base64Decoded asByteArray) ifFalse: [
3+
((self signatureFor: ($. join: { parts first . parts second })) = parts third base64Padded base64Decoded) ifFalse: [
44
Error signal: 'signature does not match' ].
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
*JSONWebToken-Core
2+
base64Padded
3+
| paddedString |
4+
paddedString := ((self size \\ 4) = 0)
5+
ifTrue: [ self ]
6+
ifFalse: [
7+
String streamContents: [ :stream |
8+
stream nextPutAll: self.
9+
(4 - (self size \\ 4)) timesRepeat: [
10+
stream nextPut: $= ] ] ].
11+
^ paddedString
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"name" : "String"
3+
}

0 commit comments

Comments
 (0)