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);
}
}