CRYPT_ALGORITHM_IDENTIFIER

The CRYPT_ALGORITHM_IDENTIFIER structure is used to describe any algorithm, where the parameters contained in a CRYPT_OBJID_BLOB are in their encoded representation. For most algorithm types, there are no parameters (Parameters.cbData == 0), and those that do have parameters are listed under the Parameters member.

typedef struct _CRYPT_ALGORITHM_IDENTIFIER {
    LPSTR                          pszObjId;
    CRYPT_OBJID_BLOB               Parameters;
} CRYPT_ALGORITHM_IDENTIFIER,     *PCRYPT_ALGORITHM_IDENTIFIER;
 

Members

pszObjId
The following are the definitions of various algorithm object identifiers, and can also be found in Wincrypt.h:
Name Base/Suffix Value
//RSA
szOID_RSA "1.2.840.113549"
szOID_PKCS szOID_RSA ".1" "1.2.840.113549.1"
szOID_RSA_HASH szOID_RSA ".2" "1.2.840.113549.2"
szOID_RSA_ENCRYPT szOID_RSA ".3" "1.2.840.113549.3"
szOID_PKCS_1 szOID_PKCS ".1" "1.2.840.113549.1.1"
szOID_PKCS_2 szOID_PKCS ".2" "1.2.840.113549.1.2"
szOID_PKCS_3 szOID_PKCS ".3" "1.2.840.113549.1.3"
szOID_PKCS_4 szOID_PKCS ".4" "1.2.840.113549.1.4"
szOID_PKCS_5 szOID_PKCS ".5" "1.2.840.113549.1.5"
szOID_PKCS_6 szOID_PKCS ".7" "1.2.840.113549.1.6"
szOID_PKCS_7 szOID_PKCS ".7" "1.2.840.113549.1.7"
szOID_PKCS_8 szOID_PKCS ".8" "1.2.840.113549.1.8"
szOID_PKCS_9 szOID_PKCS ".9" "1.2.840.113549.1.9"
szOID_PKCS_10 szOID_PKCS ".10" "1.2.840.113549.1.10"
szOID_PKCS_12 szOID_PKCS ".12" "1.2.840.113549.1.12"
szOID_RSA_MD2 szOID_RSA_HASH ".2" "1.2.840.113549.2.2"
szOID_RSA_MD4 szOID_RSA_HASH ".4" "1.2.840.113549.2.4"
szOID_RSA_MD5 szOID_RSA_HASH ".5" "1.2.840.113549.2.5"
szOID_RSA_RSA szOID_PKCS_1 ".1" "1.2.840.113549.1.1.1"
szOID_RSA_MD2RSA szOID_PKCS_1 ".2" "1.2.840.113549.1.1.2"
szOID_RSA_MD4RSA szOID_PKCS_1 ".3" "1.2.840.113549.1.1.3"
szOID_RSA_MD5RSA szOID_PKCS_1 ".4" "1.2.840.113549.1.1.4"

// The following two are per Bob Baldwin (baldwin@rsa.com, 5.7.96)
Name Base/Suffix Value
szOID_RSA_SHA1RSA szOID_PKCS_1 ".5" "1.2.840.113549.1.1.5"
szOID_RSA_SETOAEP_RSA szOID_PKCS_1 ".6" "1.2.840.113549.1.1.6"
szOID_RSA_DH szOID_PKCS_3 ".1" "1.2.840.113549.1.3.1
szOID_RSA_data szOID_PKCS_7 ".1" "1.2.840.113549.1.7.1"
szOID_RSA_signedData szOID_PKCS_7 ".2" "1.2.840.113549.1.7.2"
szOID_RSA_envelopedData szOID_PKCS_7 ".3" "1.2.840.113549.1.7.3"
szOID_RSA_signEnvData szOID_PKCS_7 ".4" "1.2.840.113549.1.7.4"
szOID_RSA_digestedData szOID_PKCS_7 ".5" "1.2.840.113549.1.7.5"
szOID_RSA_hashedData szOID_PKCS_7 ".5" "1.2.840.113549.1.7.5"
szOID_RSA_encryptedData szOID_PKCS_7 ".6" "1.2.840.113549.1.7.6"
szOID_RSA_emailAddr szOID_PKCS_9 ".1" "1.2.840.113549.1.9.1"
szOID_RSA_unstructName szOID_PKCS_9 ".2" "1.2.840.113549.1.9.2"
szOID_RSA_contentType szOID_PKCS_9 ".3" "1.2.840.113549.1.9.3"
szOID_RSA_messageDigest szOID_PKCS_9 ".4" "1.2.840.113549.1.9.4"
szOID_RSA_signingTime szOID_PKCS_9 ".5" "1.2.840.113549.1.9.5"
szOID_RSA_counterSign szOID_PKCS_9 ".6" "1.2.840.113549.1.9.6"
szOID_RSA_challengePwd szOID_PKCS_9 ".7" "1.2.840.113549.1.9.7"
szOID_RSA_unstructAddr szOID_PKCS_9 ".8" "1.2.840.113549.1.9.8"
szOID_RSA_extCertAttrs szOID_PKCS_9 ".9" "1.2.840.113549.1.9.9"
szOID_RSA_SMIMECapabilities szOID_PKCS_9 ".15" "1.2.840.113549.1.9.15"
szOID_RSA_preferSignedData szOID_RSA_SMIMECapabilities "1.2.840.113549.1.9.15.1"
szOID_RSA_RC2CBC szOID_RSA_ENCRYPT ".2" "1.2.840.113549.3.2"
szOID_RSA_RC4 szOID_RSA_ENCRYPT ".4" "1.2.840.113549.3.4"
szOID_RSA_DES_EDE3_CBC szOID_RSA_ENCRYPT ".7" "1.2.840.113549.3.7"
szOID_RSA_RC5_CBCPad szOID_RSA_ENCRYPT ".9" "1.2.840.113549.3.9"
szOID_ANSI_x942 "1.2.840.10046"
szOID_ANSI_x942_DH szOID_ANSI_x942 ".2.1" "1.2.840.10046.2.1"
szOID_X957 "1.2.840.10040"
szOID_X957_DSA szOID_x957 ".4.1" "1.2.840.10040.4.1"
//ITU-T Useful Definitions
szOID_DS "2.5"
szOID_DSALG szOID_DS ".8" "2.5.8"
szOID_DSALG_CRPT szOID_DSALG ".1" "2.5.8.1"
szOID_DSALG_HASH szOID_DSALG ".2" "2.5.8.2"
szOID_DSALG_SIGN szOID_DSALG ".3" "2.5.8.3"
szOID_DSALG_RSA szOID_DSALG_CRPT ".1" "2.5.8.1.1"

