clean up random.windows init hook, and add another crypto provider
parent
46f2515ba8
commit
4edc37b70c
|
@ -1,7 +1,8 @@
|
|||
USING: accessors alien.c-types alien.data byte-arrays
|
||||
combinators.short-circuit continuations destructors init kernel
|
||||
locals namespaces random windows.advapi32 windows.errors
|
||||
windows.kernel32 windows.types math.bitwise ;
|
||||
windows.kernel32 windows.types math.bitwise sequences fry
|
||||
literals ;
|
||||
IN: random.windows
|
||||
|
||||
TUPLE: windows-rng provider type ;
|
||||
|
@ -58,13 +59,23 @@ M: windows-rng random-bytes* ( n tuple -- bytes )
|
|||
[ CryptGenRandom win32-error=0/f ] keep
|
||||
] with-destructors ;
|
||||
|
||||
[
|
||||
MS_DEF_PROV
|
||||
PROV_RSA_FULL <windows-rng> system-random-generator set-global
|
||||
ERROR: no-windows-crypto-provider ;
|
||||
|
||||
[ MS_STRONG_PROV PROV_RSA_FULL <windows-rng> ]
|
||||
[ drop MS_ENH_RSA_AES_PROV PROV_RSA_AES <windows-rng> ] recover
|
||||
secure-random-generator set-global
|
||||
: try-crypto-providers ( seq -- windows-rng )
|
||||
[ first2 <windows-rng> ] try-find drop
|
||||
[ no-windows-crypto-provider ] unless* ;
|
||||
|
||||
[
|
||||
{
|
||||
${ MS_ENHANCED_PROV PROV_RSA_FULL }
|
||||
${ MS_DEF_PROV PROV_RSA_FULL }
|
||||
} try-crypto-providers
|
||||
system-random-generator set-global
|
||||
|
||||
{
|
||||
${ MS_STRONG_PROV PROV_RSA_FULL }
|
||||
${ MS_ENH_RSA_AES_PROV PROV_RSA_AES }
|
||||
} try-crypto-providers secure-random-generator set-global
|
||||
] "random.windows" add-startup-hook
|
||||
|
||||
[
|
||||
|
|
Loading…
Reference in New Issue