@@ -32,6 +32,7 @@ public class ValidationToken extends Jwt {
3232 private static final HashFunction HASH_FUNCTION = Hashing .sha256 ();
3333 private static final String NEW_LINE = "\n " ;
3434
35+ private final String credentialSid ;
3536 private final String method ;
3637 private final String uri ;
3738 private final String queryString ;
@@ -46,6 +47,7 @@ private ValidationToken(Builder b) {
4647 b .credentialSid ,
4748 new Date (new Date ().getTime () + b .ttl * 1000 )
4849 );
50+ this .credentialSid = b .credentialSid ;
4951 this .method = b .method ;
5052 this .uri = b .uri ;
5153 this .queryString = b .queryString ;
@@ -56,7 +58,10 @@ private ValidationToken(Builder b) {
5658
5759 @ Override
5860 public Map <String , Object > getHeaders () {
59- return Collections .emptyMap ();
61+ Map <String , Object > headers = new HashMap <>();
62+ headers .put ("cty" , "twilio-pkrv;v=1" );
63+ headers .put ("kid" , this .credentialSid );
64+ return headers ;
6065 }
6166
6267 @ Override
@@ -65,7 +70,8 @@ public Map<String, Object> getClaims() {
6570
6671 // Sort the signed headers
6772 Collections .sort (signedHeaders );
68- String includedHeaders = Joiner .on (";" ).join (signedHeaders );
73+ List <String > lowercaseSignedHeaders = Lists .transform (signedHeaders , LOWERCASE_STRING );
74+ String includedHeaders = Joiner .on (";" ).join (lowercaseSignedHeaders );
6975 payload .put ("hrh" , includedHeaders );
7076
7177 // Add the method and uri
@@ -84,7 +90,7 @@ public Map<String, Object> getClaims() {
8490 Map <String , List <String >> combinedHeaders = COMBINE_HEADERS .apply (lowercaseHeaders );
8591
8692 // Add the headers that we care about
87- for (String header : signedHeaders ) {
93+ for (String header : lowercaseSignedHeaders ) {
8894 String lowercase = header .toLowerCase ().trim ();
8995
9096 if (combinedHeaders .containsKey (lowercase )) {
@@ -175,6 +181,13 @@ public Header[] apply(Header[] headers) {
175181 }
176182 };
177183
184+ private static Function <String , String > LOWERCASE_STRING = new Function <String , String >() {
185+ @ Override
186+ public String apply (String s ) {
187+ return s .toLowerCase ();
188+ }
189+ };
190+
178191 public static class Builder {
179192
180193 private String credentialSid ;
0 commit comments