Unit Crypto

From Ultibo.org
Revision as of 05:19, 30 March 2018 by Ultibo (Talk | contribs)

Jump to: navigation, search

Return to Unit Reference


Description


Ultibo Crypto interface unit

To be documented

Constants



[Expand]
Crypto cipher algorithms CRYPTO_CIPHER_ALG_*


[Expand]
Crypto cipher modes CRYPTO_CIPHER_MODE_*


[Expand]
Crypto hash algorithms CRYPTO_HASH_ALG_*


[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]
MIME64 constants MIME64_*


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;

Hash context

[Expand]

PHashContext = ^THashContext;

THashContext = record

Cipher context

[Expand]

PCipherContext = ^TCipherContext;

TCipherContext = record


Public variables



Crypto specific variables

CryptoInitialized:Boolean;

MIME64 variables

MIME64DecodingTable:String;


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 an optional key


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


[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 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 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: To be documented


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


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: Decrypt 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 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 HMACSHA256DigestString(const Key,Value:String; Digest:PSHA256Digest):Boolean;
Description: Generate a SHA256 HMAC (Hashed Message Authentication Code) using the Key and Value


CRC functions

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


MIME64 functions

[Expand]
function MIME64EncodeString(const AValue:String):String;
Description: To be documented


[Expand]
function MIME64DecodeString(const AValue:String):String;
Description: To be documented


Crypto helper functions

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


[Expand]
procedure BytesToBE(Buffer:PByte; Count:LongWord);
Description: Change the byte order of count longwords 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


MD5 helper functions

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


[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]
procedure MD5Transform(var Context:TMD5Context; Buffer:Pointer);
Description: The core MD5 algorithm, adds an additional 64 Bytes (16 LongWords) to the hash


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


AES helper functions

[Expand]
function AESTE0(I:Byte):LongWord; inline;
Description: To be documented


[Expand]
function AESTE1(I:Byte):LongWord; inline;
Description: To be documented


[Expand]
function AESTE2(I:Byte):LongWord; inline;
Description: To be documented


[Expand]
function AESTE3(I:Byte):LongWord; inline;
Description: To be documented


[Expand]
function AESTD0(I:Byte):LongWord; inline;
Description: To be documented


[Expand]
function AESTD1(I:Byte):LongWord; inline;
Description: To be documented


[Expand]
function AESTD2(I:Byte):LongWord; inline;
Description: To be documented


[Expand]
function AESTD3(I:Byte):LongWord; inline;
Description: To be documented


[Expand]
function AESTE4_0(I:Byte):LongWord; inline;
Description: To be documented


[Expand]
function AESTE4_1(I:Byte):LongWord; inline;
Description: To be documented


[Expand]
function AESTE4_2(I:Byte):LongWord; inline;
Description: To be documented


[Expand]
function AESTE4_3(I:Byte):LongWord; inline;
Description: To be documented


[Expand]
function AESByte(X,N:LongWord):Byte; inline;
Description: To be documented


[Expand]
function AESKeySetup(Key:Pointer; KeySize:LongWord; AESKey:PAESKey):Boolean;
Description: To be documented


[Expand]
procedure AESEncryptBlock(Plain,Crypt:Pointer; AESKey:PAESKey);
Description: To be documented


[Expand]
procedure AESDecryptBlock(Crypt,Plain:Pointer; AESKey:PAESKey);
Description: To be documented


DES helper functions

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


[Expand]
procedure DESCook(Raw1:PLongWord; Key: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 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]
procedure SHA1Transform(var Context:TSHA1Context; Buffer:Pointer);
Description: The core SHA1 algorithm, adds an additional 64 Bytes (512 bits) to the hash


[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 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]
procedure SHA256Compress(var Context:TSHA256Context; Buffer:Pointer);
Description: The core SHA256 algorithm, adds an additional 64 Bytes (512 bits) to the hash


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


MIME64 helper functions

[Expand]
procedure MIME64InitTables;
Description: To be documented


Return to Unit Reference