in sdk/enclave/src/main/java/org/apache/teaclave/javasdk/enclave/substitutes/NativePRNGSubstitutions.java [110:126]
private static void readFully(InputStream in, byte[] data) {
int len = data.length;
EnclaveEnvironment.NativeGetRandomNumberFunctionPointer nativeGetRandomNumberFunctionPointer = EnclaveEntry.getCallBackMethods().getRandomNumber();
if (nativeGetRandomNumberFunctionPointer.isNonNull()) {
CCharPointer bytes = UnmanagedMemory.malloc(len);
int ret = nativeGetRandomNumberFunctionPointer.invoke((VoidPointer) bytes, len);
if (ret == 0) {
CTypeConversion.asByteBuffer(bytes, len).get(data);
UnmanagedMemory.free(bytes);
} else {
UnmanagedMemory.free(bytes);
throw new RuntimeException("Fail to call the native random method in Enclave. Error code:" + ret);
}
} else {
throw new RuntimeException("Callback function to oe_random is not set.");
}
}