Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/savage.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/com/getbootstrap/savage/crypto/RsaPublicKey.scala')
-rw-r--r--src/main/scala/com/getbootstrap/savage/crypto/RsaPublicKey.scala16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/main/scala/com/getbootstrap/savage/crypto/RsaPublicKey.scala b/src/main/scala/com/getbootstrap/savage/crypto/RsaPublicKey.scala
new file mode 100644
index 0000000..a91c6ed
--- /dev/null
+++ b/src/main/scala/com/getbootstrap/savage/crypto/RsaPublicKey.scala
@@ -0,0 +1,16 @@
+package com.getbootstrap.savage.crypto
+
+import scala.util.Try
+import java.security.KeyFactory
+import java.security.PublicKey
+import java.security.spec.X509EncodedKeySpec
+
+
+sealed case class RsaPublicKey private(publicKey: PublicKey)
+
+object RsaPublicKey {
+ private val rsaKeyFactory = KeyFactory.getInstance("RSA") // Supported in all spec-compliant JVMs
+
+ def fromX509Spec(keySpec: X509EncodedKeySpec): Try[RsaPublicKey] = Try{ rsaKeyFactory.generatePublic(keySpec) }.map{ new RsaPublicKey(_) }
+ def fromPem(pem: String): Try[RsaPublicKey] = Try{ Pem.decodePublicKeyIntoSpec(pem) }.flatMap{ fromX509Spec(_) }
+}