1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2025-12-11 05:43:33 +00:00
Files
MeshAgent/docs/files/ILibCrypto.md
2022-08-27 12:39:12 -07:00

184 lines
5.3 KiB
Markdown

## ILibCrypto.c
### Abstract
ILibCrypto provides cryptographic functions for the Mesh Agent, in a platform agnostic fashion.
### Functions
**util_md5(data, datalen, result)**
Writes the MD5 hash of *data* into *result*
**util_md5hex(data, datalen, result)**
Writes the MD5 hash of *data* into *result* as a HEX string
**util_sha1(data, datalen, result)**
Writes the SHA1 hash of *data* into *result*
**util_tohex(data, len, result)**
Writes *data* into *result* as a HEX string
**util_tohex2(data, len, result)**
Writes *data* into *results* as a HEX string, separating each byte with a colon
**util_tohex_lower(data, len, result)**
Writes *data* into *result* as a lower case HEX string
**util_hexToint(hexString, hexStringLength)**
Converts a HEX string into an integer value
**util_hexToBuf(hexString, hexStringLength, result)**
Writes *hexString* into *result* as an array of bytes
**util_sha256(data, datalen, result)**
Writes the SHA256 hash of *data* into *result*
**util_sha384(data, datalen, result)**
Writes the SHA384 hash of *data* into *result*
**util_sha384file(filename, result)**
Writes the SHA384 hash of the specified file into *result*
// File and data methods
**util_writefile(filename, data, datalen)**
Writes *data* into the specified file, overwriting if the file exists.
**util_appendfile(filename, data, datalen)**
Appends *data* to the end of the specified file
**util_readfile(filename, data, maxlen)**
Reads the specified number of bytes from the specified file
**util_deletefile(filename)**
Deletes the specified file
**util_crc(buffer, len, initial_value)**
Performas a crc on *buffer* using the specified initial crc value
**util_MoveFile(lpExistingFileName, lpNewFileName)**
Moves the specified file to the specified location
**util_CopyFile(lpExistingFileName, lpNewFileName, bFailIfExists)**
Copies the specified file to the specified location
**util_random(length, result)**
Writes *length* number of random bytes into *result*
**util_randomtext(length, result)**
Writes *length* number of random letters into *result*
**SHA512_Init(ctx)**
Initializes a SHA512 context
**SHA384_Init(ctx)**
Initializes a SHA384 context
**SHA256_Init(ctx)**
Initializes a SHA256 context
**SHA1_Init(ctx)**
Initializes a SHA1 context
**MD5_Init(ctx)**
Initializes an MD5 context
**SHA512_Update(ctx, data, len)**
Updates the SHA512 hash with *data*
**SHA384_Update(ctx, data, len)**
Updates the SHA384 hash with *data*
**SHA256_Update(ctx, data, len)**
Updates the SHA256 hash with *data*
**SHA1_Update(ctx, data, len)**
Updates the SHA1 hash with *data*
**MD5_Update(ctx, data, len)**
Updates the MD5 hash with *data*
**SHA512_Final(md, ctx)**
Generates the final SHA512 hash value
**SHA384_Final(md, ctx)**
Generates the final SHA384 hash value
**SHA256_Final(md, ctx)**
Generates the final SHA256 hash value
**SHA1_Final(md, ctx)**
Generates the final SHA1 hash value
**MD5_Final(md, ctx)**
Generates the final MD5 hash value
**util_openssl_init()**
Initialize OpenSSL
**util_openssl_uninit()**
Uninitialize OpenSSL, releases any used resources
**util_free(char* ptr)**
Release resources allocated by *ptr*
// Certificate & crypto methods
**util_freecert(struct util_cert* cert)**
Releases the specified certificate
**util_to_p12(cert, password, data)**
Encodes the specified certificate into *data* as PKCS12
**util_from_p12(data, datalen, password, cert)**
Decodes the specified PKCS12 encoded *data*
**util_to_cer(cert, data)**
Encodes the specified *Cert* into *data* in CER format
**util_from_cer(data, datalen, cert)**
Decodes the CER encoded *data*
**util_from_pem(filename, cert)**
Reads a certificate from the specified PEM file
**util_from_pem_string(data, datalen, cert)**
Reads a certificate from the specified PEM string
**util_from_pkcs7b_string(data, datalen, result, resultLen)**
Decodes the specified pkcs7b string
**util_mkCertEx(rootcert, cert, bits, days, name, certtype, initialcert, noUsages)**
**util_mkCert(rootcert, cert, bits, days, name, certtype, initialcert)**
Generates a certificate using the specified parameters
void __fastcall util_printcert(struct util_cert cert);
void __fastcall util_printcert_pk(struct util_cert cert);
**util_certhash(cert, result)**
**util_certhash2(X509cert, result)**
Writes the SHA384 Digest into *result*
**util_keyhash(cert, result)**
**util_keyhash2(X509cert, result)**
Writes the SHA384 Digest of the public key into *result*
**util_sign(cert, data, datalen, signature)**
Sign this specified *data*. The first 32 bytes of the block must be avaialble to add the certificate hash.
**util_verify(signature, signlen, cert, data)**
Verify the *signature* of *data*. The first 32 bytes of *data* must contain the certificate hash.
**util_encrypt(cert, data, datalen, encdata)**
**util_encrypt2(certs, data, datalen, encdata)**
Encrypt *data* into *encdata*
**util_decrypt(encdata, encdatalen, cert, data)**
Decrypt the specified data block
**util_rsaencrypt(cert, data, datalen, encdata)**
Encrypt a block of data using raw RSA. This is used to handle data in the most compact possible way.
**util_rsadecrypt(cert, data, datalen, decdata)**
Decrypt a block of data using raw RSA
**util_rsaverify(cert, data, datalen, sign, signlen)**
Verify the RSA signature of a block using SHA1 hash