
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
@appliedblockchain/b-privacy
Advanced tools
B Privacy js library, supported runtimes: nodejs, react-native and browser.
B Privacy js library, supported runtimes: nodejs, react-native and browser.
Supports:
new B({ mnemonic: B.generateMnemonicPhrase() })
new B({ mnemonic })
[a.mnemonic, a.privateKey, a.publicKey, a.address]
a.encrypt(msg, b.publicKey)
b.decrypt(msg, a.publicKey)
a.ecsign(B.keccak256(msg))
B.publicKeyToAddress(publicKey)
We call bytes
any byte representation: buffer, hex0x or hex.
bytesTo*
family functions convert from one of known byte representations to specified one.
to*
family functions will try to convert from any input into desired byte representation, when possible making
the same conversions as seen in solidity, ie.:
toBuffer('hello') // returns buffer with utf8 representation of the input string
toBuffer(true) // returns 32 byte, big-endian number 1
toBuffer(false) // returns 32 byte number 0
toBuffer(null) // throws
toBuffer('0x01') // returns one byte buffer
toBuffer('ffff') // returns two byte buffer
npm i --save @appliedblockchain/b-privacy
const assert = require('assert')
const B = require('@appliedblockchain/b-privacy')
const simon = new B({ mnemonic: B.generateMnemonicPhrase() })
// sign a message from an account
const helloHash = B.keccak256('hello')
const helloSig = simon.ecsign(helloHash)
// verify that i said hello
const didISayHello = simon.ecverify(helloHash, helloSig)
assert.equal(didISayHello, true)
// anyone can verify i said hello if they have my publicKey or address
const recoveredPublicKey = B.ecrecover(helloHash, helloSig)
assert.equal(recoveredPublicKey, simon.getPublicKey())
const recoveredAddress = B.ecrecoverAddress(helloHash, helloSig)
assert.equal(recoveredAddress, simon.address)
const mike = new B({ mnemonic: B.generateMnemonicPhrase() })
const hiMike = simon.encrypt({
message: 'hello',
another: 'key'
}, mike.publicKey)
const mikesMessage = mike.decrypt(hiMike, simon.publicKey)
assert.deepEqual(mikesMessage, { message: 'hello', another: 'key' })
const helloEveryone = { hello: 'everyone!' }
const [ sharedBlob, readerBlob ] = simon.encryptShared(helloEveryone)
// i can decrypt my own shared message, other people can't without calling shareSecret
assert.deepEqual(simon.decryptShared(sharedBlob, readerBlob), helloEveryone)
// providing a mnemonic is optional, if nothing provided then one will be generated
const bob = new B()
const bobReaderBlob = simon.shareSecret(readerBlob, bob.publicKey)
// bob can now decrypt the shared message
const bobsMessage = bob.decryptShared(sharedBlob, bobReaderBlob)
assert.deepEqual(bobsMessage, helloEveryone)
// bob can now pass the message on securely
const alice = new B()
const aliceReaderBlob = bob.shareSecret(bobReaderBlob, alice.publicKey)
const alicesMessage = alice.decryptShared(sharedBlob, aliceReaderBlob)
assert.deepEqual(alicesMessage, helloEveryone)
For more usage examples please refer to tests in test
directory.
We'll need to clean-up below docs
Blockchain Privacy JS library
Provides an easy way to interact with keys and sign messages (note: storage of keys should be handled outside this library)
npm run dev
Package the library for release (browser/node)
npm run build
npm test
or:
npm i -g jest
jest
Please require dist/b-privacy.js
, that's the browser-ready version.
You also need to include bitcore-lib
manually before that. See test/browser.index.html
for a working example.
To make the example work you need to build bitcore-lib for the browser, run:
cd node_modules/bitcore-lib
npm i
gulp browser
FAQs
B Privacy js library, supported runtimes: nodejs, react-native and browser.
The npm package @appliedblockchain/b-privacy receives a total of 6 weekly downloads. As such, @appliedblockchain/b-privacy popularity was classified as not popular.
We found that @appliedblockchain/b-privacy demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 31 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.