diff options
Diffstat (limited to 'src/main/scala/com/getbootstrap/savage/crypto/Sha1WithRsa.scala')
-rw-r--r-- | src/main/scala/com/getbootstrap/savage/crypto/Sha1WithRsa.scala | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/main/scala/com/getbootstrap/savage/crypto/Sha1WithRsa.scala b/src/main/scala/com/getbootstrap/savage/crypto/Sha1WithRsa.scala new file mode 100644 index 0000000..c01afee --- /dev/null +++ b/src/main/scala/com/getbootstrap/savage/crypto/Sha1WithRsa.scala @@ -0,0 +1,27 @@ +package com.getbootstrap.savage.crypto + +import java.security.Signature +import java.security.SignatureException +import java.security.InvalidKeyException + + +object Sha1WithRsa { + private val signatureAlgorithmName = "SHA1withRSA" // Supported in all spec-compliant JVMs + private def newSignatureVerifier(): Signature = Signature.getInstance(signatureAlgorithmName) + + def verifySignature(signature: Array[Byte], publicKey: RsaPublicKey, signedData: Array[Byte]): SignatureVerificationStatus = { + val verifier = newSignatureVerifier() + try { + verifier.initVerify(publicKey.publicKey) + verifier.update(signedData) + verifier.verify(signature) match { + case true => SuccessfullyVerified + case false => FailedVerification + } + } + catch { + case keyExc:InvalidKeyException => ExceptionDuringVerification(keyExc) + case sigExc:SignatureException => ExceptionDuringVerification(sigExc) + } + } +} |