//NIST OSE Implementers' Workshop (OIW)
//http://nemo.ncsl.nist.gov/oiw/agreements/stable/OSI/12s_9506.w51
//http://nemo.ncsl.nist.gov/oiw/agreements/working/OSI/12w_9503.w51

szOID_OIW "1.3.14"

//NIST OSE Implementers' Workshop (OIW) Security SIG algorithm //identifiers
Name Base/Suffix Value
szOID_OIWSEC szOID_OIW ".3.2" "1.3.14.3.2"
szOID_OIWSEC_md4RSA szOID_OIWSEC ".2" "1.3.14.3.2.2"
szOID_OIWSEC_md5RSA szOID_OIWSEC ".3" "1.3.14.3.2.3"
szOID_OIWSEC_md4RSA2 szOID_OIWSEC ".4" "1.3.14.3.2.4"
szOID_OIWSEC_desECB szOID_OIWSEC ".6" "1.3.14.3.2.6"
szOID_OIWSEC_desCBC szOID_OIWSEC ".7" "1.3.14.3.2.7"
szOID_OIWSEC_desOFB szOID_OIWSEC ".8" "1.3.14.3.2.8"
szOID_OIWSEC_desCFB szOID_OIWSEC ".9" "1.3.14.3.2.9"
szOID_OIWSEC_desMAC szOID_OIWSEC ".10" "1.3.14.3.2.10"
szOID_OIWSEC_rsaSign szOID_OIWSEC ".11" "1.3.14.3.2.11"
szOID_OIWSEC_dsa szOID_OIWSEC ".12" "1.3.14.3.2.12"
szOID_OIWSEC_shaDSA szOID_OIWSEC ".13" "1.3.14.3.2.13"
szOID_OIWSEC_mdc2RSA szOID_OIWSEC ".14" "1.3.14.3.2.14"
szOID_OIWSEC_shaRSA szOID_OIWSEC ".15" "1.3.14.3.2.15"
szOID_OIWSEC_dhCommMod szOID_OIWSEC ".16" "1.3.14.3.2.16"
szOID_OIWSEC_desEDE szOID_OIWSEC ".17" "1.3.14.3.2.17"
szOID_OIWSEC_sha szOID_OIWSEC ".18" "1.3.14.3.2.18"
szOID_OIWSEC_mdc2 szOID_OIWSEC ".19" "1.3.14.3.2.19"
szOID_OIWSEC_dsaComm szOID_OIWSEC ".20" "1.3.14.3.2.20"
szOID_OIWSEC_dsaCommSHA szOID_OIWSEC ".21" "1.3.14.3.2.21"
szOID_OIWSEC_rsaXchg szOID_OIWSEC ".22" "1.3.14.3.2.22"
szOID_OIWSEC_keyHashSeal szOID_OIWSEC ".23" "1.3.14.3.2.23"
szOID_OIWSEC_md2RSASign szOID_OIWSEC ".24" "1.3.14.3.2.24"
szOID_OIWSEC_md5RSASign szOID_OIWSEC ".25" "1.3.14.3.2.25"
szOID_OIWSEC_sha1 szOID_OIWSEC ".26" "1.3.14.3.2.26"
szOID_OIWSEC_dsaSHA1 szOID_OIWSEC ".27" "1.3.14.3.2.27"
szOID_OIWSEC_dsaCommSHA1 szOID_OIWSEC ".28" "1.3.14.3.2.28"
szOID_OIWSEC_sha1RSASign szOID_OIWSEC ".29" "1.3.14.3.2.29"

