public static EVP_MD_CTX EVP_MD_CTX_new(EVP_HashType hashType) { var ctx = EVP_MD_CTX_new(); var result = EVP_DigestInit_ex(ctx, hashType, IntPtr.Zero); ThrowOnErrorReturnCode(result); return(ctx); }
public unsafe static int HMAC(EVP_HashType evp, ReadOnlySpan <byte> key, ReadOnlySpan <byte> data, Span <byte> output) { fixed(void *keyPtr = &key.DangerousGetPinnableReference()) fixed(void *dataPtr = &data.DangerousGetPinnableReference()) fixed(void *outputPtr = &output.DangerousGetPinnableReference()) { var outputLength = output.Length; var result = HMAC(evp, keyPtr, key.Length, dataPtr, data.Length, outputPtr, ref outputLength); ThrowOnNullPointer(result); return(outputLength); } }
internal OpenSslHash(EVP_HashType hashTypePointer, int size, HashType hashType) { _hashType = hashType; _ctx = EVP_MD_CTX_new(hashTypePointer); _size = size; }
private static extern int EVP_DigestInit_ex(EVP_MD_CTX ctx, EVP_HashType type, IntPtr impl);
private static extern unsafe void *HMAC(EVP_HashType evp_md, void *key, int key_len, void *d, int n, void *md, ref int md_len);