Unit Crypto

From Ultibo.org
Jump to: navigation, search

Return to Unit Reference


Description


Ultibo Crypto Interface unit

Constants



[Expand]
Cipher algorithms CRYPTO_CIPHER_ALG_*


[Expand]
Cipher modes CRYPTO_CIPHER_MODE_*


[Expand]
Hash algorithms CRYPTO_HASH_ALG_*


[Expand]
MD5 digest size MD5_DIGEST_*


[Expand]
AES block size AES_BLOCK_*


[Expand]
AES key size AES_KEY_*


[Expand]
DES block size DES_BLOCK_*


[Expand]
DES key size DES_KEY_*


[Expand]
DES key type DES_KEYTYPE_*


[Expand]
3DES block size DES3_BLOCK_*


[Expand]
3DES key size DES3_KEY_*


[Expand]
SHA1 constants SHA1_*


[Expand]
SHA256 constants SHA256_*


[Expand]
SHA384 constants SHA384_*


[Expand]
SHA512 constants SHA512_*


[Expand]
RSA constants RSA_*


[Expand]
Base64 constants BASE64_*


Type definitions



MD5 digest

[Expand]

PMD5Digest = ^TMD5Digest;

TMD5Digest = array[0..15] of Byte;

MD5 block

[Expand]

PMD5Block = ^TMD5Block;

TMD5Block = record

MD5 context

[Expand]

PMD5Context = ^TMD5Context;

TMD5Context = record

MD5 byte buffer

[Expand]

PMD5ByteBuffer = ^TMD5ByteBuffer;

TMD5ByteBuffer = array[0..63] of Byte;

MD5 long buffer

[Expand]

PMD5LongBuffer = ^TMD5LongBuffer;

TMD5LongBuffer = array[0..15] of LongWord;

AES key

[Expand]

PAESKey = ^TAESKey;

TAESKey = record

AES context

[Expand]

PAESContext = ^TAESContext;

TAESContext = record

DES key

[Expand]

PDESKey = ^TDESKey;

TDESKey = array[0..31] of LongWord;

DES context

[Expand]

PDESContext = ^TDESContext;

TDESContext = record

3DES key

[Expand]

PDES3Key = ^TDES3Key;

TDES3Key = record

3DES context

[Expand]

PDES3Context = ^TDES3Context;

TDES3Context = record

RC4 state

[Expand]

PRC4State = ^TRC4State;

TRC4State = array[0..255] of Byte;

RC4 context

[Expand]

PRC4Context = ^TRC4Context;

TRC4Context = record

SHA1 digest

[Expand]

PSHA1Digest = ^TSHA1Digest;

TSHA1Digest = array[0..19] of Byte;

SHA1 block

[Expand]

PSHA1Block = ^TSHA1Block;

TSHA1Block = record

SHA1 context

[Expand]

PSHA1Context = ^TSHA1Context;

TSHA1Context = record

SHA1 byte buffer

[Expand]

PSHA1ByteBuffer = ^TSHA1ByteBuffer;

TSHA1ByteBuffer = array[0..63] of Byte;

SHA1 long buffer

[Expand]

PSHA1LongBuffer = ^TSHA1LongBuffer;

TSHA1LongBuffer = array[0..15] of LongWord;

SHA256 digest

[Expand]

PSHA256Digest = ^TSHA256Digest;

TSHA256Digest = array[0..31] of Byte;

SHA256 block

[Expand]

PSHA256Block = ^TSHA256Block;

TSHA256Block = record

SHA256 context

[Expand]

PSHA256Context = ^TSHA256Context;

TSHA256Context = record

SHA256 byte buffer

[Expand]

PSHA256ByteBuffer = ^TSHA256ByteBuffer;

TSHA256ByteBuffer = array[0..63] of Byte;

SHA256 long buffer

[Expand]

PSHA256LongBuffer = ^TSHA256LongBuffer;

TSHA256LongBuffer = array[0..15] of LongWord;

SHA256 algorithm

[Expand]

PSHA256_W = ^TSHA256_W;

TSHA256_W = array[0..63] of LongWord;

SHA512 digest

[Expand]

PSHA512Digest = ^TSHA512Digest;

TSHA512Digest = array[0..63] of Byte;

SHA512 block

[Expand]

PSHA512Block = ^TSHA512Block;

TSHA512Block = record

SHA512 context

