Compartilhar via


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.

Confira também