//NIST OSE Implementers' Workshop (OIW) Directory SIG algorithm //identifiers
Name Base/Suffix Value
szOID_OIWDIR szOID_OIW ".7.2" "1.3.14.7.2"
szOID_OIWDIR_CRPT szOID_OIWDIR ".1" "1.3.14.7.2.1"
szOID_OIWDIR_HASH szOID_OIWDIR ".2" "1.3.14.7.2.2"
szOID_OIWDIR_SIGN szOID_OIWDIR ".3" "1.3.14.7.2.3"
szOID_OIWDIR_md2 szOID_OIWDIR_HASH ".1" "1.3.14.7.2.2.1"
szOID_OIWDIR_md2RSA szOID_OIWDIR_SIGN ".1" "1.3.14.7.2.3.1"

//INFOSEC Algorithms
joint-iso-ccitt(2) country(16) us(840) organization(1) us-government(101) dod(2) id-infosec(1)
Name Base/Suffix Value
szOID_INFOSEC "2.16.840.1.101.2.1"
szOID_INFOSEC_sdnsSignature szOID_INFOSEC".1.1" "2.16.840.1.101.2.1.1.1"
szOID_INFOSEC_mosaicSignature szOID_INFOSEC".1.2" "2.16.840.1.101.2.1.1.2"
szOID_INFOSEC_sdnsConfidentiality szOID_INFOSEC".1.3" "2.16.840.1.101.2.1.1.3"
szOID_INFOSEC_mosaicConfidentiality szOID_INFOSEC".1.4" "2.16.840.1.101.2.1.1.4"
szOID_INFOSEC_sdnsIntegrity szOID_INFOSEC".1.5" "2.16.840.1.101.2.1.1.5"
szOID_INFOSEC_mosaicIntegrity szOID_INFOSEC".1.6" "2.16.840.1.101.2.1.1.6"
szOID_INFOSEC_sdnsTokenProtection szOID_INFOSEC".1.7" "2.16.840.1.101.2.1.1.7"
szOID_INFOSEC_mosaicTokenProtection szOID_INFOSEC".1.8" "2.16.840.1.101.2.1.1.8"
szOID_INFOSEC_sdnsKeyManagement szOID_INFOSEC".1.9" "2.16.840.1.101.2.1.1.9"
szOID_INFOSEC_mosaicKeyManagement szOID_INFOSEC".1.10" "2.16.840.1.101.2.1.1.10"
szOID_INFOSEC_sdnsKMandSig szOID_INFOSEC".1.11" "2.16.840.1.101.2.1.1.11"
szOID_INFOSEC_mosaicKMandSig szOID_INFOSEC".1.12" "2.16.840.1.101.2.1.1.12"
szOID_INFOSEC_SuiteASignature szOID_INFOSEC".1.13" "2.16.840.1.101.2.1.1.13"
szOID_INFOSEC_SuiteAConfidentiality szOID_INFOSEC".1.14" "2.16.840.1.101.2.1.1.14"
szOID_INFOSEC_SuiteAIntegrity szOID_INFOSEC".1.15" "2.16.840.1.101.2.1.1.15"
szOID_INFOSEC_SuiteATokenProtection szOID_INFOSEC".1.16" "2.16.840.1.101.2.1.1.16"
szOID_INFOSEC_SuiteAKeyManagement szOID_INFOSEC".1.17" "2.16.840.1.101.2.1.1.17"
szOID_INFOSEC_SuiteAKMandSig szOID_INFOSEC".1.18" "2.16.840.1.101.2.1.1.18"
szOID_INFOSEC_mosaicUpdatedSig szOID_INFOSEC".1.19" "2.16.840.1.101.2.1.1.19"
szOID_INFOSEC_mosaicKMandUpdSig szOID_INFOSEC".1.20" "2.16.840.1.101.2.1.1.20"
szOID_INFOSEC_mosaicUpdatedInteg szOID_INFOSEC".1.21" "2.16.840.1.101.2.1.1.21"

Parameters
An algorithm-specific encoded value. In the normal case there are no parameters (indicated by Parameters.cbData == 0).

The following algorithms have encoded parameters. See the predefined constants for encode/decode details.
Algorithm name Predefined constant
szOID_OIWSEC_dsa X509_DSS_PARAMETERS
szOID_RSA_RC2CBC PKCS_RC2_CBC_PARAMETERS
szOID_OIWSEC_desCBC X509_OCTET_STRING
szOID_RSA_DES_EDE3_CBC X509_OCTET_STRING
szOID_RSA_RC4 X509_OCTET_STRING

See Also

ALG_ID, BLOB Structure, CERT_INFO, CERT_PUBLIC_KEY_INFO, CERT_SIGNED_CONTENT_INFO, CMSG_ENVELOPED_ENCODE_INFO, CMSG_HASHED_ENCODE_INFO, CMSG_SIGNER_ENCODE_INFO, CMSG_SIGNER_INFO, CRL_INFO, CRYPT_ENCRYPT_MESSAGE_PARA, CRYPT_HASH_MESSAGE_PARA, CRYPT_SIGN_MESSAGE_PARA, CryptMsgGetParam