absl::StatusOr DigestForMechanism()

in kmsp11/util/crypto_utils.cc [185:204]


absl::StatusOr<const EVP_MD*> DigestForMechanism(CK_MECHANISM_TYPE mechanism) {
  switch (mechanism) {
    case CKM_SHA256:
    case CKM_ECDSA_SHA256:
    case CKM_SHA256_RSA_PKCS:
    case CKM_SHA256_RSA_PKCS_PSS:
      return EVP_sha256();
    case CKM_SHA384:
    case CKM_ECDSA_SHA384:
      return EVP_sha384();
    case CKM_SHA512:
    case CKM_SHA512_RSA_PKCS:
    case CKM_SHA512_RSA_PKCS_PSS:
      return EVP_sha512();
    default:
      return NewInternalError(
          absl::StrFormat("invalid digest mechanism: %#x", mechanism),
          SOURCE_LOCATION);
  }
}