react-native-quick-crypto
Version:
A fast implementation of Node's `crypto` module written in C/C++ JSI
75 lines (69 loc) • 1.84 kB
text/typescript
import { Buffer } from '@craftzdog/react-native-buffer';
import * as pbkdf2 from './pbkdf2';
import * as random from './random';
import {
createCipher,
createCipheriv,
createDecipher,
createDecipheriv,
publicEncrypt,
publicDecrypt,
privateDecrypt,
generateKeyPair,
generateKeyPairSync,
} from './Cipher';
import { generateKey, generateKeySync } from './keygen';
import { createSign, createVerify } from './sig';
import { createHmac } from './Hmac';
import { createHash } from './Hash';
import { constants } from './constants';
import { subtle } from './subtle';
import { getCiphers, getHashes } from './Utils';
import webcrypto from './webcrypto';
import { createPrivateKey, createPublicKey, createSecretKey } from './keys';
/**
* Loosely matches Node.js {crypto} with some unimplemented functionality
*/
const QuickCrypto = {
createHmac,
Hmac: createHmac,
Hash: createHash,
createHash,
createCipher,
createCipheriv,
createDecipher,
createDecipheriv,
createPublicKey,
createPrivateKey,
createSecretKey,
publicEncrypt,
publicDecrypt,
privateDecrypt,
generateKey,
generateKeyPair,
generateKeyPairSync,
generateKeySync,
createSign,
createVerify,
subtle,
constants,
...pbkdf2,
...random,
getCiphers,
getHashes,
webcrypto,
};
/**
* Optional. Patch global.crypto with quickcrypto and global.Buffer with react-native-buffer.
*/
export const install = () => {
// @ts-expect-error copyBytesFrom and poolSizets are missing from react-native-buffer
global.Buffer = Buffer;
// @ts-expect-error subtle isn't fully implemented and Cryptokey is missing
global.crypto = QuickCrypto;
};
export default QuickCrypto;
// Additional exports for CommonJS compatibility
module.exports = QuickCrypto;
module.exports.default = QuickCrypto;
module.exports.install = install;