Hivecrypt: JavaScript module for Hive memo encrypt/decrypt on wide range of environments

in HiveDevs3 years ago (edited)

Hivecrypt thumbnail.png

Are you getting the following error message when trying to encrypt or decrypt a Hive memo in ElectronJS or React Native using hive-js? Perhaps looking for something that works for your framework that you're using when building your cutting-edge Hive DApp?

Screenshot 20201122 at 12.04.23 PM.png

Introducing Hivecrypt, a module that you can import into a wide range of JavaScript environments, including desktop and mobile app frameworks like ElectronJS, that wouldn't otherwise work with existing libraries.

Adapted from this pull request on dhive that was never merged into master (plus the major help from this file), Hivecrypt was built on Crypto-JS that works on virtually any latest JavaScript environments, unlike the implementation on hive-js and the pull request mentioned above, that uses the crypto NodeJS module that only works on certain environments.

How to use?

Hivecrypt can be installed from npm with the following command:

npm i hivecrypt

It can also be imported into the browser by including the following script tag in your HTML file, where Hivecrypt will be available through window.hivecrypt:

<script src="https://unpkg.com/hivecrypt/bin/hivecrypt.min.js"></script>

Once installed, it may be used for encrypting and decrypting memos just like how it is done with hive-js, but works in more environments.

const hivecrypt = require('hivecrypt') // CommonJS

let encrypted = hivecrypt.encode('privatekey1','publickey2','#somesecretmessage')
let decrypted = hivecrypt.decode('privatekey2',encrypted)

console.log(encrypted,decrypted)

It might not be built with optimizing for the smallest package size in mind, but at least it is something that is usable for devs.

Hive witness footer 2.png


UPDATE: Upon further testing apparently it is not fully cross-compatible with hive-js, perhaps that is why that PR never got merged into master. But at least it would still be useful for my upcoming OneLoveIPFS v2 upgrade.

Sort:  

Would be great to make this compatible, we need small stand-alone library so people don't have to add hive-js if they are using dhive. Adding compatible one to dhive would be better of course, but standalone wouldn't hurt!

Tried to strip down hive-js as well and replace crypto with crypto-js but that didn't work out for me