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

5.3 KiB

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