Mapeando identificadores de objeto para algoritmos de criptografia

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