[Expand]

PSHA512Context = ^TSHA512Context;

TSHA512Context = record

SHA512 byte buffer

[Expand]

PSHA512ByteBuffer = ^TSHA512ByteBuffer;

TSHA512ByteBuffer = array[0..127] of Byte;

SHA512 algorithm

[Expand]

PSHA512_W = ^TSHA512_W;

TSHA512_W = array[0..79] of QWord;

SHA384 digest

[Expand]

PSHA384Digest = ^TSHA384Digest;

TSHA384Digest = array[0..47] of Byte;

SHA384 block

[Expand]

PSHA384Block = PSHA512Block;

TSHA384Block = TSHA512Block;

SHA384 context

[Expand]

PSHA384Context = PSHA512Context;

TSHA384Context = TSHA512Context;

SHA384 byte buffer

[Expand]

PSHA384ByteBuffer = PSHA512ByteBuffer;

TSHA384ByteBuffer = TSHA512ByteBuffer;

RSA context

[Expand]

PRSAContext = ^TRSAContext;

TRSAContext = record

Get random bytes

TGetRandomBytes = function(Buffer:PByte; Count:Integer):Boolean;

Base64 decode table

TBase64DecodeTable = array[0..255] of Char;

Hash context

[Expand]

PHashContext = ^THashContext;

THashContext = record

Cipher context

[Expand]

PCipherContext = ^TCipherContext;

TCipherContext = record


Public variables



Crypto specific variables

CryptoGetRandomBytesHandler:TGetRandomBytes;


Function declarations



Initialization functions

[Expand]
procedure CryptoInit;
Description: To be documented


Crypto functions

[Expand]
function HashCreate(Algorithm:LongWord; Key:Pointer; KeySize:LongWord):PHashContext;
Description: Initialize a hash context based on an algorithm and (if applicable) a key


[Expand]
function HashDestroy(Context:PHashContext):Boolean;
Description: Free a hash context allocated by HashCreate


[Expand]
function HashReset(Context:PHashContext):Boolean;
Description: Clear and reinitialize an existing hash context using the existing algorithm and key


[Expand]
function HashReset(Context:PHashContext; Algorithm:LongWord; Key:Pointer; KeySize:LongWord):Boolean;
Description: Clear and reinitialize an existing hash context using a new algorithm and key


[Expand]
function HashUpdate(Context:PHashContext; Data:Pointer; Size:LongWord):Boolean;
Description: Add a block of data to a hash context


[Expand]
function HashFinish(Context:PHashContext; Digest:Pointer; Size:LongWord):Boolean;
Description: Finalize a hash context and return the digest (Hash) value


[Expand]
function CipherCreate(Algorithm:LongWord; Vector,Key:Pointer; KeySize:LongWord):PCipherContext;
Description: Initialize a cipher context based on an algorithm and a key


[Expand]
function CipherCreate(Algorithm,Mode:LongWord; Nonce,Vector,Key:Pointer; VectorSize,KeySize:LongWord):PCipherContext;
Description: Initialize a cipher context based on an algorithm, mode and key


[Expand]
function CipherDestroy(Context:PCipherContext):Boolean;
Description: Free a cipher context allocated by CipherCreate


[Expand]
function CipherEncrypt(Context:PCipherContext; Plain,Crypt:Pointer; Size:LongWord):Boolean;
Description: Encrypt a block of data using an existing cipher context


[Expand]
function CipherDecrypt(Context:PCipherContext; Crypt,Plain:Pointer; Size:LongWord):Boolean;
Description: Decrypt a block of data using an existing cipher context


MD5 functions

[Expand]
function MD5DigestData(Data:PMD5Block; Digest:PMD5Digest):Boolean;
Description: Generate a 128 bit MD5 digest (Hash) from the supplied data


[Expand]
function MD5DigestString(const Value:String; Digest:PMD5Digest):Boolean;
Description: Generate a 128 bit MD5 digest (Hash) from the supplied string value


[Expand]
function HMACMD5DigestData(const Key:String; Data:PMD5Block; Digest:PMD5Digest):Boolean;
Description: Generate an MD5 HMAC (Hashed Message Authentication Code) using the Key and Data


[Expand]
function HMACMD5DigestData(Key:Pointer; KeySize:LongWord; Data:PMD5Block; Digest:PMD5Digest):Boolean;
Description: Generate an MD5 HMAC (Hashed Message Authentication Code) using the Key and Data


