|
22 | 22 | import org.apache.commons.codec.binary.Base32; |
23 | 23 | import org.apache.commons.codec.binary.Base64; |
24 | 24 | import org.apache.commons.codec.binary.Hex; |
| 25 | +import org.apache.commons.codec.binary.StringUtils; |
25 | 26 |
|
26 | 27 | import java.io.*; |
27 | 28 | import java.net.URLDecoder; |
@@ -410,11 +411,11 @@ private void addClaim(String name, Object value) { |
410 | 411 | } |
411 | 412 |
|
412 | 413 | private String signJsonEncode(Schema schemaForHeader, Schema schemaForPayload) throws Exception { |
413 | | - byte[] header = jsonToAvro(headerJson, schemaForHeader.toString()); |
414 | | - schemaToHeaderAndPayloadByteArray.put(schemaForHeader, header); |
415 | | - byte[] payload = jsonToAvro(payloadJson, schemaForPayload.toString()); |
416 | | - schemaToHeaderAndPayloadByteArray.put(schemaForPayload, payload); |
417 | | - String content = String.format("%s.%s", new String(header), new String(payload)); |
| 414 | + byte[] bHeader = jsonToAvro(headerJson, schemaForHeader.toString()); |
| 415 | + schemaToHeaderAndPayloadByteArray.put(schemaForHeader, bHeader); |
| 416 | + byte[] bPayload = jsonToAvro(payloadJson, schemaForPayload.toString()); |
| 417 | + schemaToHeaderAndPayloadByteArray.put(schemaForPayload, bPayload); |
| 418 | + String content = String.format("%s.%s", new String(bHeader), new String(bPayload)); |
418 | 419 |
|
419 | 420 | byte[] signatureBytes = algorithm.sign(content.getBytes(StandardCharsets.UTF_8)); |
420 | 421 | String signature = Base64.encodeBase64URLSafeString(signatureBytes); |
@@ -466,23 +467,35 @@ public static byte[] jsonToAvro(String json, String schemaStr) throws Exception |
466 | 467 | } |
467 | 468 | } |
468 | 469 |
|
469 | | - private String signBase16Encoding() { |
470 | | - String header = Hex.encodeHexString(headerJson.getBytes(StandardCharsets.UTF_8)); |
471 | | - String payload = Hex.encodeHexString(payloadJson.getBytes(StandardCharsets.UTF_8)); |
472 | | - String content = String.format("%s.%s", header, payload); |
| 470 | + private String signBase16Encoding() throws UnsupportedEncodingException { |
| 471 | + String header = URLEncoder.encode(headerJson, "UTF-8"); |
| 472 | + String payload = URLEncoder.encode(payloadJson, "UTF-8"); |
| 473 | + |
| 474 | + byte[] bHeader = header.getBytes("UTF-8"); |
| 475 | + String encodedHeader = Hex.encodeHexString(bHeader); |
| 476 | + |
| 477 | + byte[] bPayload = payload.getBytes("UTF-8"); |
| 478 | + String encodedPayload = Hex.encodeHexString(bPayload); |
473 | 479 |
|
| 480 | + String content = String.format("%s.%s", encodedHeader, encodedPayload); |
474 | 481 | byte[] signatureBytes = algorithm.sign(content.getBytes(StandardCharsets.UTF_8)); |
475 | | - String signature = Hex.encodeHexString((signatureBytes)); |
| 482 | + String signature = Hex.encodeHexString(signatureBytes); |
476 | 483 |
|
477 | 484 | return String.format("%s.%s", content, signature); |
478 | 485 | } |
479 | 486 |
|
480 | | - private String signBase32Encoding() { |
| 487 | + private String signBase32Encoding() throws UnsupportedEncodingException{ |
481 | 488 | Base32 base32 = new Base32(); |
482 | | - String header = base32.encodeAsString(headerJson.getBytes(StandardCharsets.UTF_8)); |
483 | | - String payload = base32.encodeAsString(payloadJson.getBytes(StandardCharsets.UTF_8)); |
484 | | - String content = String.format("%s.%s", header, payload); |
| 489 | + String header = URLEncoder.encode(headerJson, "UTF-8"); |
| 490 | + String payload = URLEncoder.encode(payloadJson, "UTF-8"); |
| 491 | + |
| 492 | + byte[] bHeader = header.getBytes("UTF-8"); |
| 493 | + String encodedHeader = base32.encodeAsString(bHeader); |
| 494 | + |
| 495 | + byte[] bPayload = payload.getBytes("UTF-8"); |
| 496 | + String encodedPayload = base32.encodeAsString(bPayload); |
485 | 497 |
|
| 498 | + String content = String.format("%s.%s", encodedHeader, encodedPayload); |
486 | 499 | byte[] signatureBytes = algorithm.sign(content.getBytes(StandardCharsets.UTF_8)); |
487 | 500 | String signature = base32.encodeAsString(signatureBytes); |
488 | 501 |
|
|
0 commit comments