JNI: non-FIPS wrappers for MD5 and SHA/256/384/512

pull/2/merge
Chris Conlon 2017-03-16 13:09:16 -06:00
parent 85af1fffbf
commit 43dfb96ab7
12 changed files with 1469 additions and 0 deletions

View File

@ -21,6 +21,54 @@ extern "C" {
JNIEXPORT jlong JNICALL Java_com_wolfssl_wolfcrypt_Md5_mallocNativeStruct
(JNIEnv *, jobject);
/*
* Class: com_wolfssl_wolfcrypt_Md5
* Method: initMd5
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Md5_initMd5
(JNIEnv *, jobject);
/*
* Class: com_wolfssl_wolfcrypt_Md5
* Method: md5Update
* Signature: (Ljava/nio/ByteBuffer;J)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Md5_md5Update__Ljava_nio_ByteBuffer_2J
(JNIEnv *, jobject, jobject, jlong);
/*
* Class: com_wolfssl_wolfcrypt_Md5
* Method: md5Update
* Signature: ([BJ)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Md5_md5Update___3BJ
(JNIEnv *, jobject, jbyteArray, jlong);
/*
* Class: com_wolfssl_wolfcrypt_Md5
* Method: md5Update
* Signature: ([BII)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Md5_md5Update___3BII
(JNIEnv *, jobject, jbyteArray, jint, jint);
/*
* Class: com_wolfssl_wolfcrypt_Md5
* Method: md5Final
* Signature: (Ljava/nio/ByteBuffer;)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Md5_md5Final__Ljava_nio_ByteBuffer_2
(JNIEnv *, jobject, jobject);
/*
* Class: com_wolfssl_wolfcrypt_Md5
* Method: md5Final
* Signature: ([B)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Md5_md5Final___3B
(JNIEnv *, jobject, jbyteArray);
#ifdef __cplusplus
}
#endif

View File

@ -21,6 +21,54 @@ extern "C" {
JNIEXPORT jlong JNICALL Java_com_wolfssl_wolfcrypt_Sha_mallocNativeStruct
(JNIEnv *, jobject);
/*
* Class: com_wolfssl_wolfcrypt_Sha
* Method: initSha
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha_initSha
(JNIEnv *, jobject);
/*
* Class: com_wolfssl_wolfcrypt_Sha
* Method: shaUpdate
* Signature: (Ljava/nio/ByteBuffer;J)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha_shaUpdate__Ljava_nio_ByteBuffer_2J
(JNIEnv *, jobject, jobject, jlong);
/*
* Class: com_wolfssl_wolfcrypt_Sha
* Method: shaUpdate
* Signature: ([BJ)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha_shaUpdate___3BJ
(JNIEnv *, jobject, jbyteArray, jlong);
/*
* Class: com_wolfssl_wolfcrypt_Sha
* Method: shaUpdate
* Signature: ([BII)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha_shaUpdate___3BII
(JNIEnv *, jobject, jbyteArray, jint, jint);
/*
* Class: com_wolfssl_wolfcrypt_Sha
* Method: shaFinal
* Signature: (Ljava/nio/ByteBuffer;)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha_shaFinal__Ljava_nio_ByteBuffer_2
(JNIEnv *, jobject, jobject);
/*
* Class: com_wolfssl_wolfcrypt_Sha
* Method: shaFinal
* Signature: ([B)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha_shaFinal___3B
(JNIEnv *, jobject, jbyteArray);
#ifdef __cplusplus
}
#endif

View File

@ -21,6 +21,54 @@ extern "C" {
JNIEXPORT jlong JNICALL Java_com_wolfssl_wolfcrypt_Sha256_mallocNativeStruct
(JNIEnv *, jobject);
/*
* Class: com_wolfssl_wolfcrypt_Sha256
* Method: initSha256
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha256_initSha256
(JNIEnv *, jobject);
/*
* Class: com_wolfssl_wolfcrypt_Sha256
* Method: sha256Update
* Signature: (Ljava/nio/ByteBuffer;J)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha256_sha256Update__Ljava_nio_ByteBuffer_2J
(JNIEnv *, jobject, jobject, jlong);
/*
* Class: com_wolfssl_wolfcrypt_Sha256
* Method: sha256Update
* Signature: ([BJ)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha256_sha256Update___3BJ
(JNIEnv *, jobject, jbyteArray, jlong);
/*
* Class: com_wolfssl_wolfcrypt_Sha256
* Method: sha256Update
* Signature: ([BII)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha256_sha256Update___3BII
(JNIEnv *, jobject, jbyteArray, jint, jint);
/*
* Class: com_wolfssl_wolfcrypt_Sha256
* Method: sha256Final
* Signature: (Ljava/nio/ByteBuffer;)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha256_sha256Final__Ljava_nio_ByteBuffer_2
(JNIEnv *, jobject, jobject);
/*
* Class: com_wolfssl_wolfcrypt_Sha256
* Method: sha256Final
* Signature: ([B)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha256_sha256Final___3B
(JNIEnv *, jobject, jbyteArray);
#ifdef __cplusplus
}
#endif

View File

@ -21,6 +21,54 @@ extern "C" {
JNIEXPORT jlong JNICALL Java_com_wolfssl_wolfcrypt_Sha384_mallocNativeStruct
(JNIEnv *, jobject);
/*
* Class: com_wolfssl_wolfcrypt_Sha384
* Method: initSha384
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha384_initSha384
(JNIEnv *, jobject);
/*
* Class: com_wolfssl_wolfcrypt_Sha384
* Method: sha384Update
* Signature: (Ljava/nio/ByteBuffer;J)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha384_sha384Update__Ljava_nio_ByteBuffer_2J
(JNIEnv *, jobject, jobject, jlong);
/*
* Class: com_wolfssl_wolfcrypt_Sha384
* Method: sha384Update
* Signature: ([BJ)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha384_sha384Update___3BJ
(JNIEnv *, jobject, jbyteArray, jlong);
/*
* Class: com_wolfssl_wolfcrypt_Sha384
* Method: sha384Update
* Signature: ([BII)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha384_sha384Update___3BII
(JNIEnv *, jobject, jbyteArray, jint, jint);
/*
* Class: com_wolfssl_wolfcrypt_Sha384
* Method: sha384Final
* Signature: (Ljava/nio/ByteBuffer;)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha384_sha384Final__Ljava_nio_ByteBuffer_2
(JNIEnv *, jobject, jobject);
/*
* Class: com_wolfssl_wolfcrypt_Sha384
* Method: sha384Final
* Signature: ([B)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha384_sha384Final___3B
(JNIEnv *, jobject, jbyteArray);
#ifdef __cplusplus
}
#endif

View File

@ -21,6 +21,54 @@ extern "C" {
JNIEXPORT jlong JNICALL Java_com_wolfssl_wolfcrypt_Sha512_mallocNativeStruct
(JNIEnv *, jobject);
/*
* Class: com_wolfssl_wolfcrypt_Sha512
* Method: initSha512
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha512_initSha512
(JNIEnv *, jobject);
/*
* Class: com_wolfssl_wolfcrypt_Sha512
* Method: sha512Update
* Signature: (Ljava/nio/ByteBuffer;J)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha512_sha512Update__Ljava_nio_ByteBuffer_2J
(JNIEnv *, jobject, jobject, jlong);
/*
* Class: com_wolfssl_wolfcrypt_Sha512
* Method: sha512Update
* Signature: ([BJ)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha512_sha512Update___3BJ
(JNIEnv *, jobject, jbyteArray, jlong);
/*
* Class: com_wolfssl_wolfcrypt_Sha512
* Method: sha512Update
* Signature: ([BII)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha512_sha512Update___3BII
(JNIEnv *, jobject, jbyteArray, jint, jint);
/*
* Class: com_wolfssl_wolfcrypt_Sha512
* Method: sha512Final
* Signature: (Ljava/nio/ByteBuffer;)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha512_sha512Final__Ljava_nio_ByteBuffer_2
(JNIEnv *, jobject, jobject);
/*
* Class: com_wolfssl_wolfcrypt_Sha512
* Method: sha512Final
* Signature: ([B)V
*/
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha512_sha512Final___3B
(JNIEnv *, jobject, jbyteArray);
#ifdef __cplusplus
}
#endif

