JNI: Rng changes from code review
parent
9e292725f7
commit
f274fdce55
|
@ -36,18 +36,18 @@ JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Rng_freeRng
|
|||
/*
|
||||
* Class: com_wolfssl_wolfcrypt_Rng
|
||||
* Method: rngGenerateBlock
|
||||
* Signature: (Ljava/nio/ByteBuffer;J)V
|
||||
* Signature: (Ljava/nio/ByteBuffer;II)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Rng_rngGenerateBlock__Ljava_nio_ByteBuffer_2J
|
||||
(JNIEnv *, jobject, jobject, jlong);
|
||||
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Rng_rngGenerateBlock__Ljava_nio_ByteBuffer_2II
|
||||
(JNIEnv *, jobject, jobject, jint, jint);
|
||||
|
||||
/*
|
||||
* Class: com_wolfssl_wolfcrypt_Rng
|
||||
* Method: rngGenerateBlock
|
||||
* Signature: ([BJ)V
|
||||
* Signature: ([B)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Rng_rngGenerateBlock___3BJ
|
||||
(JNIEnv *, jobject, jbyteArray, jlong);
|
||||
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Rng_rngGenerateBlock___3B
|
||||
(JNIEnv *, jobject, jbyteArray);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -54,9 +54,6 @@ JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Rng_initRng
|
|||
int ret = 0;
|
||||
RNG* rng = (RNG*) getNativeStruct(env, class);
|
||||
|
||||
if (!rng)
|
||||
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
|
||||
|
||||
ret = wc_InitRng(rng);
|
||||
if (ret != 0)
|
||||
throwWolfCryptExceptionFromError(env, ret);
|
||||
|
@ -76,9 +73,6 @@ JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Rng_freeRng
|
|||
int ret = 0;
|
||||
RNG* rng = (RNG*) getNativeStruct(env, class);
|
||||
|
||||
if (!rng)
|
||||
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
|
||||
|
||||
ret = wc_FreeRng(rng);
|
||||
if (ret != 0)
|
||||
throwWolfCryptExceptionFromError(env, ret);
|
||||
|
@ -90,8 +84,8 @@ JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Rng_freeRng
|
|||
#endif
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Rng_rngGenerateBlock__Ljava_nio_ByteBuffer_2J
|
||||
(JNIEnv* env, jobject class, jobject buf_buffer, jlong bufSz)
|
||||
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Rng_rngGenerateBlock__Ljava_nio_ByteBuffer_2II
|
||||
(JNIEnv* env, jobject class, jobject buf_buffer, jint position, jint sz)
|
||||
{
|
||||
#ifndef WC_NO_RNG
|
||||
|
||||
|
@ -99,33 +93,33 @@ JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Rng_rngGenerateBlock__Ljava_ni
|
|||
RNG* rng = (RNG*) getNativeStruct(env, class);
|
||||
byte* buf = getDirectBufferAddress(env, buf_buffer);
|
||||
|
||||
if (!rng || !buf)
|
||||
if (!buf) {
|
||||
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
|
||||
|
||||
ret = wc_RNG_GenerateBlock(rng, buf, bufSz);
|
||||
if (ret != 0)
|
||||
throwWolfCryptExceptionFromError(env, ret);
|
||||
} else {
|
||||
ret = wc_RNG_GenerateBlock(rng, buf + position, sz);
|
||||
if (ret != 0)
|
||||
throwWolfCryptExceptionFromError(env, ret);
|
||||
}
|
||||
|
||||
LogStr("wc_RNG_GenerateBlock(rng=%p, buf, bufSz) = %d\n", rng, ret);
|
||||
LogStr("output[%u]: [%p]\n", (word32)bufSz, buf);
|
||||
LogHex(buf, bufSz);
|
||||
LogStr("wc_RNG_GenerateBlock(rng=%p, buf, sz) = %d\n", rng, ret);
|
||||
LogStr("output[%u]: [%p]\n", (word32)sz, buf);
|
||||
LogHex(buf, sz);
|
||||
|
||||
#else
|
||||
throwNotCompiledInException(env);
|
||||
#endif
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Rng_rngGenerateBlock___3BJ
|
||||
(JNIEnv* env, jobject class, jbyteArray buf_buffer, jlong bufSz)
|
||||
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Rng_rngGenerateBlock___3B
|
||||
(JNIEnv* env, jobject class, jbyteArray buf_buffer)
|
||||
{
|
||||
#ifndef WC_NO_RNG
|
||||
|
||||
int ret = 0;
|
||||
RNG* rng = (RNG*) getNativeStruct(env, class);
|
||||
byte* buf = getByteArray(env, buf_buffer);
|
||||
|
||||
if (!rng || !buf)
|
||||
throwWolfCryptExceptionFromError(env, BAD_FUNC_ARG);
|
||||
word32 bufSz = getByteArrayLength(env, buf_buffer);
|
||||
|
||||
ret = wc_RNG_GenerateBlock(rng, buf, bufSz);
|
||||
if (ret != 0)
|
||||
|
|
|
@ -23,6 +23,8 @@ package com.wolfssl.wolfcrypt;
|
|||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
import javax.crypto.ShortBufferException;
|
||||
|
||||
/**
|
||||
* Wrapper for the native WolfCrypt Rng implementation.
|
||||
*
|
||||
|
@ -38,10 +40,10 @@ public class Rng extends NativeStruct {
|
|||
/* native wrappers called by public functions below */
|
||||
private native void initRng();
|
||||
private native void freeRng();
|
||||
private native void rngGenerateBlock(ByteBuffer buf, long bufSz);
|
||||
private native void rngGenerateBlock(byte[] buf, long bufSz);
|
||||
private native void rngGenerateBlock(ByteBuffer buf, int position, int sz);
|
||||
private native void rngGenerateBlock(byte[] buf);
|
||||
|
||||
public void init() throws IllegalStateException {
|
||||
public void init() {
|
||||
|
||||
if (state == WolfCryptState.UNINITIALIZED) {
|
||||
initRng();
|
||||
|
@ -52,7 +54,7 @@ public class Rng extends NativeStruct {
|
|||
}
|
||||
}
|
||||
|
||||
public void free() throws IllegalStateException {
|
||||
public void free() {
|
||||
|
||||
if (state == WolfCryptState.INITIALIZED) {
|
||||
freeRng();
|
||||
|
@ -63,22 +65,42 @@ public class Rng extends NativeStruct {
|
|||
}
|
||||
}
|
||||
|
||||
public void generateBlock(ByteBuffer buf, long bufSz)
|
||||
throws IllegalStateException {
|
||||
public void generateBlock(ByteBuffer buf) {
|
||||
|
||||
if (state == WolfCryptState.INITIALIZED) {
|
||||
rngGenerateBlock(buf, bufSz);
|
||||
|
||||
rngGenerateBlock(buf, buf.position(), buf.remaining());
|
||||
|
||||
buf.position(buf.position() + buf.remaining());
|
||||
|
||||
} else {
|
||||
throw new IllegalStateException(
|
||||
"Object must be initialized before use");
|
||||
}
|
||||
}
|
||||
|
||||
public void generateBlock(byte[] buf, long bufSz)
|
||||
throws IllegalStateException {
|
||||
public void generateBlock(byte[] buf) {
|
||||
|
||||
if (state == WolfCryptState.INITIALIZED) {
|
||||
rngGenerateBlock(buf, bufSz);
|
||||
|
||||
rngGenerateBlock(buf);
|
||||
|
||||
} else {
|
||||
throw new IllegalStateException(
|
||||
"Object must be initialized before use");
|
||||
}
|
||||
}
|
||||
|
||||
public byte[] generateBlock(int size) {
|
||||
|
||||
if (state == WolfCryptState.INITIALIZED) {
|
||||
|
||||
byte[] buffer = new byte[size];
|
||||
|
||||
rngGenerateBlock(buffer);
|
||||
|
||||
return buffer;
|
||||
|
||||
} else {
|
||||
throw new IllegalStateException(
|
||||
"Object must be initialized before use");
|
||||
|
|
Loading…
Reference in New Issue