[Expand]
function HMACMD5DigestString(const Key,Value:String; Digest:PMD5Digest):Boolean;
Description: Generate an MD5 HMAC (Hashed Message Authentication Code) using the Key and Value


AES functions

[Expand]
function AESEncryptData(Key:Pointer; KeySize:LongWord; Vector,Plain,Crypt:Pointer; Size:LongWord):Boolean;
Description: Encrypt a block of data using the AES cipher, if Vector is supplied use CBC mode else use ECB


[Expand]
function AESDecryptData(Key:Pointer; KeySize:LongWord; Vector,Crypt,Plain:Pointer; Size:LongWord):Boolean;
Description: Decrypt a block of data using the AES cipher, if Vector is supplied use CBC mode else use ECB


[Expand]
function AESCTREncryptData(Key:Pointer; KeySize:LongWord; Nonce,Plain,Crypt:Pointer; Size:LongWord):Boolean;
Description: Encrypt a block of data with the supplied Key and Nonce using AES CTR mode


[Expand]
function AESCTRDecryptData(Key:Pointer; KeySize:LongWord; Nonce,Crypt,Plain:Pointer; Size:LongWord):Boolean; inline;
Description: Decrypt a block of data with the supplied Key and Nonce using AES CTR mode


[Expand]
function AESGCMEncryptData(Key:Pointer; KeySize:LongWord; IV,AAD,Plain,Crypt:Pointer; IVSize,AADSize,Size:LongWord; Tag:Pointer):Boolean;
Description: Encrypt a block of data with the supplied Key, IV and AAD using AES GCM mode, return the authentication Tag


[Expand]
function AESGCMDecryptData(Key:Pointer; KeySize:LongWord; IV,AAD,Crypt,Plain:Pointer; IVSize,AADSize,Size:LongWord; const Tag:Pointer):Boolean;
Description: Decrypt a block of data with the supplied Key, IV and AAD using AES GCM mode, validate the authentication Tag


[Expand]
function AESGCMGMAC(Key:Pointer; KeySize:LongWord; IV,AAD:Pointer; IVSize,AADSize:LongWord; Tag:Pointer):Boolean;
Description: Generate the GMAC authentication Tag for a given Key, IV and AAD using AES GCM mode


DES functions

[Expand]
function DESEncryptData(Key:Pointer; KeySize:LongWord; Vector,Plain,Crypt:Pointer; Size:LongWord):Boolean;
Description: To be documented


[Expand]
function DESDecryptData(Key:Pointer; KeySize:LongWord; Vector,Crypt,Plain:Pointer; Size:LongWord):Boolean;
Description: To be documented


3DES functions

[Expand]
function DES3EncryptData(Key:Pointer; KeySize:LongWord; Vector,Plain,Crypt:Pointer; Size:LongWord):Boolean;
Description: To be documented


[Expand]
function DES3DecryptData(Key:Pointer; KeySize:LongWord; Vector,Crypt,Plain:Pointer; Size:LongWord):Boolean;
Description: To be documented


RC4 functions

[Expand]
function RC4EncryptData(Key:Pointer; KeySize:LongWord; Plain,Crypt:Pointer; Size,Start:LongWord):Boolean;
Description: Encrypt the supplied data with a key using the RC4 cipher algorithm


[Expand]
function RC4DecryptData(Key:Pointer; KeySize:LongWord; Crypt,Plain:Pointer; Size,Start:LongWord):Boolean; inline;
Description: Encrypt the supplied data with a key using the RC4 cipher algorithm


SHA1 functions

[Expand]
function SHA1DigestData(Data:PSHA1Block; Digest:PSHA1Digest):Boolean;
Description: Generate a 160 bit SHA1 digest (Hash) from the supplied data


[Expand]
function SHA1DigestString(const Value:String; Digest:PSHA1Digest):Boolean;
Description: Generate a 160 bit SHA1 digest (Hash) from the supplied string value


[Expand]
function HMACSHA1DigestData(const Key:String; Data:PSHA1Block; Digest:PSHA1Digest):Boolean;
Description: Generate a SHA1 HMAC (Hashed Message Authentication Code) using the Key and Data


[Expand]
function HMACSHA1DigestData(Key:Pointer; KeySize:LongWord; Data:PSHA1Block; Digest:PSHA1Digest):Boolean;
Description: Generate a SHA1 HMAC (Hashed Message Authentication Code) using the Key and Data


