AlgorithmType enumeration (certenroll.h)

The AlgorithmType enumeration type specifies the intended purpose of a cryptographic algorithm supported by a cryptographic provider. Algorithms are typically classified by use into the following general categories:

  • Signing
  • Hashing
  • Asymmetric encryption
  • Symmetric encryption
  • Key exchange
This enumeration is used in the ICspAlgorithm interface.

Syntax

typedef enum AlgorithmType {
  XCN_BCRYPT_UNKNOWN_INTERFACE = 0,
  XCN_BCRYPT_CIPHER_INTERFACE = 0x1,
  XCN_BCRYPT_HASH_INTERFACE = 0x2,
  XCN_BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE = 0x3,
  XCN_BCRYPT_SIGNATURE_INTERFACE = 0x5,
  XCN_BCRYPT_SECRET_AGREEMENT_INTERFACE = 0x4,
  XCN_BCRYPT_RNG_INTERFACE = 0x6,
  XCN_BCRYPT_KEY_DERIVATION_INTERFACE = 0x7
} ;

Constants

 
XCN_BCRYPT_UNKNOWN_INTERFACE
Value: 0
The algorithm type is not defined.
XCN_BCRYPT_CIPHER_INTERFACE
Value: 0x1
The algorithm is used for symmetric encryption. This includes the RC2, RC4, Data Encryption Standard (DES), 3DED, and AES algorithms.
XCN_BCRYPT_HASH_INTERFACE
Value: 0x2
The algorithm is used for hashing. This includes the MD2, MD4, SHA1, SHA256, SHA384, SHA512 MAC, and Hash-Based Message Authentication Code (HMAC) hash algorithms.
XCN_BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE
Value: 0x3
The algorithm is used for public key encryption. This includes RSA.
XCN_BCRYPT_SIGNATURE_INTERFACE
Value: 0x5
The algorithm is used for signing. This includes the RSA algorithm, Digital Signature Algorithm (DSA), and ECDSA algorithm.
XCN_BCRYPT_SECRET_AGREEMENT_INTERFACE
Value: 0x4
The algorithm is used for key exchange. This includes the Diffie-Hellman algorithm and ECDH algorithm.
XCN_BCRYPT_RNG_INTERFACE
Value: 0x6
The algorithm is used to generate a random number.
XCN_BCRYPT_KEY_DERIVATION_INTERFACE
Value: 0x7

Requirements

Requirement Value
Minimum supported client Windows Vista [desktop apps only]
Minimum supported server Windows Server 2008 [desktop apps only]
Header certenroll.h

See also

AlgorithmOperationFlags

CertEnroll Enumerations

CertEnroll Interfaces