Cuando llama a SignData()
o VerifyData()
, debe especificar qué función hash usar (porque las firmas operan en los mensajes hash). Además, con RSA específicamente como se describe en PKCS # 1 , el valor de hash se encapsula dentro de una estructura que contiene el identificador de objeto (OID) de la función hash. Por lo tanto, el método invocado debe asignar la especificación de la función hash proporcionada (que puede ser una cadena) al OID correspondiente y, en Active Directory, debe pasar por el servidor AD (el servidor AD es un tipo de controlador de acceso para tales asignaciones) .
Cuando el código de llamada se ejecuta como una cuenta local, el servidor de AD puede negarse a responder, por lo tanto, la demora.
Esta es una característica errónea de la implementación de .NET: para las funciones hash específicamente, el código debe conocer el OID de las funciones hash que implementa (no hay tantas) y no debería necesitar hablar con el servidor de AD para eso. (estos OID son "conocidos" y están estandarizados, no pueden cambiar a capricho de un administrador de AD).