diff options
Diffstat (limited to 'src/main/scala/com/getbootstrap/savage/crypto/RsaPublicKey.scala')
-rw-r--r-- | src/main/scala/com/getbootstrap/savage/crypto/RsaPublicKey.scala | 16 |
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(_) } +} |