[Expand]
function HMACSHA1DigestString(const Key,Value:String; Digest:PSHA1Digest):Boolean;
Description: Generate a SHA1 HMAC (Hashed Message Authentication Code) using the Key and Value


SHA256 functions

[Expand]
function SHA256DigestData(Data:PSHA256Block; Digest:PSHA256Digest):Boolean;
Description: Generate a 256 bit SHA256 digest (Hash) from the supplied data


[Expand]
function SHA256DigestString(const Value:String; Digest:PSHA256Digest):Boolean;
Description: Generate a 256 bit SHA256 digest (Hash) from the supplied string value


[Expand]
function HMACSHA256DigestData(const Key:String; Data:PSHA256Block; Digest:PSHA256Digest):Boolean;
Description: Generate a SHA256 HMAC (Hashed Message Authentication Code) using the Key and Data


[Expand]
function HMACSHA256DigestData(Key:Pointer; KeySize:LongWord; Data:PSHA256Block; Digest:PSHA256Digest):Boolean;
Description: Generate a SHA256 HMAC (Hashed Message Authentication Code) using the Key and Data


[Expand]
function HMACSHA256DigestString(const Key,Value:String; Digest:PSHA256Digest):Boolean;
Description: Generate a SHA256 HMAC (Hashed Message Authentication Code) using the Key and Value


SHA384 functions

[Expand]
function SHA384DigestData(Data:PSHA384Block; Digest:PSHA384Digest):Boolean;
Description: Generate a 384 bit SHA384 digest (Hash) from the supplied data


[Expand]
function SHA384DigestString(const Value:String; Digest:PSHA384Digest):Boolean;
Description: Generate a 384 bit SHA384 digest (Hash) from the supplied string value


[Expand]
function HMACSHA384DigestData(const Key:String; Data:PSHA384Block; Digest:PSHA384Digest):Boolean;
Description: Generate a SHA384 HMAC (Hashed Message Authentication Code) using the Key and Data


[Expand]
function HMACSHA384DigestData(Key:Pointer; KeySize:LongWord; Data:PSHA384Block; Digest:PSHA384Digest):Boolean;
Description: Generate a SHA384 HMAC (Hashed Message Authentication Code) using the Key and Data


[Expand]
function HMACSHA384DigestString(const Key,Value:String; Digest:PSHA384Digest):Boolean;
Description: Generate a SHA384 HMAC (Hashed Message Authentication Code) using the Key and Value


SHA512 functions

[Expand]
function SHA512DigestData(Data:PSHA512Block; Digest:PSHA512Digest):Boolean;
Description: Generate a 512 bit SHA512 digest (Hash) from the supplied data


[Expand]
function SHA512DigestString(const Value:String; Digest:PSHA512Digest):Boolean;
Description: Generate a 512 bit SHA512 digest (Hash) from the supplied string value


[Expand]
function HMACSHA512DigestData(const Key:String; Data:PSHA512Block; Digest:PSHA512Digest):Boolean;
Description: Generate a SHA512 HMAC (Hashed Message Authentication Code) using the Key and Data


[Expand]
function HMACSHA512DigestData(Key:Pointer; KeySize:LongWord; Data:PSHA512Block; Digest:PSHA512Digest):Boolean;
Description: Generate a SHA512 HMAC (Hashed Message Authentication Code) using the Key and Data


[Expand]
function HMACSHA512DigestString(const Key,Value:String; Digest:PSHA512Digest):Boolean;
Description: Generate a SHA512 HMAC (Hashed Message Authentication Code) using the Key and Value


RSA functions

[Expand]
function RSAInitPrivateKey(Modulus,PublicExp,PrivateExp,P,Q,DP,DQ,QInv:PByte; ModulusLen,PublicExpLen,PrivateExpLen,PLen,QLen,DPLen,DQLen,QInvLen:Integer):PRSAContext;
Description: To be documented


[Expand]
function RSAInitPublicKey(Modulus,PublicExp:PByte; ModulusLen,PublicExpLen:Integer):PRSAContext;
Description: To be documented


[Expand]
function RSAFreeKey(Context:PRSAContext):Boolean;
Description: Free an RSA context containing Private and/or Public keys


