Merge branch 'master' of git://factorcode.org/git/factor
commit
8c366cf746
|
@ -1,5 +0,0 @@
|
|||
USING: kernel math test namespaces crypto crypto-internals ;
|
||||
|
||||
[ 6 ] [ 5 T{ bbs f 590695557939 811977232793 } random-bbs-bits* ] unit-test
|
||||
[ 792723710536787233474130382522 ] [ 100 T{ bbs f 200352954495 846054538649 } [ random-bbs-bits* drop ] 2keep random-bbs-bits* ] unit-test
|
||||
|
|
@ -18,16 +18,16 @@ TUPLE: mysql-result-set ;
|
|||
: mysql-error ( mysql -- )
|
||||
[ mysql_error throw ] when* ;
|
||||
|
||||
: mysql-connect ( mysql-connection -- )
|
||||
new-mysql over set-mysql-db-handle
|
||||
dup {
|
||||
mysql-db-handle
|
||||
mysql-db-host
|
||||
mysql-db-user
|
||||
mysql-db-password
|
||||
mysql-db-db
|
||||
mysql-db-port
|
||||
} get-slots f 0 mysql_real_connect mysql-error ;
|
||||
! : mysql-connect ( mysql-connection -- )
|
||||
! new-mysql over set-mysql-db-handle
|
||||
! dup {
|
||||
! mysql-db-handle
|
||||
! mysql-db-host
|
||||
! mysql-db-user
|
||||
! mysql-db-password
|
||||
! mysql-db-db
|
||||
! mysql-db-port
|
||||
! } get-slots f 0 mysql_real_connect mysql-error ;
|
||||
|
||||
! =========================================================
|
||||
! Low level mysql utility definitions
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
USING: alien alien.syntax combinators kernel parser sequences
|
||||
system words namespaces hashtables init math arrays assocs
|
||||
continuations ;
|
||||
IN: opengl.gl.extensions
|
||||
|
||||
ERROR: unknown-gl-platform ;
|
||||
<< {
|
||||
|
@ -9,7 +10,6 @@ ERROR: unknown-gl-platform ;
|
|||
{ [ os unix? ] [ "opengl.gl.unix" ] }
|
||||
{ [ t ] [ unknown-gl-platform ] }
|
||||
} cond use+ >>
|
||||
IN: opengl.gl.extensions
|
||||
|
||||
SYMBOL: +gl-function-number-counter+
|
||||
SYMBOL: +gl-function-pointers+
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
USING: kernel math tools.test namespaces random
|
||||
random.blum-blum-shub ;
|
||||
IN: blum-blum-shub.tests
|
||||
|
||||
[ 887708070 ] [
|
||||
T{ blum-blum-shub f 590695557939 811977232793 } random-32*
|
||||
] unit-test
|
||||
|
||||
|
||||
[ 887708070 ] [
|
||||
T{ blum-blum-shub f 590695557939 811977232793 } [
|
||||
32 random-bits
|
||||
] with-random
|
||||
] unit-test
|
||||
|
||||
[ 5726770047455156646 ] [
|
||||
T{ blum-blum-shub f 590695557939 811977232793 } [
|
||||
64 random-bits
|
||||
] with-random
|
||||
] unit-test
|
||||
|
||||
[ 3716213681 ]
|
||||
[
|
||||
100 T{ blum-blum-shub f 200352954495 846054538649 } tuck [
|
||||
random-32* drop
|
||||
] curry times
|
||||
random-32*
|
||||
] unit-test
|
|
@ -3,34 +3,26 @@ math.miller-rabin combinators.lib
|
|||
math.functions accessors random ;
|
||||
IN: random.blum-blum-shub
|
||||
|
||||
! TODO: take (log log M) bits instead of 1 bit
|
||||
! Blum Blum Shub, M = pq
|
||||
! Blum Blum Shub, n = pq, x_i+1 = x_i ^ 2 mod n
|
||||
! return low bit of x+1
|
||||
TUPLE: blum-blum-shub x n ;
|
||||
|
||||
C: <blum-blum-shub> blum-blum-shub
|
||||
<PRIVATE
|
||||
|
||||
: generate-bbs-primes ( numbits -- p q )
|
||||
#! two primes congruent to 3 (mod 4)
|
||||
[ [ random-prime ] curry [ 4 mod 3 = ] generate ] dup bi ;
|
||||
|
||||
IN: crypto
|
||||
: <blum-blum-shub> ( numbits -- blum-blum-shub )
|
||||
#! returns a Blum-Blum-Shub tuple
|
||||
generate-bbs-primes *
|
||||
[ find-relative-prime ] keep
|
||||
blum-blum-shub construct-boa ;
|
||||
|
||||
! 256 make-bbs blum-blum-shub set-global
|
||||
|
||||
: next-bbs-bit ( bbs -- bit )
|
||||
#! x = x^2 mod n, return low bit of calculated x
|
||||
[ [ x>> 2 ] [ n>> ] bi ^mod ]
|
||||
[ [ >>x ] keep x>> 1 bitand ] bi ;
|
||||
[ [ x>> 2 ] [ n>> ] bi ^mod ] keep
|
||||
over >>x drop 1 bitand ;
|
||||
|
||||
IN: crypto
|
||||
! : random ( n -- n )
|
||||
! ! #! Cryptographically secure random number using Blum-Blum-Shub 256
|
||||
! [ log2 1+ random-bits ] keep dupd >= [ -1 shift ] when ;
|
||||
PRIVATE>
|
||||
|
||||
M: blum-blum-shub random-32* ( bbs -- r )
|
||||
;
|
||||
0 32 rot
|
||||
[ next-bbs-bit swap 1 shift bitor ] curry times ;
|
||||
|
|
|
@ -7,7 +7,7 @@ vectors words windows.kernel32 windows.gdi32 windows.user32
|
|||
windows.opengl32 windows.messages windows.types windows.nt
|
||||
windows threads libc combinators continuations command-line
|
||||
shuffle opengl ui.render unicode.case ascii math.bitfields
|
||||
locals symbols ;
|
||||
locals symbols accessors ;
|
||||
IN: ui.windows
|
||||
|
||||
SINGLETON: windows-ui-backend
|
||||
|
@ -203,8 +203,18 @@ SYMBOLS: msg-obj class-name-ptr mouse-captured ;
|
|||
wParam keystroke>gesture <key-up>
|
||||
hWnd window-focus send-gesture drop ;
|
||||
|
||||
: set-window-active ( hwnd uMsg wParam lParam ? -- n )
|
||||
>r 4dup r> 2nip nip
|
||||
swap window set-world-active? DefWindowProc ;
|
||||
|
||||
: handle-wm-syscommand ( hWnd uMsg wParam lParam -- n )
|
||||
dup alpha? [ 4drop 0 ] [ DefWindowProc ] if ;
|
||||
{
|
||||
{ [ over SC_MINIMIZE = ] [ f set-window-active ] }
|
||||
{ [ over SC_RESTORE = ] [ t set-window-active ] }
|
||||
{ [ over SC_MAXIMIZE = ] [ t set-window-active ] }
|
||||
{ [ dup alpha? ] [ 4drop 0 ] }
|
||||
{ [ t ] [ DefWindowProc ] }
|
||||
} cond ;
|
||||
|
||||
: cleanup-window ( handle -- )
|
||||
dup win-title [ free ] when*
|
||||
|
|
|
@ -61,6 +61,133 @@ LIBRARY: advapi32
|
|||
: CRYPT_MACHINE_KEYSET HEX: 20 ; inline
|
||||
: CRYPT_SILENT HEX: 40 ; inline
|
||||
|
||||
C-STRUCT: ACL
|
||||
{ "BYTE" "AclRevision" }
|
||||
{ "BYTE" "Sbz1" }
|
||||
{ "WORD" "AclSize" }
|
||||
{ "WORD" "AceCount" }
|
||||
{ "WORD" "Sbz2" } ;
|
||||
|
||||
TYPEDEF: ACL* PACL
|
||||
|
||||
: ACCESS_ALLOWED_ACE_TYPE 0 ; inline
|
||||
: ACCESS_DENIED_ACE_TYPE 1 ; inline
|
||||
: SYSTEM_AUDIT_ACE_TYPE 2 ; inline
|
||||
: SYSTEM_ALARM_ACE_TYPE 3 ; inline
|
||||
|
||||
: OBJECT_INHERIT_ACE HEX: 1 ; inline
|
||||
: CONTAINER_INHERIT_ACE HEX: 2 ; inline
|
||||
: NO_PROPAGATE_INHERIT_ACE HEX: 4 ; inline
|
||||
: INHERIT_ONLY_ACE HEX: 8 ; inline
|
||||
: VALID_INHERIT_FLAGS HEX: f ; inline
|
||||
|
||||
C-STRUCT: ACE_HEADER
|
||||
{ "BYTE" "AceType" }
|
||||
{ "BYTE" "AceFlags" }
|
||||
{ "WORD" "AceSize" } ;
|
||||
|
||||
TYPEDEF: ACE_HEADER* PACE_HEADER
|
||||
|
||||
C-STRUCT: ACCESS_ALLOWED_ACE
|
||||
{ "ACE_HEADER" "Header" }
|
||||
{ "DWORD" "Mask" }
|
||||
{ "DWORD" "SidStart" } ;
|
||||
|
||||
TYPEDEF: ACCESS_ALLOWED_ACE* PACCESS_ALLOWED_ACE
|
||||
|
||||
C-STRUCT: ACCESS_DENIED_ACE
|
||||
{ "ACE_HEADER" "Header" }
|
||||
{ "DWORD" "Mask" }
|
||||
{ "DWORD" "SidStart" } ;
|
||||
TYPEDEF: ACCESS_DENIED_ACE* PACCESS_DENIED_ACE
|
||||
|
||||
|
||||
C-STRUCT: SYSTEM_AUDIT_ACE
|
||||
{ "ACE_HEADER" "Header" }
|
||||
{ "DWORD" "Mask" }
|
||||
{ "DWORD" "SidStart" } ;
|
||||
|
||||
TYPEDEF: SYSTEM_AUDIT_ACE* PSYSTEM_AUDIT_ACE
|
||||
|
||||
C-STRUCT: SYSTEM_ALARM_ACE
|
||||
{ "ACE_HEADER" "Header" }
|
||||
{ "DWORD" "Mask" }
|
||||
{ "DWORD" "SidStart" } ;
|
||||
|
||||
TYPEDEF: SYSTEM_ALARM_ACE* PSYSTEM_ALARM_ACE
|
||||
|
||||
C-STRUCT: ACCESS_ALLOWED_CALLBACK_ACE
|
||||
{ "ACE_HEADER" "Header" }
|
||||
{ "DWORD" "Mask" }
|
||||
{ "DWORD" "SidStart" } ;
|
||||
|
||||
TYPEDEF: ACCESS_ALLOWED_CALLBACK_ACE* PACCESS_ALLOWED_CALLBACK_ACE
|
||||
|
||||
|
||||
! typedef enum _TOKEN_INFORMATION_CLASS {
|
||||
: TokenUser 1 ; inline
|
||||
: TokenGroups 2 ; inline
|
||||
: TokenPrivileges 3 ; inline
|
||||
: TokenOwner 4 ; inline
|
||||
: TokenPrimaryGroup 5 ; inline
|
||||
: TokenDefaultDacl 6 ; inline
|
||||
: TokenSource 7 ; inline
|
||||
: TokenType 8 ; inline
|
||||
: TokenImpersonationLevel 9 ; inline
|
||||
: TokenStatistics 10 ; inline
|
||||
: TokenRestrictedSids 11 ; inline
|
||||
: TokenSessionId 12 ; inline
|
||||
: TokenGroupsAndPrivileges 13 ; inline
|
||||
: TokenSessionReference 14 ; inline
|
||||
: TokenSandBoxInert 15 ; inline
|
||||
! } TOKEN_INFORMATION_CLASS;
|
||||
|
||||
: DELETE HEX: 00010000 ; inline
|
||||
: READ_CONTROL HEX: 00020000 ; inline
|
||||
: WRITE_DAC HEX: 00040000 ; inline
|
||||
: WRITE_OWNER HEX: 00080000 ; inline
|
||||
: SYNCHRONIZE HEX: 00100000 ; inline
|
||||
: STANDARD_RIGHTS_REQUIRED HEX: 000f0000 ; inline
|
||||
|
||||
: STANDARD_RIGHTS_READ READ_CONTROL ; inline
|
||||
: STANDARD_RIGHTS_WRITE READ_CONTROL ; inline
|
||||
: STANDARD_RIGHTS_EXECUTE READ_CONTROL ; inline
|
||||
|
||||
: TOKEN_TOKEN_ADJUST_DEFAULT HEX: 0080 ; inline
|
||||
: TOKEN_ADJUST_GROUPS HEX: 0040 ; inline
|
||||
: TOKEN_ADJUST_PRIVILEGES HEX: 0020 ; inline
|
||||
: TOKEN_ADJUST_SESSIONID HEX: 0100 ; inline
|
||||
: TOKEN_ASSIGN_PRIMARY HEX: 0001 ; inline
|
||||
: TOKEN_DUPLICATE HEX: 0002 ; inline
|
||||
: TOKEN_EXECUTE STANDARD_RIGHTS_EXECUTE ; inline
|
||||
: TOKEN_IMPERSONATE HEX: 0004 ; inline
|
||||
: TOKEN_QUERY HEX: 0008 ; inline
|
||||
: TOKEN_QUERY_SOURCE HEX: 0010 ; inline
|
||||
: TOKEN_ADJUST_DEFAULT HEX: 0080 ; inline
|
||||
: TOKEN_READ STANDARD_RIGHTS_READ TOKEN_QUERY bitor ;
|
||||
|
||||
: TOKEN_WRITE
|
||||
{
|
||||
STANDARD_RIGHTS_WRITE
|
||||
TOKEN_ADJUST_PRIVILEGES
|
||||
TOKEN_ADJUST_GROUPS
|
||||
TOKEN_ADJUST_DEFAULT
|
||||
} flags ; foldable
|
||||
|
||||
: TOKEN_ALL_ACCESS
|
||||
{
|
||||
STANDARD_RIGHTS_REQUIRED
|
||||
TOKEN_ASSIGN_PRIMARY
|
||||
TOKEN_DUPLICATE
|
||||
TOKEN_IMPERSONATE
|
||||
TOKEN_QUERY
|
||||
TOKEN_QUERY_SOURCE
|
||||
TOKEN_ADJUST_PRIVILEGES
|
||||
TOKEN_ADJUST_GROUPS
|
||||
TOKEN_ADJUST_SESSIONID
|
||||
TOKEN_ADJUST_DEFAULT
|
||||
} flags ; foldable
|
||||
|
||||
|
||||
! : I_ScGetCurrentGroupStateW ;
|
||||
! : A_SHAFinal ;
|
||||
|
@ -85,7 +212,7 @@ LIBRARY: advapi32
|
|||
! : AddAccessDeniedAce ;
|
||||
! : AddAccessDeniedAceEx ;
|
||||
! : AddAccessDeniedObjectAce ;
|
||||
! : AddAce ;
|
||||
FUNCTION: BOOL AddAce ( PACL pAcl, DWORD dwAceRevision, DWORD dwStartingAceIndex, LPVOID pAceList, DWORD nAceListLength ) ;
|
||||
! : AddAuditAccessAce ;
|
||||
! : AddAuditAccessAceEx ;
|
||||
! : AddAuditAccessObjectAce ;
|
||||
|
@ -382,7 +509,7 @@ FUNCTION: BOOL GetUserNameW ( LPCTSTR lpBuffer, LPDWORD lpnSize ) ;
|
|||
! : ImpersonateLoggedOnUser ;
|
||||
! : ImpersonateNamedPipeClient ;
|
||||
! : ImpersonateSelf ;
|
||||
! : InitializeAcl ;
|
||||
FUNCTION: BOOL InitializeAcl ( PACL pAcl, DWORD nAclLength, DWORD dwAclRevision ) ;
|
||||
! : InitializeSecurityDescriptor ;
|
||||
! : InitializeSid ;
|
||||
! : InitiateSystemShutdownA ;
|
||||
|
@ -508,70 +635,6 @@ FUNCTION: BOOL LookupPrivilegeValueW ( LPCTSTR lpSystemName,
|
|||
! : OpenEventLogA ;
|
||||
! : OpenEventLogW ;
|
||||
|
||||
! typedef enum _TOKEN_INFORMATION_CLASS {
|
||||
: TokenUser 1 ;
|
||||
: TokenGroups 2 ;
|
||||
: TokenPrivileges 3 ;
|
||||
: TokenOwner 4 ;
|
||||
: TokenPrimaryGroup 5 ;
|
||||
: TokenDefaultDacl 6 ;
|
||||
: TokenSource 7 ;
|
||||
: TokenType 8 ;
|
||||
: TokenImpersonationLevel 9 ;
|
||||
: TokenStatistics 10 ;
|
||||
: TokenRestrictedSids 11 ;
|
||||
: TokenSessionId 12 ;
|
||||
: TokenGroupsAndPrivileges 13 ;
|
||||
: TokenSessionReference 14 ;
|
||||
: TokenSandBoxInert 15 ;
|
||||
! } TOKEN_INFORMATION_CLASS;
|
||||
|
||||
: DELETE HEX: 00010000 ; inline
|
||||
: READ_CONTROL HEX: 00020000 ; inline
|
||||
: WRITE_DAC HEX: 00040000 ; inline
|
||||
: WRITE_OWNER HEX: 00080000 ; inline
|
||||
: SYNCHRONIZE HEX: 00100000 ; inline
|
||||
: STANDARD_RIGHTS_REQUIRED HEX: 000f0000 ; inline
|
||||
|
||||
: STANDARD_RIGHTS_READ READ_CONTROL ; inline
|
||||
: STANDARD_RIGHTS_WRITE READ_CONTROL ; inline
|
||||
: STANDARD_RIGHTS_EXECUTE READ_CONTROL ; inline
|
||||
|
||||
: TOKEN_TOKEN_ADJUST_DEFAULT HEX: 0080 ; inline
|
||||
: TOKEN_ADJUST_GROUPS HEX: 0040 ; inline
|
||||
: TOKEN_ADJUST_PRIVILEGES HEX: 0020 ; inline
|
||||
: TOKEN_ADJUST_SESSIONID HEX: 0100 ; inline
|
||||
: TOKEN_ASSIGN_PRIMARY HEX: 0001 ; inline
|
||||
: TOKEN_DUPLICATE HEX: 0002 ; inline
|
||||
: TOKEN_EXECUTE STANDARD_RIGHTS_EXECUTE ; inline
|
||||
: TOKEN_IMPERSONATE HEX: 0004 ; inline
|
||||
: TOKEN_QUERY HEX: 0008 ; inline
|
||||
: TOKEN_QUERY_SOURCE HEX: 0010 ; inline
|
||||
: TOKEN_ADJUST_DEFAULT HEX: 0080 ; inline
|
||||
: TOKEN_READ STANDARD_RIGHTS_READ TOKEN_QUERY bitor ;
|
||||
|
||||
: TOKEN_WRITE
|
||||
{
|
||||
STANDARD_RIGHTS_WRITE
|
||||
TOKEN_ADJUST_PRIVILEGES
|
||||
TOKEN_ADJUST_GROUPS
|
||||
TOKEN_ADJUST_DEFAULT
|
||||
} flags ; foldable
|
||||
|
||||
: TOKEN_ALL_ACCESS
|
||||
{
|
||||
STANDARD_RIGHTS_REQUIRED
|
||||
TOKEN_ASSIGN_PRIMARY
|
||||
TOKEN_DUPLICATE
|
||||
TOKEN_IMPERSONATE
|
||||
TOKEN_QUERY
|
||||
TOKEN_QUERY_SOURCE
|
||||
TOKEN_ADJUST_PRIVILEGES
|
||||
TOKEN_ADJUST_GROUPS
|
||||
TOKEN_ADJUST_SESSIONID
|
||||
TOKEN_ADJUST_DEFAULT
|
||||
} flags ; foldable
|
||||
|
||||
FUNCTION: BOOL OpenProcessToken ( HANDLE ProcessHandle,
|
||||
DWORD DesiredAccess,
|
||||
PHANDLE TokenHandle ) ;
|
||||
|
|
|
@ -1001,3 +1001,25 @@ windows-messages set-global
|
|||
: LM_GETIDEALHEIGHT WM_USER HEX: 0301 + ; inline
|
||||
: LM_SETITEM WM_USER HEX: 0302 + ; inline
|
||||
: LM_GETITEM WM_USER HEX: 0303 + ; inline
|
||||
|
||||
|
||||
: WA_INACTIVE 0 ; inline
|
||||
: WA_ACTIVE 1 ; inline
|
||||
: WA_CLICKACTIVE 2 ; inline
|
||||
|
||||
: SC_SIZE HEX: f000 ; inline
|
||||
: SC_MOVE HEX: f010 ; inline
|
||||
: SC_MINIMIZE HEX: f020 ; inline
|
||||
: SC_MAXIMIZE HEX: f030 ; inline
|
||||
: SC_NEXTWINDOW HEX: f040 ; inline
|
||||
: SC_PREVWINDOW HEX: f050 ; inline
|
||||
: SC_CLOSE HEX: f060 ; inline
|
||||
: SC_VSCROLL HEX: f070 ; inline
|
||||
: SC_HSCROLL HEX: f080 ; inline
|
||||
: SC_MOUSEMENU HEX: f090 ; inline
|
||||
: SC_KEYMENU HEX: f100 ; inline
|
||||
: SC_ARRANGE HEX: f110 ; inline
|
||||
: SC_RESTORE HEX: f120 ; inline
|
||||
: SC_TASKLIST HEX: f130 ; inline
|
||||
: SC_SCREENSAVE HEX: f140 ; inline
|
||||
: SC_HOTKEY HEX: f150 ; inline
|
||||
|
|
Loading…
Reference in New Issue