💾 Install • 🎮 Quick start • 🐝 API • 📋 Testing • 😍 Acknowledgements • 🌐 Links • 👤 Contributing • 💼 Disclaimer
This is the port of zenroom language ported out of Zenroom's VM to run on Lua 5.1 and all derivates (including Luajit, Nginx, Openresty and Tarantool)
Lua Zenroom is a portable cryptographic module aiming to execute secure cryptographic computations within distributed computing environments that can be easily scripted by Lua.
This Lua module works only on 64-bit systems. For 32-bit support please use the Zenroom VM.
To build from source the following dependencies are needed:
gcc make cmake zsh
Then simply run the default targets of Makefile
:
make && make install
Lua Zenroom will be installed in /usr/local/lib/lua/5.1/libzenroom.so
and /usr/local/share/lua/5.1/zenroom/
.
Luarocks spec file and upload is work in progress.
To see Lua-Zenroom in action you can fire up the Lua interpreter loading zenroom
luajit -l zenroom
As a working example you can now generate an ECDH keypair
keypair = ECDH.keygen()
print(keypair.private)
print(keypair.public)
If you prefer to print them out in base58
or hex
encoding:
print(keypair.private:base58())
print(keypair.public:hex())
A tutorial about crypto modeling with Zenroom in Lua is also available.
Look at the Zenroom internal API in Lua to see the current API, more documentation will come soon.
You are welcome to join the Zenroom telegram channel and ask for help.
Run the test with
make check
The above includes NIST tests on hashing algorithms SHA256 and SHA512.
Random quality tests (FIPS140) need rng-tools
to be installed, then run:
make check-random
There are some known issues under analysis:
- SHA3 functions are not yet passing NIST tests
- RNG determinism works but is not yet compatible with Zenroom VM
If you find any problem or suspicious behaviours please open an issue
If you intend to use lua-zenroom in production please consider getting in touch with us.
Copyright © 2020-2021 by Dyne.org foundation, Amsterdam.
Lua Zenroom is licensed as AGPLv3; we are open to grant license exceptions for specific needs.
Designed, written and maintained by Denis "Jaromil" Roio
with help by Puria Nafisi Azizi and Andrea D'Intino
Enterprise level support contracts are available upon request, as well customisations and license exceptions: you are welcome to get in touch with us.
- Zenroom: the main project this Lua module stems from
- Zenroom on Github: the main code repository for Zenroom
- DECODE: the European resewarch project that gave birth to Zenroom
- Zencode documentation: the Zencode DSL uses Zenroom primitives
- Dyne.org: the foundation behind all this, established in 1999
Please first take a look at the Dyne.org - Contributor License Agreement then
- 🔀 FORK IT
- Create your feature branch
git checkout -b feature/branch
- Commit your changes
git commit -am 'Add some fooBar'
- Push to the branch
git push origin feature/branch
- Create a new Pull Request
- 🙏 Thank you
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.
This software Includes the cryptographic library Milagro released under the Apache License, Version 2.0
- Copyright (C) 2016 MIRACL UK Ltd
- Copyright (C) 2019 The Apache Software Foundation