/*
 * {- join("\n * ", @autowarntext) -}
 *
 * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */
{-
use OpenSSL::paramnames qw(generate_public_macros);
-}

#ifndef OPENSSL_CORE_NAMES_H
# define OPENSSL_CORE_NAMES_H
# pragma once

# ifdef __cplusplus
extern "C" {
# endif

/* OSSL_CIPHER_PARAM_CTS_MODE Values */
# define OSSL_CIPHER_CTS_MODE_CS1 "CS1"
# define OSSL_CIPHER_CTS_MODE_CS2 "CS2"
# define OSSL_CIPHER_CTS_MODE_CS3 "CS3"

/* Known CIPHER names (not a complete list) */
# define OSSL_CIPHER_NAME_AES_128_GCM_SIV      "AES-128-GCM-SIV"
# define OSSL_CIPHER_NAME_AES_192_GCM_SIV      "AES-192-GCM-SIV"
# define OSSL_CIPHER_NAME_AES_256_GCM_SIV      "AES-256-GCM-SIV"

/* Known DIGEST names (not a complete list) */
# define OSSL_DIGEST_NAME_MD5            "MD5"
# define OSSL_DIGEST_NAME_MD5_SHA1       "MD5-SHA1"
# define OSSL_DIGEST_NAME_SHA1           "SHA1"
# define OSSL_DIGEST_NAME_SHA2_224       "SHA2-224"
# define OSSL_DIGEST_NAME_SHA2_256       "SHA2-256"
# define OSSL_DIGEST_NAME_SHA2_256_192   "SHA2-256/192"
# define OSSL_DIGEST_NAME_SHA2_384       "SHA2-384"
# define OSSL_DIGEST_NAME_SHA2_512       "SHA2-512"
# define OSSL_DIGEST_NAME_SHA2_512_224   "SHA2-512/224"
# define OSSL_DIGEST_NAME_SHA2_512_256   "SHA2-512/256"
# define OSSL_DIGEST_NAME_MD2            "MD2"
# define OSSL_DIGEST_NAME_MD4            "MD4"
# define OSSL_DIGEST_NAME_MDC2           "MDC2"
# define OSSL_DIGEST_NAME_RIPEMD160      "RIPEMD160"
# define OSSL_DIGEST_NAME_SHA3_224       "SHA3-224"
# define OSSL_DIGEST_NAME_SHA3_256       "SHA3-256"
# define OSSL_DIGEST_NAME_SHA3_384       "SHA3-384"
# define OSSL_DIGEST_NAME_SHA3_512       "SHA3-512"
# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128"
# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256"
# define OSSL_DIGEST_NAME_SM3            "SM3"

/* Known MAC names */
# define OSSL_MAC_NAME_BLAKE2BMAC    "BLAKE2BMAC"
# define OSSL_MAC_NAME_BLAKE2SMAC    "BLAKE2SMAC"
# define OSSL_MAC_NAME_CMAC          "CMAC"
# define OSSL_MAC_NAME_GMAC          "GMAC"
# define OSSL_MAC_NAME_HMAC          "HMAC"
# define OSSL_MAC_NAME_KMAC128       "KMAC128"
# define OSSL_MAC_NAME_KMAC256       "KMAC256"
# define OSSL_MAC_NAME_POLY1305      "POLY1305"
# define OSSL_MAC_NAME_SIPHASH       "SIPHASH"

/* Known KDF names */
# define OSSL_KDF_NAME_HKDF           "HKDF"
# define OSSL_KDF_NAME_TLS1_3_KDF     "TLS13-KDF"
# define OSSL_KDF_NAME_PBKDF1         "PBKDF1"
# define OSSL_KDF_NAME_PBKDF2         "PBKDF2"
# define OSSL_KDF_NAME_SCRYPT         "SCRYPT"
# define OSSL_KDF_NAME_SSHKDF         "SSHKDF"
# define OSSL_KDF_NAME_SSKDF          "SSKDF"
# define OSSL_KDF_NAME_TLS1_PRF       "TLS1-PRF"
# define OSSL_KDF_NAME_X942KDF_ASN1   "X942KDF-ASN1"
# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT"
# define OSSL_KDF_NAME_X963KDF        "X963KDF"
# define OSSL_KDF_NAME_KBKDF          "KBKDF"
# define OSSL_KDF_NAME_KRB5KDF        "KRB5KDF"
# define OSSL_KDF_NAME_HMACDRBGKDF    "HMAC-DRBG-KDF"

/* RSA padding modes */
# define OSSL_PKEY_RSA_PAD_MODE_NONE    "none"
# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1"
# define OSSL_PKEY_RSA_PAD_MODE_OAEP    "oaep"
# define OSSL_PKEY_RSA_PAD_MODE_X931    "x931"
# define OSSL_PKEY_RSA_PAD_MODE_PSS     "pss"

/* RSA pss padding salt length */
# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest"
# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX    "max"
# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO   "auto"
# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax"

/* OSSL_PKEY_PARAM_EC_ENCODING values */
# define OSSL_PKEY_EC_ENCODING_EXPLICIT  "explicit"
# define OSSL_PKEY_EC_ENCODING_GROUP     "named_curve"

# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed"
# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED   "compressed"
# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID       "hybrid"

# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT     "default"
# define OSSL_PKEY_EC_GROUP_CHECK_NAMED       "named"
# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST  "named-nist"

/* OSSL_KEM_PARAM_OPERATION values */
#define OSSL_KEM_PARAM_OPERATION_RSASVE     "RSASVE"
#define OSSL_KEM_PARAM_OPERATION_DHKEM      "DHKEM"

/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */
{- generate_public_macros(); -}

# ifdef __cplusplus
}
# endif

#endif
