Método IObjectId::InitializeFromAlgorithmName (certenroll.h)

El método InitializeFromAlgorithmName inicializa el objeto a partir de un nombre de algoritmo o un identificador de objeto. Este método se ha proporcionado principalmente para permitirle inicializar el objeto a partir de un nombre de algoritmo cryptography API: Next Generation (CNG). Sin embargo, puede especificar cualquier nombre de OID. Este método está habilitado para web.

Sintaxis

HRESULT InitializeFromAlgorithmName(
  [in] ObjectIdGroupId        GroupId,
  [in] ObjectIdPublicKeyFlags KeyFlags,
  [in] AlgorithmFlags         AlgFlags,
  [in] BSTR                   strAlgorithmName
);

Parámetros

[in] GroupId

Valor de enumeración ObjectIdGroupId que especifica el grupo de OID que se va a buscar. Puede ser cualquiera de los siguientes grupos de algoritmos:

  • XCN_CRYPT_HASH_ALG_OID_GROUP_ID
  • XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID
  • XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID
  • XCN_CRYPT_SIGN_ALG_OID_GROUP_ID
Además, también puede especificar grupos que no contengan algoritmos criptográficos:
  • XCN_CRYPT_RDN_ATTR_OID_GROUP_ID
  • XCN_CRYPT_EXT_OR_ATTR_OID_GROUP_ID
  • XCN_CRYPT_ENHKEY_USAGE_OID_GROUP_ID
  • XCN_CRYPT_POLICY_OID_GROUP_ID
  • XCN_CRYPT_TEMPLATE_OID_GROUP_ID

[in] KeyFlags

Valor de enumeración ObjectIdPublicKeyFlags que especifica si se debe buscar una firma o un algoritmo de cifrado. Puede ser uno de los siguientes valores:

  • XCN_CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
  • XCN_CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
Puede usar cualquiera de los valores para eliminar la ambigüedad entre algoritmos como RSA que se pueden usar para cifrar y firmar mensajes. También debe especificar XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID en el parámetro GroupId .

[in] AlgFlags

Valor de enumeración AlgorithmFlags . Puede ser uno de los siguientes valores:

  • AlgorithmFlagsNone
  • AlgorithmFlagsWrap
Si especifica XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID para el parámetro GroupId , puede usar la enumeración AlgorithmFlags para buscar un OID que se pueda usar para encapsular una clave. Por ejemplo, puede recuperar información sobre el algoritmo AES128wrap si especifica una longitud de bits de 128 (vea la sección Comentarios), establezca el parámetro strAlgorithmName en AES y especifique AlgorithmFlagsWrap.

[in] strAlgorithmName

Variable BSTR que contiene el nombre. Puede especificar un nombre o un OID en formato decimal con puntos. El método comprueba que el formato es coherente con el estándar ASN.1 X.208. Para obtener más información sobre los nombres de algoritmo de CNG, consulte Identificadores de algoritmo de CNG.

Valor devuelto

Si la función se realiza correctamente, la función devuelve S_OK.

Si se produce un error en la función, devuelve un valor HRESULT que indica el error. Entre los valores posibles se incluyen los que se indican en la tabla siguiente, entre otros. Para obtener una lista de códigos de error comunes, consulte Valores HRESULT comunes.

Código o valor devuelto Descripción
CERTSRV_E_PROPERTY_EMPTY
No se encontró la información del OID.
CRYPT_E_UNKNOWN_ALGO
No se reconoce el nombre del algoritmo.
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
El objeto ya se ha inicializado.

Comentarios

Puede usar los 16 bits superiores del parámetro GroupId para especificar el tamaño de clave de los algoritmos que aceptan una longitud de bits variable. Por ejemplo, para inicializar un objeto IObjectId a partir de un algoritmo AES de 192 bits, especifique "AES" para el parámetro strAlgorithmName , deslice la longitud izquierda por 16 y realice una combinación or bit a bit en la longitud de bits desplazada y el valor GroupId .

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado certenroll.h
Archivo DLL CertEnroll.dll

Consulte también

IObjectId