mirror of https://github.com/status-im/js-waku.git
Use DOM random generator if available
This commit is contained in:
parent
1f6ed9b525
commit
b70f7c5a95
|
@ -1,5 +1,4 @@
|
||||||
import { Buffer } from 'buffer';
|
import { Buffer } from 'buffer';
|
||||||
import { randomBytes } from 'crypto';
|
|
||||||
import * as crypto from 'crypto';
|
import * as crypto from 'crypto';
|
||||||
|
|
||||||
import ecies from 'ecies-parity';
|
import ecies from 'ecies-parity';
|
||||||
|
@ -127,7 +126,7 @@ export async function decryptAsymmetric(
|
||||||
* Generate a new private key
|
* Generate a new private key
|
||||||
*/
|
*/
|
||||||
export function generatePrivateKey(): Uint8Array {
|
export function generatePrivateKey(): Uint8Array {
|
||||||
return crypto.randomBytes(32);
|
return randomBytes(32);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -161,12 +160,18 @@ function getSizeOfPayloadSizeField(payload: Uint8Array): number {
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
function validateDataIntegrity(value: Buffer, expectedSize: number): boolean {
|
function validateDataIntegrity(
|
||||||
|
value: Uint8Array,
|
||||||
|
expectedSize: number
|
||||||
|
): boolean {
|
||||||
if (value.length !== expectedSize) {
|
if (value.length !== expectedSize) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (expectedSize > 3 && value.equals(Buffer.alloc(value.length))) {
|
if (
|
||||||
|
expectedSize > 3 &&
|
||||||
|
Buffer.from(value).equals(Buffer.alloc(value.length))
|
||||||
|
) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -193,3 +198,13 @@ function ecRecoverPubKey(messageHash: string, signature: Buffer): Uint8Array {
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function randomBytes(length: number): Uint8Array {
|
||||||
|
if (typeof window !== 'undefined' && window && window.crypto) {
|
||||||
|
const array = new Uint8Array(length);
|
||||||
|
window.crypto.getRandomValues(array);
|
||||||
|
return array;
|
||||||
|
} else {
|
||||||
|
return crypto.randomBytes(length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
// "experimentalDecorators": true /* Enables experimental support for ES7 decorators. */,
|
// "experimentalDecorators": true /* Enables experimental support for ES7 decorators. */,
|
||||||
// "emitDecoratorMetadata": true /* Enables experimental support for emitting type metadata for decorators. */,
|
// "emitDecoratorMetadata": true /* Enables experimental support for emitting type metadata for decorators. */,
|
||||||
|
|
||||||
"lib": ["es2017"],
|
"lib": ["es2017", "dom"],
|
||||||
"types": ["node", "mocha"],
|
"types": ["node", "mocha"],
|
||||||
"typeRoots": ["node_modules/@types", "src/types"]
|
"typeRoots": ["node_modules/@types", "src/types"]
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue