mirror of
https://github.com/amark/gun.git
synced 2025-03-30 15:08:33 +00:00
43 lines
1.6 KiB
JavaScript
43 lines
1.6 KiB
JavaScript
|
|
const Buffer = require('./buffer')
|
|
const api = {Buffer: Buffer}
|
|
|
|
if (typeof window !== 'undefined') {
|
|
var crypto = window.crypto || window.msCrypto;
|
|
var subtle = crypto.subtle || crypto.webkitSubtle;
|
|
const TextEncoder = window.TextEncoder
|
|
const TextDecoder = window.TextDecoder
|
|
Object.assign(api, {
|
|
crypto,
|
|
subtle,
|
|
TextEncoder,
|
|
TextDecoder,
|
|
random: (len) => Buffer.from(crypto.getRandomValues(new Uint8Array(Buffer.alloc(len))))
|
|
})
|
|
} else {
|
|
try{
|
|
var crypto = require('crypto', 1);
|
|
const { subtle } = require('@trust/webcrypto', 1) // All but ECDH
|
|
const { TextEncoder, TextDecoder } = require('text-encoding', 1)
|
|
Object.assign(api, {
|
|
crypto,
|
|
subtle,
|
|
TextEncoder,
|
|
TextDecoder,
|
|
random: (len) => Buffer.from(crypto.randomBytes(len))
|
|
});
|
|
//try{
|
|
const WebCrypto = require('node-webcrypto-ossl', 1)
|
|
api.ossl = new WebCrypto({directory: 'ossl'}).subtle // ECDH
|
|
//}catch(e){
|
|
//console.log("node-webcrypto-ossl is optionally needed for ECDH, please install if needed.");
|
|
//}
|
|
}catch(e){
|
|
console.log("@trust/webcrypto and text-encoding are not included by default, you must add it to your package.json!");
|
|
console.log("node-webcrypto-ossl is temporarily needed for ECDSA signature verification, and optionally needed for ECDH, please install if needed (currently necessary so add them to your package.json for now).");
|
|
TRUST_WEBCRYPTO_OR_TEXT_ENCODING_NOT_INSTALLED;
|
|
}
|
|
}
|
|
|
|
module.exports = api
|
|
|