Mapeando identificadores de objeto para algoritmos de criptografia
Nota
Este artigo é específico do .NET Framework. Ele 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 identificador de objeto ASN.1 (OID) 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 identificador do 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.