All Downloads are FREE. Search and download functionalities are using the official Maven repository.

tsec.signature.jca.JCASigInterpreter.scala Maven / Gradle / Ivy

package tsec.signature.jca

import java.security.Signature

import cats.effect.Sync

abstract class JCASigInterpreter[F[_], A](algorithm: String)(implicit M: Sync[F])
    extends JCASigAlgebra[F, A, SigPublicKey, SigPrivateKey, SigCertificate] {

  def genSignatureInstance: F[Signature] = M.delay(Signature.getInstance(algorithm))

  def initSign(instance: Signature, p: SigPrivateKey[A]): F[Unit] =
    M.delay(instance.initSign(SigPrivateKey.toJavaPrivateKey[A](p)))

  def initVerifyK(instance: Signature, p: SigPublicKey[A]): F[Unit] =
    M.delay(instance.initVerify(SigPublicKey.toJavaPublicKey[A](p)))

  def initVerifyC(instance: Signature, c: SigCertificate[A]): F[Unit] =
    M.delay(instance.initVerify(SigCertificate.toJavaCertificate[A](c)))

  def loadBytes(bytes: Array[Byte], instance: Signature): F[Unit] = M.delay(instance.update(bytes))

  def sign(instance: Signature): F[Array[Byte]] = M.delay(instance.sign())

  def verify(sig: Array[Byte], instance: Signature): F[Boolean] = M.delay(instance.verify(sig))

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy