Security News
Supply Chain Attack Detected in Solana's web3.js Library
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
cardano-crypto.js
Advanced tools
input-output-hk/cardano-crypto compiled to pure javascript using Emscripten
Compiled to pure javascript using Emscripten. This is a collection of cryptolibraries and functions useful for working with Cardano cryptocurrency, eliminating the need for many dependencies.
var lib = require('cardano-crypto.js')
var mnemonic = 'logic easily waste eager injury oval sentence wine bomb embrace gossip supreme'
var walletSecret = await lib.mnemonicToRootKeypair(mnemonic, 1)
var msg = new Buffer('hello there')
var sig = lib.sign(msg, walletSecret)
var lib = require('cardano-crypto.js')
var mnemonic = 'logic easily waste eager injury oval sentence wine bomb embrace gossip supreme'
var parentWalletSecret = lib.mnemonicToRootKeypair(mnemonic, 1)
var childWalletSecret = lib.derivePrivate(parentWalletSecret, 0x80000001, 1)
var lib = require('cardano-crypto.js')
var mnemonic = 'logic easily waste eager injury oval sentence wine bomb embrace gossip supreme'
var parentWalletSecret = lib.mnemonicToRootKeypair(mnemonic, 1)
var parentWalletPublicKey = parentWalletSecret.slice(64, 128)
var childWalletSecret = lib.derivePublic(parentWalletPublicKey, 1, 1)
Buffer sign(Buffer msg, Buffer walletSecret)
Bool verify(Buffer msg, Buffer publicKey, Buffer sig)
async Buffer mnemonicToRootKeypair(String mnemonic, int derivationScheme)
Buffer derivePrivate(Buffer parentKey, int index, int derivationScheme)
Buffer derivePublic(Buffer parentExtPubKey, int index, int derivationScheme)
Buffer toPublic(Buffer privateKey)
Buffer packBootstrapAddress(Array[int] derivationPath, Buffer xpub, Buffer hdPassphrase, int derivationScheme)
Buffer packBaseAddress(Buffer spendingPubKey, Buffer stakingPubKey, int networkId, Bool isStakeHash = false)
Buffer packPointerAddress(Buffer pubKey, Object pointer, int networkId)
Buffer packEnterpriseAddress(Buffer spendingPubKey, int networkId)
Buffer packRewardsAccountAddress(Buffer stakingPubkey, int networkId, Bool isStakeHash = false)
Object getAddressType(Buffer address)
Object getShelleyAddressInfo(Buffer address)
Object AddressTypes
string unpackBootstrapAddress(string address, Buffer hdPassphrase)
Bool isValidBootstrapAddress(string address)
Bool isValidShelleyAddress(string address)
Buffer xpubToHdPassphrase(Buffer xpub)
Buffer blake2b(Buffer input, outputLen)
Buffer cardanoMemoryCombine(Buffer input, String password)
string bech32.encode(string prefix, Buffer data)
Object bech32.decode(string address)
[base58](https://www.npmjs.com/package/base58)
[scrypt](https://www.npmjs.com/package/scrypt-async)
Buffer decodePaperWalletMnemonic(string paperWalletMnemonic)
We encourage you to take a look at test/index.js
to see how the functions above should be used.
npm install
npm run build
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install 1.39.19
./emsdk activate 1.39.19
source ./emsdk_env.sh
cd ../
git clone https://github.com/vacuumlabs/cardano-crypto.js
cd cardano-crypto.js
npm install
npm run build
shasum lib.js # should match shasum of published version of lib.js
When trying to compile the library with emscripten 1.38.41, the cardanoMemoryCombine
function slows down significantly. With the 1.38.8 version it runs significantly faster.
npm run test
Browserify/Webpack bundles can get very large if you include all the wordlists, so you can now exclude wordlists to make your bundle lighter.
For example, if we want to exclude all wordlists besides chinese_simplified, you could build using the browserify command below.
$ browserify -r bip39 -s bip39 \
--exclude=./wordlists/english.json \
--exclude=./wordlists/japanese.json \
--exclude=./wordlists/spanish.json \
--exclude=./wordlists/italian.json \
--exclude=./wordlists/french.json \
--exclude=./wordlists/korean.json \
--exclude=./wordlists/chinese_traditional.json \
> bip39.browser.js
This will create a bundle that only contains the chinese_simplified wordlist, and it will be the default wordlist for all calls without explicit wordlists.
You can also do this in Webpack using the IgnorePlugin
. Here is an example of excluding all non-English wordlists
...
plugins: [
new webpack.IgnorePlugin(/^\.\/wordlists\/(?!english)/, /bip39\/src$/),
],
...
FAQs
input-output-hk/cardano-crypto compiled to pure javascript using Emscripten
The npm package cardano-crypto.js receives a total of 817 weekly downloads. As such, cardano-crypto.js popularity was classified as not popular.
We found that cardano-crypto.js demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 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
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.