diff --git a/src/main/java/org/eclipse/biscuit/token/Biscuit.java b/src/main/java/org/eclipse/biscuit/token/Biscuit.java index adcb8018..4f53bb99 100644 --- a/src/main/java/org/eclipse/biscuit/token/Biscuit.java +++ b/src/main/java/org/eclipse/biscuit/token/Biscuit.java @@ -253,11 +253,8 @@ public static Biscuit fromBytesWithSymbols( */ static Biscuit fromSerializedBiscuit(SerializedBiscuit ser, SymbolTable symbolTable) throws Error { - Pair> t = ser.extractBlocks(symbolTable); - Block authority = t._1; - ArrayList blocks = t._2; - - return new Biscuit(authority, blocks, symbolTable, ser); + Pair> t = ser.extractBlocks(symbolTable); + return new Biscuit(t._1, t._2, symbolTable, ser); } /** diff --git a/src/main/java/org/eclipse/biscuit/token/UnverifiedBiscuit.java b/src/main/java/org/eclipse/biscuit/token/UnverifiedBiscuit.java index 2c84c982..a2f4c526 100644 --- a/src/main/java/org/eclipse/biscuit/token/UnverifiedBiscuit.java +++ b/src/main/java/org/eclipse/biscuit/token/UnverifiedBiscuit.java @@ -21,7 +21,6 @@ import org.eclipse.biscuit.crypto.KeyPair; import org.eclipse.biscuit.crypto.PublicKey; import org.eclipse.biscuit.datalog.Check; -import org.eclipse.biscuit.datalog.Pair; import org.eclipse.biscuit.datalog.SymbolTable; import org.eclipse.biscuit.error.Error; import org.eclipse.biscuit.token.format.ExternalSignature; @@ -92,11 +91,8 @@ public static UnverifiedBiscuit fromBytesWithSymbols(byte[] data, SymbolTable sy */ private static UnverifiedBiscuit fromSerializedBiscuit( SerializedBiscuit ser, SymbolTable symbolTable) throws Error { - Pair> t = ser.extractBlocks(symbolTable); - Block authority = t._1; - ArrayList blocks = t._2; - - return new UnverifiedBiscuit(authority, blocks, symbolTable, ser); + var t = ser.extractBlocks(symbolTable); + return new UnverifiedBiscuit(t._1, t._2, symbolTable, ser); } /** @@ -201,15 +197,12 @@ public List> externalPublicKeys() { .collect(Collectors.toList()); } - public List> getChecks() { - ArrayList> l = new ArrayList<>(); - l.add(new ArrayList<>(this.authority.getChecks())); - - for (Block b : this.blocks) { - l.add(new ArrayList<>(b.getChecks())); - } + public List getBlocks() { + return Stream.concat(Stream.of(authority), blocks.stream()).collect(Collectors.toList()); + } - return l; + public List> getChecks() { + return getBlocks().stream().map(Block::getChecks).collect(Collectors.toList()); } public List> getContext() { diff --git a/src/main/java/org/eclipse/biscuit/token/format/SerializedBiscuit.java b/src/main/java/org/eclipse/biscuit/token/format/SerializedBiscuit.java index f527f8f7..c7a0aeac 100644 --- a/src/main/java/org/eclipse/biscuit/token/format/SerializedBiscuit.java +++ b/src/main/java/org/eclipse/biscuit/token/format/SerializedBiscuit.java @@ -14,6 +14,7 @@ import java.security.NoSuchAlgorithmException; import java.security.SignatureException; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.stream.Stream; @@ -489,7 +490,7 @@ static Result verifyBlockSignature( return Result.ok(signedBlock.getKey()); } - public Pair> extractBlocks(SymbolTable symbolTable) throws Error { + public Pair> extractBlocks(SymbolTable symbolTable) throws Error { ArrayList> blockExternalKeys = new ArrayList<>(); var authRes = Block.fromBytes(this.authority.getBlock(), Optional.empty()); if (authRes.isErr()) { @@ -534,7 +535,7 @@ public Pair> extractBlocks(SymbolTable symbolTable) thro blocks.add(block); } - return new Pair<>(authority, blocks); + return new Pair<>(authority, Collections.unmodifiableList(blocks)); } public Result seal()