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