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> ;
|
||||
|
|
@ -2,6 +2,32 @@ USING: alien.syntax kernel math windows.types math.bitfields ;
|
|||
IN: windows.advapi32
|
||||
LIBRARY: advapi32
|
||||
|
||||
: PROV_RSA_FULL 1 ; inline
|
||||
: PROV_RSA_SIG 2 ; inline
|
||||
: PROV_DSS 3 ; inline
|
||||
: PROV_FORTEZZA 4 ; inline
|
||||
: PROV_MS_EXCHANGE 5 ; inline
|
||||
: PROV_SSL 6 ; inline
|
||||
: PROV_RSA_SCHANNEL 12 ; inline
|
||||
: PROV_DSS_DH 13 ; inline
|
||||
: PROV_EC_ECDSA_SIG 14 ; inline
|
||||
: PROV_EC_ECNRA_SIG 15 ; inline
|
||||
: PROV_EC_ECDSA_FULL 16 ; inline
|
||||
: PROV_EC_ECNRA_FULL 17 ; inline
|
||||
: PROV_DH_SCHANNEL 18 ; inline
|
||||
: PROV_SPYRUS_LYNKS 20 ; inline
|
||||
: PROV_RNG 21 ; inline
|
||||
: PROV_INTEL_SEC 22 ; inline
|
||||
: PROV_REPLACE_OWF 23 ; inline
|
||||
: PROV_RSA_AES 24 ; inline
|
||||
|
||||
: CRYPT_VERIFYCONTEXT HEX: F0000000 ; inline
|
||||
: CRYPT_NEWKEYSET HEX: 8 ; inline
|
||||
: CRYPT_DELETEKEYSET HEX: 10 ; inline
|
||||
: CRYPT_MACHINE_KEYSET HEX: 20 ; inline
|
||||
: CRYPT_SILENT HEX: 40 ; inline
|
||||
|
||||
|
||||
! : I_ScGetCurrentGroupStateW ;
|
||||
! : A_SHAFinal ;
|
||||
! : A_SHAInit ;
|
||||
|
@ -143,7 +169,13 @@ FUNCTION: BOOL AdjustTokenPrivileges ( HANDLE TokenHandle,
|
|||
! : CredpDecodeCredential ;
|
||||
! : CredpEncodeCredential ;
|
||||
! : CryptAcquireContextA ;
|
||||
! : CryptAcquireContextW ;
|
||||
FUNCTION: BOOL CryptAcquireContextW ( HCRYPTPROV* phProv,
|
||||
LPCTSTR pszContainer,
|
||||
LPCTSTR pszProvider,
|
||||
DWORD dwProvType,
|
||||
DWORD dwFlags ) ;
|
||||
|
||||
: CryptAcquireContext CryptAcquireContextW ;
|
||||
! : CryptContextAddRef ;
|
||||
! : CryptCreateHash ;
|
||||
! : CryptDecrypt ;
|
||||
|
@ -159,7 +191,7 @@ FUNCTION: BOOL AdjustTokenPrivileges ( HANDLE TokenHandle,
|
|||
! : CryptEnumProvidersW ;
|
||||
! : CryptExportKey ;
|
||||
! : CryptGenKey ;
|
||||
! : CryptGenRandom ;
|
||||
FUNCTION: BOOL CryptGenRandom ( HCRYPTPROV hProv, DWORD dwLen, BYTE* pbBuffer ) ;
|
||||
! : CryptGetDefaultProviderA ;
|
||||
! : CryptGetDefaultProviderW ;
|
||||
! : CryptGetHashParam ;
|
||||
|
@ -169,7 +201,7 @@ FUNCTION: BOOL AdjustTokenPrivileges ( HANDLE TokenHandle,
|
|||
! : CryptHashData ;
|
||||
! : CryptHashSessionKey ;
|
||||
! : CryptImportKey ;
|
||||
! : CryptReleaseContext ;
|
||||
FUNCTION: BOOL CryptReleaseContext ( HCRYPTPROV hProv, DWORD dwFlags ) ;
|
||||
! : CryptSetHashParam ;
|
||||
! : CryptSetKeyParam ;
|
||||
! : CryptSetProvParam ;
|
||||
|
|
|
@ -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