Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
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, int protocolMagic)
Buffer packBaseAddress(Buffer spendingHash, Buffer stakingHash, int networkId, BaseAddressType type)
Buffer packPointerAddress(Buffer spendingHash, Object pointer, int networkId, Bool isScript)
Buffer packEnterpriseAddress(Buffer spendingHash, int networkId, Bool isScript)
Buffer packRewardAddress(Buffer stakingHash, int networkId, Bool isScript)
Object getAddressType(Buffer address)
Bool hasSpendingScript(Buffer address)
Bool hasStakingScript(Buffer address)
Object getShelleyAddressInfo(Buffer address)
Object AddressTypes
Object BaseAddressTypes
Buffer addressToBuffer(string address) // address can be either bech32 or base58 encoded
Map getBootstrapAddressAttributes(Buffer address)
Array<int>? getBootstrapAddressDerivationPath(Buffer address, Buffer hdPassphrase)
int getBootstrapAddressProtocolMagic(Buffer address)
Bool isValidBootstrapAddress(string address)
Bool isValidShelleyAddress(string address)
Buffer xpubToHdPassphrase(Buffer xpub)
Buffer getPubKeyBlake2b224Hash(Buffer pubKey)
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 1,074 weekly downloads. As such, cardano-crypto.js popularity was classified as 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
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.