Opened 12 years ago

Last modified 11 years ago

#2263 closed Feature Request

Add CryptGenRandom Function to Crypt.au3 UDF — at Version 4

Reported by: wraithdu Owned by:
Milestone: 3.3.9.5 Component: Standard UDFs
Version: Severity: None
Keywords: crypt udf cryptgenrandom Cc:

Description (last modified by guinness)

Here's the function:

; #FUNCTION# ===================================================================
; Name...........: _Crypt_GenRandom
; Description ...: Fill a buffer with cryptographically random data.
; Syntax.........: _Crypt_GenRandom($pBuffer, $iSize)
; Parameters ....: $pBuffer - Pointer to buffer to fill with random data.
;                  $iSize - Size of the buffer pointed to by $pBuffer.
; Return values .: Success - Returns True
;                  Failure - Returns False and sets @error.
; Author ........: Erik Pilsits (wraithdu)
; Modified ......:
; Remarks .......: 
; Related .......: 
; Link ..........: @@MsdnLink@@ CryptGenRandom
; Example .......: Yes
; ==============================================================================
Func _Crypt_GenRandom($pBuffer, $iSize)
    _Crypt_Startup()
    Local $aRet = DllCall(__Crypt_DllHandle(), "bool", "CryptGenRandom", "handle", __Crypt_Context(), "dword", $iSize, "ptr", $pBuffer)
    Local $nError = @error
    _Crypt_Shutdown()
    If $nError Or (Not $aRet[0]) Then
        Return SetError(1, 0, False)
    Else
        Return True
    EndIf
EndFunc   ;==>_Crypt_GenRandom

Change History (4)

comment:1 Changed 12 years ago by TicketCleanup

  • Version 3.3.9.4 deleted

Automatic ticket cleanup.

comment:2 Changed 12 years ago by wraithdu

I goofed a parameter. The first parameter should be $pBuffer.

Also this should be added to the Remarks:

MSDN notes about the buffer: Optionally, the application can fill this buffer with data to use as an auxiliary random seed.

comment:3 Changed 12 years ago by wraithdu

Example:

#include <Crypt.au3>
; generate 16 bytes of random data
Local $buff = DllStructCreate("byte[16]")
_Crypt_GenRandom(DllStructGetPtr($buff), DllStructGetSize($buff))
MsgBox(0, "Random data:", DllStructGetData($buff, 1))

comment:4 Changed 12 years ago by guinness

  • Description modified (diff)
Note: See TracTickets for help on using tickets.