working on random
parent
9120865157
commit
d823c4a287
|
@ -4,6 +4,8 @@ USING: alien.c-types kernel math namespaces sequences
|
|||
io.backend ;
|
||||
IN: random
|
||||
|
||||
SYMBOL: random-generator
|
||||
|
||||
HOOK: os-crypto-random-bytes io-backend ( n -- byte-array )
|
||||
HOOK: os-random-bytes io-backend ( n -- byte-array )
|
||||
HOOK: os-crypto-random-32 io-backend ( -- r )
|
||||
|
@ -11,16 +13,15 @@ HOOK: os-random-32 io-backend ( -- r )
|
|||
|
||||
GENERIC: seed-random ( tuple seed -- )
|
||||
GENERIC: random-32 ( tuple -- r )
|
||||
GENERIC: random-bytes* ( tuple n -- bytes )
|
||||
|
||||
: (random-bytes) ( tuple n -- byte-array )
|
||||
M: object random-bytes* ( tuple n -- byte-array )
|
||||
[ drop random-32 ] with map >c-uint-array ;
|
||||
|
||||
SYMBOL: random-generator
|
||||
|
||||
: random-bytes ( n -- r )
|
||||
[
|
||||
4 /mod zero? [ 1+ ] unless
|
||||
random-generator get swap (random-bytes)
|
||||
random-generator get swap random-bytes*
|
||||
] keep head ;
|
||||
|
||||
: random ( seq -- elt )
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
USING: accessors alien.c-types byte-arrays continuations
|
||||
kernel random windows windows.advapi32 ;
|
||||
IN: random.windows.cryptographic
|
||||
|
||||
TUPLE: windows-crypto-context handle ;
|
||||
|
||||
C: <windows-crypto-context> windows-crypto-context
|
||||
|
||||
M: windows-crypto-context dispose ( tuple -- )
|
||||
handle>> 0 CryptReleaseContext win32-error=0/f ;
|
||||
|
||||
|
||||
TUPLE: windows-cryptographic-rng context ;
|
||||
|
||||
C: <windows-cryptographic-rng> windows-cryptographic-rng
|
||||
|
||||
M: windows-cryptographic-rng dispose ( tuple -- )
|
||||
context>> dispose ;
|
||||
|
||||
M: windows-cryptographic-rng random-bytes* ( tuple n -- bytes )
|
||||
>r context>> r> dup <byte-array>
|
||||
[ CryptGenRandom win32-error=0/f ] keep ;
|
||||
|
||||
: acquire-aes-context ( -- bytes )
|
||||
"HCRYPTPROV" <c-object>
|
||||
dup f f PROV_RSA_AES CRYPT_NEWKEYSET
|
||||
CryptAcquireContextW win32-error=0/f *void*
|
||||
<windows-crypto-context> ;
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -113,6 +113,7 @@ TYPEDEF: HANDLE HSZ
|
|||
TYPEDEF: HANDLE WINSTA ! MS docs say typedef HANDLE WINSTA ;
|
||||
TYPEDEF: HANDLE HWINSTA ! typo??
|
||||
TYPEDEF: HANDLE HWND
|
||||
TYPEDEF: HANDLE HCRYPTPROV
|
||||
TYPEDEF: WORD LANGID
|
||||
TYPEDEF: DWORD LCID
|
||||
TYPEDEF: DWORD LCTYPE
|
||||
|
|
Loading…
Reference in New Issue