[Expand]
function RSAEncryptSign(Context:PRSAContext; const Input:PByte; Len:Integer; Output:PByte; Sign:Boolean):Integer;
Description: Perform PKCS1.5 Encryption or Signing


[Expand]
function RSADecryptVerify(Context:PRSAContext; const Input:PByte; Output:PByte; Len:Integer; Verify:Boolean):Integer;
Description: Perform PKCS1.5 Decryption or Verification


Random functions

[Expand]
function GetRandomBytes(Buffer:PByte; Count:Integer):Boolean;
Description: To be documented


[Expand]
function GetRandomBytesNonZero(Buffer:PByte; Count:Integer):Boolean;
Description: To be documented


CRC functions

[Expand]
function CRC16CCITT(CRC:Word; Data:PByte; Size:LongWord):Word;
Description: To be documented


Base64 functions

[Expand]
function Base64EncodeString(const Value:String):String;
Description: Encode a string using Base64 encoding and return the encoded result


[Expand]
function Base64DecodeString(const Value:String):String;
Description: Decode a Base64 encoded string and return the decoded result


[Expand]
function Base64EncodeBuffer(const Source:PChar; SourceLen:Integer; Dest:PChar; var DestLen:Integer):Boolean;
Description: Encode the source buffer using Base64 encoding and return the encoded result in the destination buffer


[Expand]
function Base64DecodeBuffer(const Source:PChar; SourceLen:Integer; Dest:PChar; var DestLen:Integer):Boolean;
Description: Decode a Base64 encoded source buffer and return the decoded result in the destination buffer


Crypto helper functions

[Expand]
procedure BytesToLE32(Buffer:PByte; Count:LongWord);
Description: Change the byte order of count longwords in the supplied buffer to little endian


[Expand]
procedure BytesToBE32(Buffer:PByte; Count:LongWord);
Description: Change the byte order of count longwords in the supplied buffer to big endian


[Expand]
procedure BytesToLE64(Buffer:PByte; Count:LongWord);
Description: Change the byte order of count quadwords in the supplied buffer to little endian


[Expand]
procedure BytesToBE64(Buffer:PByte; Count:LongWord);
Description: Change the byte order of count quadwords in the supplied buffer to big endian


[Expand]
function LongWordToBE(Buffer:PByte):LongWord; inline;
Description: To be documented


[Expand]
procedure BEToLongWord(Value:LongWord; Buffer:PByte); inline;
Description: To be documented


[Expand]
function QWordToBE(Buffer:PByte):QWord; inline;
Description: To be documented


[Expand]
procedure BEToQWord(Value:QWord; Buffer:PByte); inline;
Description: To be documented


MD5 helper functions

[Expand]
procedure MD5Init(var Context:TMD5Context);
Description: Initialize an MD5 context with constants


[Expand]
procedure MD5Transform(var Context:TMD5Context; Buffer:Pointer);
Description: The core MD5 algorithm, adds an additional 64 Bytes (16 LongWords) to the hash


[Expand]
procedure MD5Update(var Context:TMD5Context; Data:Pointer; Size:LongWord);
Description: Add more bytes to the data buffer, add to the hash in 64 byte chunks


[Expand]
procedure MD5Final(var Context:TMD5Context; var Digest:TMD5Digest);
Description: Finalize the MD5 context by padding to a 64 Byte boundary, adding QWord count of bits processed and copying the hash to the digest


[Expand]
function MD5DigestToString(Digest:PMD5Digest):String;
Description: To be documented


AES helper functions

[Expand]
function AESKeySetup(Key:Pointer; KeySize:LongWord; AESKey:PAESKey):Boolean;
Description: Create a pair of AES keys using the supplied key


[Expand]
procedure AESEncryptBlock(Plain,Crypt:Pointer; AESKey:PAESKey);
Description: AES Encrypt a 16 byte (128 bit) block of data using the supplied key


[Expand]
procedure AESDecryptBlock(Crypt,Plain:Pointer; AESKey:PAESKey);
Description: AES Decrypt a 16 byte (128 bit) block of data using the supplied key


DES helper functions

[Expand]
procedure DESCook(Raw1:PLongWord; Key:PDESKey);
Description: To be documented


[Expand]
procedure DESKey(Key:PByte; KeyType:LongWord; CryptKey:PDESKey);
Description: To be documented


[Expand]
procedure DESProcess(Block,Key:PLongWord);
Description: To be documented


