Quando chiami SignData()
o VerifyData()
, devi specificare quale funzione hash usare (perché le firme funzionano sui messaggi con hash). Inoltre, con RSA specificamente come descritto da PKCS # 1 , il valore di hash è incapsulato all'interno di una struttura che contiene l' identificatore di oggetto (OID) della funzione di hash. Il metodo invocato deve quindi eseguire il mapping della specifica della funzione hash (che può essere una stringa) all'OID corrispondente e, in Active Directory, deve passare attraverso il server AD (il server AD è una sorta di gatekeeper per tali mapping) .
Quando il codice chiamante viene eseguito come account locale, il server AD potrebbe rifiutarsi di rispondere, quindi il ritardo.
Questa è una disfunzione dell'implementazione .NET: per le funzioni hash specifiche, il codice dovrebbe conoscere l'OID delle funzioni hash implementate (non ce ne sono così tante) e non dovrebbe essere necessario parlare al server AD per quello (questi OID sono "ben conosciuti" e standardizzati, non possono essere modificati a piacimento di un amministratore AD).