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
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to