absl::StatusOr NewVerifyOp()

in kmsp11/operation/crypter_ops.cc [113:141]


absl::StatusOr<VerifyOp> NewVerifyOp(std::shared_ptr<Object> key,
                                     const CK_MECHANISM* mechanism) {
  switch (mechanism->mechanism) {
    case CKM_ECDSA:
    case CKM_ECDSA_SHA256:
    case CKM_ECDSA_SHA384:
      return NewEcdsaVerifier(key, mechanism);
    case CKM_RSA_PKCS:
    case CKM_SHA256_RSA_PKCS:
    case CKM_SHA512_RSA_PKCS:
      if (!key->algorithm().digest_mechanism.has_value()) {
        return NewRsaRawPkcs1Verifier(key, mechanism);
      }
      return NewRsaPkcs1Verifier(key, mechanism);
    case CKM_RSA_PKCS_PSS:
    case CKM_SHA256_RSA_PKCS_PSS:
    case CKM_SHA512_RSA_PKCS_PSS:
      return NewRsaPssVerifier(key, mechanism);
    case CKM_SHA_1_HMAC:
    case CKM_SHA224_HMAC:
    case CKM_SHA256_HMAC:
    case CKM_SHA384_HMAC:
    case CKM_SHA512_HMAC:
      return NewHmacVerifier(key, mechanism);
    default:
      return InvalidMechanismError(mechanism->mechanism, "verify",
                                   SOURCE_LOCATION);
  }
}