diff --git a/README.md b/README.md index 27305ae..bb3daca 100644 --- a/README.md +++ b/README.md @@ -199,6 +199,13 @@ var signer = PrivateKeyEncoding.fromJsonPrivateKey(ji); ### JSON Configuration +#### Solana CLI Generated Key Pair JSON Array + +By default, if only an array is configured, the assumption is that it is a key pair generated by the Solana CLI. + +```json +[45,8,240,...,23,243,113] +``` #### JSON Array ```json @@ -210,7 +217,7 @@ var signer = PrivateKeyEncoding.fromJsonPrivateKey(ji); ``` #### Key Pair -Encoded 64 bytes private/public key pair. Derived public key will be validated. +Encoded 64 byte private/public key pair. Derived public key will be validated. * base64KeyPair * base58KeyPair @@ -225,7 +232,7 @@ Encoded 64 bytes private/public key pair. Derived public key will be validated. #### Private Key Only -Encoded 32 bytes private key. +Encoded 32 byte private key. * base64PrivateKey * base58PrivateKey diff --git a/rpc/src/main/java/software/sava/rpc/json/PrivateKeyEncoding.java b/rpc/src/main/java/software/sava/rpc/json/PrivateKeyEncoding.java index 7d3ea17..087cdba 100644 --- a/rpc/src/main/java/software/sava/rpc/json/PrivateKeyEncoding.java +++ b/rpc/src/main/java/software/sava/rpc/json/PrivateKeyEncoding.java @@ -66,9 +66,15 @@ public static Signer fromJsonPrivateKey(final JsonIterator ji, final PrivateKeyE } public static Signer fromJsonPrivateKey(final JsonIterator ji) { - final var parser = new Parser(); - ji.testObject(parser); - return parser.createSigner(ji); + return switch (ji.whatIsNext()) { + case ARRAY -> fromJsonPrivateKey(ji, jsonKeyPairArray); + case OBJECT -> { + final var parser = new Parser(); + ji.testObject(parser); + yield parser.createSigner(ji); + } + default -> throw new IllegalStateException("Must be a JSON object or private key pair array."); + }; } private static final class Parser implements FieldBufferPredicate {