From 31938f49d6cfbf20acbdf7393463db3326882df9 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 27 Jun 2014 16:19:07 +0000 Subject: [PATCH] SAM: Fix checkPrivateDestination() for key certs (ticket #1318) --- apps/sam/java/src/net/i2p/sam/SAMUtils.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/apps/sam/java/src/net/i2p/sam/SAMUtils.java b/apps/sam/java/src/net/i2p/sam/SAMUtils.java index 14d9991cf..d08af7d03 100644 --- a/apps/sam/java/src/net/i2p/sam/SAMUtils.java +++ b/apps/sam/java/src/net/i2p/sam/SAMUtils.java @@ -79,15 +79,26 @@ class SAMUtils { } public static class InvalidDestinationException extends Exception { - static final long serialVersionUID = 0x1 ; + private static final long serialVersionUID = 0x1; } + + + /** + * Check whether a base64-encoded {dest,privkey,signingprivkey} is valid + * + * @param dest The base64-encoded destination and keys to be checked (same format as PrivateKeyFile) + * + * @throws InvalidDestination if invalid + */ public static void checkPrivateDestination(String dest) throws InvalidDestinationException { ByteArrayInputStream destKeyStream = new ByteArrayInputStream(Base64.decode(dest)); try { - new Destination().readBytes(destKeyStream); + Destination d = new Destination(); + d.readBytes(destKeyStream); new PrivateKey().readBytes(destKeyStream); - new SigningPrivateKey().readBytes(destKeyStream); + SigningPrivateKey spk = new SigningPrivateKey(d.getSigningPublicKey().getType()); + spk.readBytes(destKeyStream); } catch (Exception e) { throw new InvalidDestinationException(); }