From 65fe1184a8fd2b57f37a2ccf8ccebef12fbbfd9c Mon Sep 17 00:00:00 2001 From: Dima Date: Tue, 20 Feb 2018 17:00:59 +0300 Subject: [PATCH] Client cli (#59) * add scopts and args for start cli, parse command line with fastparse, put and get string values on remote node * refactoring * test for parser and comments * add main class * seed -> seeds * headers, PR fixes --- src/main/scala/fluence/crypto/KeyStore.scala | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/scala/fluence/crypto/KeyStore.scala b/src/main/scala/fluence/crypto/KeyStore.scala index 966ff7a..6cbfeef 100644 --- a/src/main/scala/fluence/crypto/KeyStore.scala +++ b/src/main/scala/fluence/crypto/KeyStore.scala @@ -20,6 +20,7 @@ package fluence.crypto import fluence.crypto.keypair.KeyPair import io.circe.{ Decoder, Encoder, HCursor, Json } import scodec.bits.{ Bases, ByteVector } +import io.circe.parser.decode import scala.language.higherKinds @@ -54,4 +55,17 @@ object KeyStore { } yield KeyStore(KeyPair.fromByteVectors(public, secret)) } } + + def fromBase64(base64: String): KeyStore = { + val jsonStr = ByteVector.fromBase64(base64, alphabet) match { + case Some(bv) ⇒ new String(bv.toArray) + case None ⇒ + throw new IllegalArgumentException("'" + base64 + "' is not a valid base64.") + } + decode[Option[KeyStore]](jsonStr) match { + case Right(Some(ks)) ⇒ ks + case Right(None) ⇒ throw new IllegalArgumentException("'" + base64 + "' is not a valid key store.") + case Left(err) ⇒ throw new IllegalArgumentException("'" + base64 + "' is not a valid key store.", err) + } + } }