[Mono-dev] Help Finding this Function?
Edward Ned Harvey (mono)
edward.harvey.mono at clevertrove.com
Thu Jun 26 14:11:13 UTC 2014
I wanted to understand where mono RNGCryptoServiceProvider gets random data. So I read its source, I see it uses "extern RngInitialize," so when I search for "RngInitialize," it leads me to "ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_RngInitialize" in rand.c
When I read rand.c, I see that it uses CryptAcquireContext. (First tries to use Intel PIII RNG, and falls back to RSA CSP). But I can't seem to find the definition for CryptAcquireContext. Anybody help?
I search the entire source tree for CryptAcquireContext:
$ grep -lr CryptAcquireContext .
./mcs/class/lib/net_2_0/Mono.Security.Win32.dll
./mcs/class/lib/net_4_0/Mono.Security.Win32.dll
./mcs/class/lib/net_4_5/Mono.Security.Win32.dll
./mcs/class/Mono.Security.Win32/Mono.Security.Cryptography/CapiContext.cs
./mcs/class/Mono.Security.Win32/Mono.Security.Cryptography/CryptoAPI.cs
./mono/metadata/rand.c
I suppose CapiContext.cs and CryptoAPI.cs get built to make Mono.Security.Win32.dll. So that explains having the phrase "CryptAcquireContext" in all 5 of those files ... But none of them, as far as I can tell, supply the definition for the function called in rand.c. Looking in CapiContext.cs and CryptoAPI.cs, I see they both contain the phrase "CryptAcquireContextA" which does not appear to be the same thing as "CryptAcquireContext" which is called by rand.c
More information about the Mono-devel-list
mailing list