From f1ccfb42594ff847e00b616d5b4bdae3616c5944 Mon Sep 17 00:00:00 2001 From: Brad Anderson Date: Tue, 17 Sep 2024 22:49:44 -0400 Subject: [PATCH] troubleshooting deleteFunc --- example/src/testing/tests/random/random_tests.ts | 6 +++++- .../cpp/random/HybridRandom.cpp | 14 +++++++++----- .../cpp/random/HybridRandom.hpp | 8 ++++++++ packages/react-native-quick-crypto/src/random.ts | 3 ++- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/example/src/testing/tests/random/random_tests.ts b/example/src/testing/tests/random/random_tests.ts index 70d43c1c..bc3ac20e 100644 --- a/example/src/testing/tests/random/random_tests.ts +++ b/example/src/testing/tests/random/random_tests.ts @@ -10,6 +10,7 @@ import type { Done } from 'mocha'; const { ab2str, abvToArrayBuffer } = crypto; describe('random', () => { + /* [crypto.randomBytes, crypto.pseudoRandomBytes].forEach(f => { // TODO (Szymon) // [undefined, null, false, true, {}, []].forEach((value) => { @@ -210,7 +211,7 @@ describe('random', () => { 'before/after slices', ); }); - + */ it('randomFill - deepStringEqual - Buffer', (done: Done) => { const buf = Buffer.alloc(10); const before = buf.toString('hex'); @@ -218,6 +219,7 @@ describe('random', () => { crypto.randomFill(buf, 5, 5, (_err: Error | null, res: Buffer) => { try { const after = Buffer.from(res).toString('hex'); + console.log('after', after); assert.notStrictEqual(before, after, 'before/after'); assert.deepStrictEqual( before.slice(0, 5), @@ -250,6 +252,7 @@ describe('random', () => { }); }); + /* // finish // describe('errors checks', () => { // [Buffer.alloc(10), new Uint8Array(new Array(10).fill(0))].forEach((buf) => { @@ -625,4 +628,5 @@ describe('random', () => { done(); }); }); + */ }); diff --git a/packages/react-native-quick-crypto/cpp/random/HybridRandom.cpp b/packages/react-native-quick-crypto/cpp/random/HybridRandom.cpp index 1981052d..7e8f200c 100644 --- a/packages/react-native-quick-crypto/cpp/random/HybridRandom.cpp +++ b/packages/react-native-quick-crypto/cpp/random/HybridRandom.cpp @@ -9,13 +9,14 @@ std::future> HybridRandom::randomFill(const std::shared_ptr& buffer, double dOffset, double dSize) { - size_t size = checkSize(dSize); + size_t bufferSize = buffer.get()->size(); // copy the JSArrayBuffer that we do not own into a NativeArrayBuffer that we // do own, before passing to sync function - uint8_t* data = new uint8_t[size]; - memcpy(data, buffer.get()->data(), size); - std::shared_ptr nativeBuffer = - std::make_shared(data, size, [=]() { delete[] data; }); + uint8_t* data = new uint8_t[bufferSize]; + memcpy(data, buffer.get()->data(), bufferSize); + std::shared_ptr nativeBuffer = + // std::make_shared(data, bufferSize, nullptr); + std::make_shared(data, bufferSize, [=]() { delete[] data; }); return std::async(std::launch::async, [this, nativeBuffer, dOffset, dSize]() { @@ -27,14 +28,17 @@ std::shared_ptr HybridRandom::randomFillSync(const std::shared_ptr& buffer, double dOffset, double dSize) { + // size_t bufferSize = buffer.get()->size(); size_t size = checkSize(dSize); size_t offset = checkOffset(dSize, dOffset); uint8_t* data = buffer.get()->data(); + // printData(0, data, bufferSize); if (RAND_bytes(data + offset, (int)size) != 1) { throw std::runtime_error("error calling RAND_bytes" + std::to_string(ERR_get_error())); } + // printData(1, data, bufferSize); return std::make_shared(data, size, nullptr); }; diff --git a/packages/react-native-quick-crypto/cpp/random/HybridRandom.hpp b/packages/react-native-quick-crypto/cpp/random/HybridRandom.hpp index 66276382..af2b8057 100644 --- a/packages/react-native-quick-crypto/cpp/random/HybridRandom.hpp +++ b/packages/react-native-quick-crypto/cpp/random/HybridRandom.hpp @@ -38,4 +38,12 @@ inline size_t checkOffset(double size, double offset) { return static_cast(offset); } +inline void printData(int num, uint8_t* data, size_t size) { + printf("data %d - ", num); + for (size_t i = 0; i < size; i++) { + printf("%u ", data[i]); + } + printf("\n"); +} + } // namespace margelo::nitro::crypto diff --git a/packages/react-native-quick-crypto/src/random.ts b/packages/react-native-quick-crypto/src/random.ts index 7820830b..d5d15c1b 100644 --- a/packages/react-native-quick-crypto/src/random.ts +++ b/packages/react-native-quick-crypto/src/random.ts @@ -1,6 +1,6 @@ import { Buffer } from '@craftzdog/react-native-buffer'; import type { ArrayBufferView, RandomCallback } from './utils'; -import { abvToArrayBuffer } from './utils'; +import { ab2str, abvToArrayBuffer } from './utils'; import { NitroModules } from 'react-native-nitro-modules'; import type { Random } from './specs/random.nitro'; @@ -57,6 +57,7 @@ export function randomFill(buffer: ArrayBufferView, ...rest: unknown[]): void { getNative(); random.randomFill(abvToArrayBuffer(buffer), offset, size).then( (res: ArrayBuffer) => { + console.log('res', ab2str(res)); callback(null, res); }, (e: Error) => {