Compartilhar via


Extensões criptográficas de assinatura digital XML

O CryptXML permite que os desenvolvedores estendam algoritmos criptográficos com suporte nativo registrando uma DLL de extensão criptográfica em todo o sistema. As DLLs de extensão estendem os algoritmos compatíveis com os elementos XML SignatureMethod e DigestMethod . As DLLs de extensão podem dar suporte a algoritmos que codificam parâmetros adicionais na assinatura digital XML.

Todas as DLLs de extensões devem dar suporte à função CryptXmlDllGetInterface , que retorna um ponteiro para uma estrutura CRYPT_XML_CRYPTOGRAPHIC_INTERFACE . Essa estrutura fornece ponteiros de função para funções de extensão criptográfica implementadas. As funções com suporte dependem do tipo de algoritmo criptográfico com suporte e se o algoritmo deve codificar parâmetros na assinatura digital XML.

As funções de extensões criptográficas incluem os seguintes ponteiros de função:

Funções necessárias

Funções do Método Digest

Funções do método Signature

Para algoritmos com parâmetros codificados padrão

As DLLs de extensão criptográfica são registradas em todo o sistema. Os privilégios de administrador são necessários para registrar uma DLL de extensão criptográfica.

Todas as extensões criptográficas CryptXML são registradas pelo valor de URI definido no campo SignatureMethod ou no campo de atributo de algoritmo do elemento DigestMethod .

Os caminhos do Registro para as DLLs de extensão são os seguintes:

32 bits

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\CryptXML\URI\{uri}

64 bits

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\CryptXML\URI\{uri}

HKEY_LOCAL_MACHINE\SOFTWARE\\ WOW6432NODEMicrosoft\Cryptography\CryptXML\URI\{uri}

Cada chave contém as configurações a seguir.

Nome Tipo Dados
DLL
Cadeia de caracteres expansível
Obrigatórios.
O caminho absoluto para a DLL do provedor criptográfico XML.
**Observação: **Recomendamos que as DLLs de extensão criptográfica estejam localizadas em diretórios que só podem ser gravados por aplicativos com privilégio administrativo.
LoadLibrary é usado para carregar a DLL de extensão criptográfica.
Nome
Cadeia de caracteres Opcional.
O nome de exibição associado a esse URI.
GroupId
DWORD Obrigatórios.
O identificador de grupo associado a esse algoritmo criptográfico. Os valores possíveis incluem o seguinte:CRYPT_XML_GROUP_ID_HASH<strong> = 1
< CRYPT_XML_GROUP_ID_SIGNstrong> = 2
CNGAlgid
Cadeia de caracteres Obrigatórios.
O nome do algoritmo CNG a ser passado para funções BCrypt ou NCrypt.
CNGExtraAlgid
Cadeia de caracteres Opcional.
Uma cadeia de caracteres de algoritmo extra, diferente da cadeia de caracteres no membro CNGAlgid, que pode ser passada para as funções CNG.
Para os algoritmos de assinatura (CRYPT_XML_GROUP_ID_SIGN), esse membro é a cadeia de caracteres de algoritmo de chave pública a ser passada para as funções CNG.
Para os outros valores de GroupId, defina o membro pwszCNGExtraAlgid como a cadeia de caracteres vazia, L"".

 

Algoritmos criptográficos de assinatura digital XML