UNPKG

1.26 kBJavaScriptView Raw
1var isElectron = require('is-electron')
2
3if(process.env.CHLORIDE_JS) {
4 module.exports = require('./browser-small')
5} else {
6 try {
7 var cl = module.exports = require('./bindings')
8
9 if(isElectron()) {
10 //there is a weird problem with electro.
11 //where detached signatures do not work, but other
12 //signatures do...
13
14 var keys = cl.crypto_sign_keypair()
15 var msg = cl.crypto_hash(new Buffer('test signature'))
16 var sig = cl.crypto_sign_detached(msg, keys.secretKey)
17
18 if(cl.crypto_sign_verify_detached(sig, msg, keys.publicKey))
19 return
20
21 console.error('detached signatures broken in electron, using workaround')
22
23 var verify = module.exports.crypto_sign_verify_detached
24 module.exports.crypto_sign_verify_detached = function (sig, msg, pk) {
25 //return verify(copy(sig), copy(msg), copy(pk))
26 return module.exports.crypto_sign_open(Buffer.concat([sig, msg]), pk)
27 //console.log(sig, msg, pk)
28 //return verify(new Buffer(sig), new Buffer(msg), new Buffer(pk))
29 }
30 }
31 } catch (err) {
32 console.error('error loading sodium bindings:', err.message)
33 console.error('falling back to javascript version.')
34 module.exports = require('./browser-small')
35 }
36}