fixed Jwt signature base

pull/59/head
Justin Richer 13 years ago
parent a2c5c99b63
commit ee0ef8d563

@ -20,8 +20,12 @@ public class Hmac256Signer extends AbstractJwtSigner {
this(null); this(null);
} }
public Hmac256Signer(byte[] passphrase) { public Hmac256Signer(byte[] passphrase) {
super(HS256); super(HS256);
//TODO: set up a factory for other signature methods
setPassphrase(passphrase); setPassphrase(passphrase);
try { try {

@ -103,12 +103,15 @@ public class Jwt {
} }
/** /**
* Return the canonical encoded string of this JWT * Return the canonical encoded string of this JWT, the header in Base64, a period ".", the claims in Base64, a period ".", and the signature in Base64.
*/ */
public String toString() { public String toString() {
return getSignatureBase() + Strings.nullToEmpty(this.signature); return getSignatureBase() + "." + Strings.nullToEmpty(this.signature);
} }
/**
* The signature base of a JWT is the header in Base64, a period ".", and the claims in Base64.
*/
public String getSignatureBase() { public String getSignatureBase() {
JsonObject h = header.getAsJsonObject(); JsonObject h = header.getAsJsonObject();
JsonObject c = claims.getAsJsonObject(); JsonObject c = claims.getAsJsonObject();
@ -116,7 +119,7 @@ public class Jwt {
String h64 = new String(Base64.encodeBase64URLSafe(h.toString().getBytes())); String h64 = new String(Base64.encodeBase64URLSafe(h.toString().getBytes()));
String c64 = new String(Base64.encodeBase64URLSafe(c.toString().getBytes())); String c64 = new String(Base64.encodeBase64URLSafe(c.toString().getBytes()));
return h64 + "." + c64 + "."; return h64 + "." + c64;
} }
@ -143,6 +146,8 @@ public class Jwt {
// shuttle for return value // shuttle for return value
Jwt jwt = new Jwt(new JwtHeader(hjo), new JwtClaims(cjo), s64); Jwt jwt = new Jwt(new JwtHeader(hjo), new JwtClaims(cjo), s64);
// TODO: save the wire-encoded string in the Jwt object itself?
return jwt; return jwt;
} }

@ -69,8 +69,8 @@ public class JwtTest {
* Expected signature: iGBPJj47S5q_HAhSoQqAdcS6A_1CFj3zrLaImqNbt9E * Expected signature: iGBPJj47S5q_HAhSoQqAdcS6A_1CFj3zrLaImqNbt9E
* *
*/ */
String signature = "iGBPJj47S5q_HAhSoQqAdcS6A_1CFj3zrLaImqNbt9E"; String signature = "p-63Jzz7mgi3H4hvW6MFB7lmPRZjhsL666MYkmpX33Y";
String expected = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjEzMDA4MTkzODAsImlzcyI6ImpvZSIsImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.iGBPJj47S5q_HAhSoQqAdcS6A_1CFj3zrLaImqNbt9E"; String expected = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjEzMDA4MTkzODAsImlzcyI6ImpvZSIsImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ." + signature;
String actual = jwt.toString(); String actual = jwt.toString();

Loading…
Cancel
Save