[Expand]
function DESKeySetup(Key:Pointer; KeySize:LongWord; EncryptKey,DecryptKey:PDESKey):Boolean;
Description: To be documented


[Expand]
procedure DESEncryptBlock(Plain,Crypt:Pointer; EncryptKey:PDESKey);
Description: To be documented


[Expand]
procedure DESDecryptBlock(Crypt,Plain:Pointer; DecryptKey:PDESKey);
Description: To be documented


3DES helper functions

[Expand]
function DES3KeySetup(Key:Pointer; KeySize:LongWord; DES3Key:PDES3Key):Boolean;
Description: To be documented


[Expand]
procedure DES3EncryptBlock(Plain,Crypt:Pointer; DES3Key:PDES3Key);
Description: To be documented


[Expand]
procedure DES3DecryptBlock(Crypt,Plain:Pointer; DES3Key:PDES3Key);
Description: To be documented


SHA1 helper functions

[Expand]
procedure SHA1Init(var Context:TSHA1Context);
Description: Initialize a SHA1 context with constants


[Expand]
procedure SHA1Transform(var Context:TSHA1Context; Buffer:Pointer);
Description: The core SHA1 algorithm, adds an additional 64 Bytes (512 bits) to the hash


[Expand]
procedure SHA1Update(var Context:TSHA1Context; Data:Pointer; Size:LongWord);
Description: Add more bytes to the data buffer, add to the hash in 64 byte chunks


[Expand]
procedure SHA1Final(var Context:TSHA1Context; var Digest:TSHA1Digest);
Description: Finalize the SHA1 context by padding to a 64 Byte boundary, adding QWord count of bits processed and copying the hash to the digest


[Expand]
function SHA1DigestToString(Digest:PSHA1Digest):String;
Description: To be documented


SHA256 helper functions

[Expand]
procedure SHA256Init(var Context:TSHA256Context);
Description: Initialize a SHA256 context with constants


[Expand]
procedure SHA256Compress(var Context:TSHA256Context; Buffer:Pointer);
Description: The core SHA256 algorithm, adds an additional 64 Bytes (512 bits) to the hash


[Expand]
procedure SHA256Process(var Context:TSHA256Context; Data:Pointer; Size:LongWord);
Description: Add more bytes to the data buffer, add to the hash in 64 byte chunks


[Expand]
procedure SHA256Complete(var Context:TSHA256Context; var Digest:TSHA256Digest);
Description: Finalize the SHA256 context by padding to a 64 Byte boundary, adding QWord count of bits processed and copying the hash to the digest


[Expand]
function SHA256DigestToString(Digest:PSHA256Digest):String;
Description: To be documented


SHA384 helper functions

[Expand]
procedure SHA384Init(var Context:TSHA384Context);
Description: Initialize a SHA384 context with constants


[Expand]
procedure SHA384Process(var Context:TSHA384Context; Data:Pointer; Size:LongWord);
Description: Add more bytes to the data buffer, add to the hash in 128 byte chunks


[Expand]
procedure SHA384Complete(var Context:TSHA384Context; var Digest:TSHA384Digest);
Description: Finalize the SHA384 context by padding to a 128 Byte boundary, adding QWord count of bits processed and copying the hash to the digest


[Expand]
function SHA384DigestToString(Digest:PSHA384Digest):String;
Description: To be documented


SHA512 helper functions

[Expand]
procedure SHA512Init(var Context:TSHA512Context);
Description: Initialize a SHA512 context with constants


[Expand]
procedure SHA512Compress(var Context:TSHA512Context; Buffer:Pointer);
Description: The core SHA512 algorithm, adds an additional 128 Bytes (1024 bits) to the hash


[Expand]
procedure SHA512Process(var Context:TSHA512Context; Data:Pointer; Size:LongWord);
Description: Add more bytes to the data buffer, add to the hash in 128 byte chunks


[Expand]
procedure SHA512Complete(var Context:TSHA512Context; var Digest:TSHA512Digest);
Description: Finalize the SHA512 context by padding to a 128 Byte boundary, adding QWord count of bits processed and copying the hash to the digest


[Expand]
function SHA512DigestToString(Digest:PSHA512Digest):String;
Description: To be documented


Base64 helper functions

[Expand]
procedure Base64InitTables;
Description: To be documented


Return to Unit Reference