Mapeando identificadores de objeto para algoritmos de criptografia
Observação
Este artigo é específico para aplicativos .NET Framework. Não se aplica a implementações mais recentes do .NET, incluindo o .NET 6 e versões posteriores.
As assinaturas digitais garantem que os dados não sejam adulterados quando são enviados de um programa para outro. Normalmente, a assinatura digital é calculada aplicando uma função matemática ao hash dos dados a serem assinados. Ao formatar um valor de hash a ser assinado, alguns algoritmos de assinatura digital acrescentam um OID (Identificador de Objeto) ASN.1 como parte da operação de formatação. O OID identifica o algoritmo que foi usado para calcular o hash. Você pode mapear algoritmos para identificadores de objeto para estender o mecanismo de criptografia para usar algoritmos personalizados. O exemplo a seguir mostra como mapear um identificador de objeto para um novo algoritmo de hash.
<configuration>
<mscorlib>
<cryptographySettings>
<cryptoNameMapping>
<cryptoClasses>
<cryptoClass MyNewHash="MyNewHashClass, MyAssembly
Culture='en', PublicKeyToken=a5d015c7d5a0b012,
Version=1.0.0.0"/>
</cryptoClasses>
<nameEntry name="NewHash" class="MyNewHash"/>
</cryptoNameMapping>
<oidMap>
<oidEntry OID="1.3.14.33.42.46" name="NewHash"/>
</oidMap>
</cryptographySettings>
</mscorlib>
</configuration>
O elemento <oidEntry> contém dois atributos. O atributo OID é o número do identificador de objeto. O atributo name é o valor do atributo name do elemento <nameEntry>. Deve haver um mapeamento de um nome de algoritmo para uma classe antes que um identificador de objeto possa ser mapeado para um nome simples.