View File

@ -22,9 +22,12 @@
#ifndef __ANDROID__
#include <wolfssl/options.h>
#endif
#include <wolfssl/wolfcrypt/error-crypt.h>
#include <wolfssl/wolfcrypt/md5.h>
#include <com_wolfssl_wolfcrypt_Md5.h>
#include <com_wolfssl_wolfcrypt_WolfCrypt.h>
#include <wolfcrypt_jni_NativeStruct.h>
#include <wolfcrypt_jni_error.h>
/* #define WOLFCRYPT_JNI_DEBUG_ON */
@ -50,3 +53,138 @@ JNIEXPORT jlong JNICALL Java_com_wolfssl_wolfcrypt_Md5_mallocNativeStruct(
return ret;
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Md5_initMd5
(JNIEnv* env, jobject class)
{
#ifndef NO_MD5
Md5* md5 = (Md5*) getNativeStruct(env, class);
if (!md5)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
wc_InitMd5(md5);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Md5_md5Update__Ljava_nio_ByteBuffer_2J
(JNIEnv* env, jobject class, jobject data_buffer, jlong len)
{
#ifndef NO_MD5
Md5* md5 = (Md5*) getNativeStruct(env, class);
byte* data = getDirectBufferAddress(env, data_buffer);
if (!md5 || !data)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
wc_Md5Update(md5, data, len);
LogStr("wc_Md5Update(md5=%p, data, len)\n", md5);
LogStr("data[%u]: [%p]\n", (word32)len, data);
LogHex(data, len);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Md5_md5Update___3BJ
(JNIEnv* env, jobject class, jbyteArray data_buffer, jlong len)
{
#ifndef NO_MD5
Md5* md5 = (Md5*) getNativeStruct(env, class);
byte* data = getByteArray(env, data_buffer);
if (!md5 || !data)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
wc_Md5Update(md5, data, len);
LogStr("wc_Md5Update(md5=%p, data, len)\n", md5);
LogStr("data[%u]: [%p]\n", (word32)len, data);
LogHex(data, len);
releaseByteArray(env, data_buffer, data, 1);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Md5_md5Update___3BII
(JNIEnv* env, jobject class, jbyteArray data_buffer, jint offset,
jint len)
{
#ifndef NO_MD5
Md5* md5 = (Md5*) getNativeStruct(env, class);
byte* data = getByteArray(env, data_buffer);
if (!md5 || !data || (offset > len))
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
wc_Md5Update(md5, data + offset, len);
LogStr("wc_Md5Update(md5=%p, data, len)\n", md5);
LogStr("data[%u]: [%p]\n", (word32)len, data + offset);
LogHex(data + offset, len);
releaseByteArray(env, data_buffer, data, 0);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Md5_md5Final__Ljava_nio_ByteBuffer_2
(JNIEnv* env, jobject class, jobject hash_buffer)
{
#ifndef NO_MD5
Md5* md5 = (Md5*) getNativeStruct(env, class);
byte* hash = getDirectBufferAddress(env, hash_buffer);
if (!md5 || !hash)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
wc_Md5Final(md5, hash);
LogStr("wc_Md5Final(md5=%p, hash)\n", md5);
LogStr("hash[%u]: [%p]\n", (word32)MD5_DIGEST_SIZE, hash);
LogHex(hash, MD5_DIGEST_SIZE);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Md5_md5Final___3B
(JNIEnv* env, jobject class, jbyteArray hash_buffer)
{
#ifndef NO_MD5
Md5* md5 = (Md5*) getNativeStruct(env, class);
byte* hash = getByteArray(env, hash_buffer);
if (!md5 || !hash)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
wc_Md5Final(md5, hash);
LogStr("wc_Md5Final(md5=%p, hash)\n", md5);
LogStr("hash[%u]: [%p]\n", (word32)MD5_DIGEST_SIZE, hash);
LogHex(hash, MD5_DIGEST_SIZE);
releaseByteArray(env, hash_buffer, hash, 0);
#else
throwNotCompiledInException(env);
#endif
}

View File

@ -22,11 +22,13 @@
#ifndef __ANDROID__
#include <wolfssl/options.h>
#endif
#include <wolfssl/wolfcrypt/error-crypt.h>
#include <wolfssl/wolfcrypt/sha.h>
#include <wolfssl/wolfcrypt/sha256.h>
#include <wolfssl/wolfcrypt/sha512.h>
#include <com_wolfssl_wolfcrypt_Sha.h>
#include <wolfcrypt_jni_NativeStruct.h>
#include <wolfcrypt_jni_error.h>
/* #define WOLFCRYPT_JNI_DEBUG_ON */
@ -115,3 +117,609 @@ JNIEXPORT jlong JNICALL Java_com_wolfssl_wolfcrypt_Sha512_mallocNativeStruct(
return ret;
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha_initSha
(JNIEnv* env, jobject class)
{
#ifndef NO_SHA
int ret = 0;
Sha* sha = (Sha*) getNativeStruct(env, class);
if (!sha)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_InitSha(sha);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha_shaUpdate__Ljava_nio_ByteBuffer_2J
(JNIEnv* env, jobject class, jobject data_buffer, jlong len)
{
#ifndef NO_SHA
int ret = 0;
Sha* sha = (Sha*) getNativeStruct(env, class);
byte* data = getDirectBufferAddress(env, data_buffer);
if (!sha || !data)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_ShaUpdate(sha, data, len);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_ShaUpdate(sha=%p, data, len) = %d\n", sha, ret);
LogStr("data[%u]: [%p]\n", (word32)len, data);
LogHex(data, len);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha_shaUpdate___3BJ
(JNIEnv* env, jobject class, jbyteArray data_buffer, jlong len)
{
#ifndef NO_SHA
int ret = 0;
Sha* sha = (Sha*) getNativeStruct(env, class);
byte* data = getByteArray(env, data_buffer);
if (!sha || !data)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_ShaUpdate(sha, data, len);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_ShaUpdate(sha=%p, data, len) = %d\n", sha, ret);
LogStr("data[%u]: [%p]\n", (word32)len, data);
LogHex(data, len);
releaseByteArray(env, data_buffer, data, 1);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha_shaUpdate___3BII
(JNIEnv* env, jobject class, jbyteArray data_buffer, jint offset,
jint len)
{
#ifndef NO_SHA
int ret = 0;
Sha* sha = (Sha*) getNativeStruct(env, class);
byte* data = getByteArray(env, data_buffer);
if (!sha || !data || (offset > len))
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_ShaUpdate(sha, data + offset, len);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_ShaUpdate_fips(sha=%p, data, len) = %d\n", sha, ret);
LogStr("data[%u]: [%p]\n", (word32)len, data);
LogHex(data, len);
releaseByteArray(env, data_buffer, data, 1);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha_shaFinal__Ljava_nio_ByteBuffer_2
(JNIEnv* env, jobject class, jobject hash_buffer)
{
#ifndef NO_SHA
int ret = 0;
Sha* sha = (Sha*) getNativeStruct(env, class);
byte* hash = getDirectBufferAddress(env, hash_buffer);
if (!sha || !hash)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_ShaFinal(sha, hash);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_ShaFinal(sha=%p, hash) = %d\n", sha, ret);
LogStr("hash[%u]: [%p]\n", (word32)SHA_DIGEST_SIZE, hash);
LogHex(hash, SHA_DIGEST_SIZE);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha_shaFinal___3B
(JNIEnv* env, jobject class, jbyteArray hash_buffer)
{
#ifndef NO_SHA
int ret = 0;
Sha* sha = (Sha*) getNativeStruct(env, class);
byte* hash = getByteArray(env, hash_buffer);
if (!sha || !hash)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_ShaFinal(sha, hash);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_ShaFinal(sha=%p, hash) = %d\n", sha, ret);
LogStr("hash[%u]: [%p]\n", (word32)SHA_DIGEST_SIZE, hash);
LogHex(hash, SHA_DIGEST_SIZE);
releaseByteArray(env, hash_buffer, hash, ret);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha256_initSha256
(JNIEnv* env, jobject class)
{
#ifndef NO_SHA256
int ret = 0;
Sha256* sha = (Sha256*) getNativeStruct(env, class);
if (!sha)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_InitSha256(sha);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha256_sha256Update__Ljava_nio_ByteBuffer_2J
(JNIEnv* env, jobject class, jobject data_buffer, jlong len)
{
#ifndef NO_SHA256
int ret = 0;
Sha256* sha = (Sha256*) getNativeStruct(env, class);
byte* data = getDirectBufferAddress(env, data_buffer);
if (!sha || !data)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_Sha256Update(sha, data, len);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_Sha256Update(sha=%p, data, len) = %d\n", sha, ret);
LogStr("data[%u]: [%p]\n", (word32)len, data);
LogHex(data, len);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha256_sha256Update___3BJ
(JNIEnv* env, jobject class, jbyteArray data_buffer, jlong len)
{
#ifndef NO_SHA256
int ret = 0;
Sha256* sha = (Sha256*) getNativeStruct(env, class);
byte* data = getByteArray(env, data_buffer);
if (!sha || !data)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_Sha256Update(sha, data, len);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_Sha256Update(sha=%p, data, len) = %d\n", sha, ret);
LogStr("data[%u]: [%p]\n", (word32)len, data);
LogHex(data, len);
releaseByteArray(env, data_buffer, data, ret);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha256_sha256Update___3BII
(JNIEnv* env, jobject class, jbyteArray data_buffer, jint offset,
jint len)
{
#ifndef NO_SHA256
int ret = 0;
Sha256* sha = (Sha256*) getNativeStruct(env, class);
byte* data = getByteArray(env, data_buffer);
if (!sha || !data || (offset > len))
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_Sha256Update(sha, data + offset, len);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_Sha256Update(sha=%p, data, len) = %d\n", sha, ret);
LogStr("data[%u]: [%p]\n", (word32)len, data);
LogHex(data, len);
releaseByteArray(env, data_buffer, data, ret);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha256_sha256Final__Ljava_nio_ByteBuffer_2
(JNIEnv* env, jobject class, jobject hash_buffer)
{
#ifndef NO_SHA256
int ret = 0;
Sha256* sha = (Sha256*) getNativeStruct(env, class);
byte* hash = getDirectBufferAddress(env, hash_buffer);
if (!sha || !hash)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_Sha256Final(sha, hash);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_Sha256Final(sha=%p, hash) = %d\n", sha, ret);
LogStr("hash[%u]: [%p]\n", (word32)SHA256_DIGEST_SIZE, hash);
LogHex(hash, SHA256_DIGEST_SIZE);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha256_sha256Final___3B
(JNIEnv* env, jobject class, jbyteArray hash_buffer)
{
#ifndef NO_SHA256
int ret = 0;
Sha256* sha = (Sha256*) getNativeStruct(env, class);
byte* hash = getByteArray(env, hash_buffer);
if (!sha || !hash)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_Sha256Final(sha, hash);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_Sha256Final(sha=%p, hash) = %d\n", sha, ret);
LogStr("hash[%u]: [%p]\n", (word32)SHA256_DIGEST_SIZE, hash);
LogHex(hash, SHA256_DIGEST_SIZE);
releaseByteArray(env, hash_buffer, hash, ret);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha384_initSha384
(JNIEnv* env, jobject class)
{
#ifdef WOLFSSL_SHA512
int ret = 0;
Sha384* sha = (Sha384*) getNativeStruct(env, class);
if (!sha)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_InitSha384(sha);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha384_sha384Update__Ljava_nio_ByteBuffer_2J
(JNIEnv* env, jobject class, jobject data_buffer, jlong len)
{
#ifdef WOLFSSL_SHA512
int ret = 0;
Sha384* sha = (Sha384*) getNativeStruct(env, class);
byte* data = getDirectBufferAddress(env, data_buffer);
if (!sha || !data)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_Sha384Update(sha, data, len);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_Sha384Update(sha=%p, data, len) = %d\n", sha, ret);
LogStr("data[%u]: [%p]\n", (word32)len, data);
LogHex(data, len);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha384_sha384Update___3BJ
(JNIEnv* env, jobject class, jbyteArray data_buffer, jlong len)
{
#ifdef WOLFSSL_SHA512
int ret = 0;
Sha384* sha = (Sha384*) getNativeStruct(env, class);
byte* data = getByteArray(env, data_buffer);
if (!sha || !data)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_Sha384Update(sha, data, len);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_Sha384Update(sha=%p, data, len) = %d\n", sha, ret);
LogStr("data[%u]: [%p]\n", (word32)len, data);
LogHex(data, len);
releaseByteArray(env, data_buffer, data, ret);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha384_sha384Update___3BII
(JNIEnv* env, jobject class, jbyteArray data_buffer, jint offset,
jint len)
{
#ifdef WOLFSSL_SHA512
int ret = 0;
Sha384* sha = (Sha384*) getNativeStruct(env, class);
byte* data = getByteArray(env, data_buffer);
if (!sha || !data || (offset > len))
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_Sha384Update(sha, data + offset, len);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_Sha384Update(sha=%p, data, len) = %d\n", sha, ret);
LogStr("data[%u]: [%p]\n", (word32)len, data + offset);
LogHex(data + offset, len);
releaseByteArray(env, data_buffer, data, ret);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha384_sha384Final__Ljava_nio_ByteBuffer_2
(JNIEnv* env, jobject class, jobject hash_buffer)
{
#ifdef WOLFSSL_SHA512
int ret = 0;
Sha384* sha = (Sha384*) getNativeStruct(env, class);
byte* hash = getDirectBufferAddress(env, hash_buffer);
if (!sha || !hash)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_Sha384Final(sha, hash);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_Sha384Final(sha=%p, hash) = %d\n", sha, ret);
LogStr("hash[%u]: [%p]\n", (word32)SHA384_DIGEST_SIZE, hash);
LogHex(hash, SHA384_DIGEST_SIZE);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha384_sha384Final___3B
(JNIEnv* env, jobject class, jbyteArray hash_buffer)
{
#ifdef WOLFSSL_SHA512
int ret = 0;
Sha384* sha = (Sha384*) getNativeStruct(env, class);
byte* hash = getByteArray(env, hash_buffer);
if (!sha || !hash)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_Sha384Final(sha, hash);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_Sha384Final(sha=%p, hash) = %d\n", sha, ret);
LogStr("hash[%u]: [%p]\n", (word32)SHA384_DIGEST_SIZE, hash);
LogHex(hash, SHA384_DIGEST_SIZE);
releaseByteArray(env, hash_buffer, hash, ret);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha512_initSha512
(JNIEnv* env, jobject class)
{
#ifdef WOLFSSL_SHA512
int ret = 0;
Sha512* sha = (Sha512*) getNativeStruct(env, class);
if (!sha)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_InitSha512(sha);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha512_sha512Update__Ljava_nio_ByteBuffer_2J
(JNIEnv* env, jobject class, jobject data_buffer, jlong len)
{
#ifdef WOLFSSL_SHA512
int ret = 0;
Sha512* sha = (Sha512*) getNativeStruct(env, class);
byte* data = getDirectBufferAddress(env, data_buffer);
if (!sha || !data)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_Sha512Update(sha, data, len);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_Sha512Update(sha=%p, data, len) = %d\n", sha, ret);
LogStr("data[%u]: [%p]\n", (word32)len, data);
LogHex(data, len);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha512_sha512Update___3BJ
(JNIEnv* env, jobject class, jbyteArray data_buffer, jlong len)
{
#ifdef WOLFSSL_SHA512
int ret = 0;
Sha512* sha = (Sha512*) getNativeStruct(env, class);
byte* data = getByteArray(env, data_buffer);
if (!sha || !data)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_Sha512Update(sha, data, len);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_Sha512Update(sha=%p, data, len) = %d\n", sha, ret);
LogStr("data[%u]: [%p]\n", (word32)len, data);
LogHex(data, len);
releaseByteArray(env, data_buffer, data, ret);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha512_sha512Update___3BII
(JNIEnv* env, jobject class, jbyteArray data_buffer, jint offset,
jint len)
{
#ifdef WOLFSSL_SHA512
int ret = 0;
Sha512* sha = (Sha512*) getNativeStruct(env, class);
byte* data = getByteArray(env, data_buffer);
if (!sha || !data || (offset > len))
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_Sha512Update(sha, data + offset, len);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_Sha512Update(sha=%p, data, len) = %d\n", sha, ret);
LogStr("data[%u]: [%p]\n", (word32)len, data + offset);
LogHex(data + offset, len);
releaseByteArray(env, data_buffer, data, ret);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha512_sha512Final__Ljava_nio_ByteBuffer_2
(JNIEnv* env, jobject class, jobject hash_buffer)
{
#ifdef WOLFSSL_SHA512
int ret = 0;
Sha512* sha = (Sha512*) getNativeStruct(env, class);
byte* hash = getDirectBufferAddress(env, hash_buffer);
if (!sha || !hash)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_Sha512Final(sha, hash);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_Sha512Final(sha=%p, hash) = %d\n", sha, ret);
LogStr("hash[%u]: [%p]\n", (word32)SHA512_DIGEST_SIZE, hash);
LogHex(hash, SHA512_DIGEST_SIZE);
#else
throwNotCompiledInException(env);
#endif
}
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Sha512_sha512Final___3B
(JNIEnv* env, jobject class, jbyteArray hash_buffer)
{
#ifdef WOLFSSL_SHA512
int ret = 0;
Sha512* sha = (Sha512*) getNativeStruct(env, class);
byte* hash = getByteArray(env, hash_buffer);
if (!sha || !hash)
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
ret = wc_Sha512Final(sha, hash);
if (ret != 0)
throwWolfCryptExceptionFromError(env, ret);
LogStr("wc_Sha512Final(sha=%p, hash) = %d\n", sha, ret);
LogStr("hash[%u]: [%p]\n", (word32)SHA512_DIGEST_SIZE, hash);
LogHex(hash, SHA512_DIGEST_SIZE);
releaseByteArray(env, hash_buffer, hash, ret);
#else
throwNotCompiledInException(env);
#endif
}

View File

@ -21,6 +21,8 @@
package com.wolfssl.wolfcrypt;
import java.nio.ByteBuffer;
/**
* Wrapper for the native WolfCrypt Md5 implementation.
*
@ -32,5 +34,100 @@ public class Md5 extends NativeStruct {
public static final int TYPE = 0; /* hash type unique */
public static final int DIGEST_SIZE = 16;
private WolfCryptState state = WolfCryptState.UNINITIALIZED;
protected native long mallocNativeStruct() throws OutOfMemoryError;
/* native wrappers called by public functions below */
private native void initMd5();
private native void md5Update(ByteBuffer data, long len);
private native void md5Update(byte[] data, long len);
private native void md5Update(byte[] data, int offset, int len);
private native void md5Final(ByteBuffer hash);
private native void md5Final(byte[] hash);
public void init() throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
initMd5();
state = WolfCryptState.INITIALIZED;
}
public void update(ByteBuffer data, long len)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
md5Update(data, len);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void update(byte[] data, long len)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
md5Update(data, len);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void update(byte[] data, int offset, int len)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
md5Update(data, offset, len);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void digest(ByteBuffer hash)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
md5Final(hash);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void digest(byte[] hash)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
md5Final(hash);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
}

View File

@ -21,6 +21,8 @@
package com.wolfssl.wolfcrypt;
import java.nio.ByteBuffer;
/**
* Wrapper for the native WolfCrypt Sha implementation.
*
@ -32,5 +34,100 @@ public class Sha extends NativeStruct {
public static final int TYPE = 1; /* hash type unique */
public static final int DIGEST_SIZE = 20;
private WolfCryptState state = WolfCryptState.UNINITIALIZED;
protected native long mallocNativeStruct() throws OutOfMemoryError;
/* native wrappers called by public functions below */
private native void initSha();
private native void shaUpdate(ByteBuffer data, long len);
private native void shaUpdate(byte[] data, long len);
private native void shaUpdate(byte[] data, int offset, int len);
private native void shaFinal(ByteBuffer hash);
private native void shaFinal(byte[] hash);
public void init() throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
initSha();
state = WolfCryptState.INITIALIZED;
}
public void update(ByteBuffer data, long len)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
shaUpdate(data, len);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void update(byte[] data, long len)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
shaUpdate(data, len);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void update(byte[] data, int offset, int len)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
shaUpdate(data, offset, len);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void digest(ByteBuffer hash)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
shaFinal(hash);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void digest(byte[] hash)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
shaFinal(hash);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
}

View File

@ -21,6 +21,8 @@
package com.wolfssl.wolfcrypt;
import java.nio.ByteBuffer;
/**
* Wrapper for the native WolfCrypt Sha256 implementation.
*
@ -32,5 +34,100 @@ public class Sha256 extends NativeStruct {
public static final int TYPE = 2; /* hash type unique */
public static final int DIGEST_SIZE = 32;
private WolfCryptState state = WolfCryptState.UNINITIALIZED;
protected native long mallocNativeStruct() throws OutOfMemoryError;
/* native wrappers called by public functions below */
private native void initSha256();
private native void sha256Update(ByteBuffer data, long len);
private native void sha256Update(byte[] data, long len);
private native void sha256Update(byte[] data, int offset, int len);
private native void sha256Final(ByteBuffer hash);
private native void sha256Final(byte[] hash);
public void init() throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
initSha256();
state = WolfCryptState.INITIALIZED;
}
public void update(ByteBuffer data, long len)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
sha256Update(data, len);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void update(byte[] data, long len)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
sha256Update(data, len);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void update(byte[] data, int offset, int len)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
sha256Update(data, offset, len);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void digest(ByteBuffer hash)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
sha256Final(hash);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void digest(byte[] hash)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
sha256Final(hash);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
}

View File

@ -21,6 +21,8 @@
package com.wolfssl.wolfcrypt;
import java.nio.ByteBuffer;
/**
* Wrapper for the native WolfCrypt Sha384 implementation.
*
@ -32,5 +34,98 @@ public class Sha384 extends NativeStruct {
public static final int TYPE = 5; /* hash type unique */
public static final int DIGEST_SIZE = 48;
private WolfCryptState state = WolfCryptState.UNINITIALIZED;
protected native long mallocNativeStruct() throws OutOfMemoryError;
/* native wrappers called by public functions below */
private native void initSha384();
private native void sha384Update(ByteBuffer data, long len);
private native void sha384Update(byte[] data, long len);
private native void sha384Update(byte[] data, int offset, int len);
private native void sha384Final(ByteBuffer hash);
private native void sha384Final(byte[] hash);
public void init() {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
initSha384();
state = WolfCryptState.INITIALIZED;
}
public void update(ByteBuffer data, long len)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
sha384Update(data, len);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void update(byte[] data, long len)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
sha384Update(data, len);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void update(byte[] data, int offset, int len)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
sha384Update(data, offset, len);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void digest(ByteBuffer hash) throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
sha384Final(hash);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void digest(byte[] hash) throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
sha384Final(hash);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
}

View File

@ -21,6 +21,8 @@
package com.wolfssl.wolfcrypt;
import java.nio.ByteBuffer;
/**
* Wrapper for the native WolfCrypt Sha512 implementation.
*
@ -32,5 +34,100 @@ public class Sha512 extends NativeStruct {
public static final int TYPE = 4; /* hash type unique */
public static final int DIGEST_SIZE = 64;
private WolfCryptState state = WolfCryptState.UNINITIALIZED;
protected native long mallocNativeStruct() throws OutOfMemoryError;
/* native wrappers called by public functions below */
private native void initSha512();
private native void sha512Update( ByteBuffer data, long len);
private native void sha512Update( byte[] data, long len);
private native void sha512Update( byte[] data, int offset, int len);
private native void sha512Final( ByteBuffer hash);
private native void sha512Final( byte[] hash);
public void init() {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
initSha512();
state = WolfCryptState.INITIALIZED;
}
public void update(ByteBuffer data, long len)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
sha512Update(data, len);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void update(byte[] data, long len)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
sha512Update(data, len);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void update(byte[] data, int offset, int len)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
sha512Update(data, offset, len);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void digest(ByteBuffer hash)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
sha512Final(hash);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
public void digest(byte[] hash)
throws IllegalStateException {
if (getNativeStruct() == NULL)
throw new IllegalStateException("Object has been freed");
if (state == WolfCryptState.INITIALIZED) {
sha512Final(hash);
} else {
throw new IllegalStateException(
"Object must be initialized before use");
}
}
}