From b725544049fcf6b9946a425e460702f584319f3b Mon Sep 17 00:00:00 2001 From: kannar Date: Wed, 3 Apr 2024 15:53:44 +0200 Subject: [PATCH 1/2] serialize external signature --- .../biscuit/token/format/SerializedBiscuit.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/org/biscuitsec/biscuit/token/format/SerializedBiscuit.java b/src/main/java/org/biscuitsec/biscuit/token/format/SerializedBiscuit.java index 7e4fc443..93b94144 100644 --- a/src/main/java/org/biscuitsec/biscuit/token/format/SerializedBiscuit.java +++ b/src/main/java/org/biscuitsec/biscuit/token/format/SerializedBiscuit.java @@ -191,6 +191,14 @@ public byte[] serialize() throws Error.FormatError.SerializationError { blockBuilder.setNextKey(block.key.serialize()); blockBuilder.setSignature(ByteString.copyFrom(block.signature)); + if (block.externalSignature.isDefined()) { + ExternalSignature externalSignature = block.externalSignature.get(); + Schema.ExternalSignature.Builder externalSignatureBuilder = Schema.ExternalSignature.newBuilder(); + externalSignatureBuilder.setPublicKey(externalSignature.key.serialize()); + externalSignatureBuilder.setSignature(ByteString.copyFrom(externalSignature.signature)); + blockBuilder.setExternalSignature(externalSignatureBuilder.build()); + } + biscuitBuilder.addBlocks(blockBuilder.build()); } From 033adff964fba6beb4fdae601e2f4bce5d99a940 Mon Sep 17 00:00:00 2001 From: kannar Date: Wed, 3 Apr 2024 17:56:39 +0200 Subject: [PATCH 2/2] assert serialization equals original sample --- src/test/java/org/biscuitsec/biscuit/token/SamplesTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/biscuitsec/biscuit/token/SamplesTest.java b/src/test/java/org/biscuitsec/biscuit/token/SamplesTest.java index 47bb68e1..02549fe1 100644 --- a/src/test/java/org/biscuitsec/biscuit/token/SamplesTest.java +++ b/src/test/java/org/biscuitsec/biscuit/token/SamplesTest.java @@ -24,8 +24,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.fail; +import static org.junit.jupiter.api.Assertions.*; class SamplesTest { final RunLimits runLimits = new RunLimits(500,100, Duration.ofMillis(500)); @@ -56,6 +55,7 @@ DynamicTest process_testcase(final TestCase testCase, final PublicKey publicKey, Either res = Try.of(() -> { inputStream.read(data); Biscuit token = Biscuit.from_bytes(data, publicKey); + assertArrayEquals(token.serialize(), data); List revocationIds = token.revocation_identifiers(); JsonArray validationRevocationIds = validation.getAsJsonArray("revocation_ids");