All Projects → hyperledger → iroha-ed25519

hyperledger / iroha-ed25519

Licence: Apache-2.0 license
RFC8032 compatible Ed25519 implementation with pluggable hash (sha2-512, sha3-512)

Programming Languages

assembly
5116 projects
c
50402 projects - #5 most used programming language
CMake
9771 projects
C++
36643 projects - #6 most used programming language
SWIG
194 projects
q
29 projects

Projects that are alternatives of or similar to iroha-ed25519

ngx http hmac secure link module
HMAC Secure Link module for NGINX.
Stars: ✭ 47 (+67.86%)
Mutual labels:  openssl, sha3, sha512
Cryptography-Guidelines
Guidance on implementing cryptography as a developer.
Stars: ✭ 15 (-46.43%)
Mutual labels:  sha2, ed25519, sha3
SHA.jl
A performant, 100% native-julia SHA1, SHA2, and SHA3 implementation
Stars: ✭ 35 (+25%)
Mutual labels:  sha2, sha3
noble-hashes
Audited & minimal JS implementation of SHA2, SHA3, RIPEMD, BLAKE2/3, HMAC, HKDF, PBKDF2 & Scrypt
Stars: ✭ 213 (+660.71%)
Mutual labels:  sha3, sha512
pysha2
Pure Python implementation of SHA2 (i.e., SHA224, SHA256, SHA384, and SHA512).
Stars: ✭ 52 (+85.71%)
Mutual labels:  sha2, sha512
rvkrypto-fips
FIPS and higher-level algorithm tests for RISC-V Crypto Extension
Stars: ✭ 18 (-35.71%)
Mutual labels:  sha2, sha3
hash-wasm
Lightning fast hash functions using hand-tuned WebAssembly binaries
Stars: ✭ 382 (+1264.29%)
Mutual labels:  sha3, sha512
WebCrypto.swift
A small collection of cryptographic functions based on the JavaScript WebCrypto API.
Stars: ✭ 16 (-42.86%)
Mutual labels:  openssl, sha512
jscrypto
Crypto library for Node/ES6/Typescript/Browser.
Stars: ✭ 20 (-28.57%)
Mutual labels:  openssl, sha512
sodalite
tweetnacl in rust
Stars: ✭ 26 (-7.14%)
Mutual labels:  ed25519, sha512
sha3
SHA3 for Ruby is a XKCP based native (C) binding to SHA3 (FIPS 202) cryptographic hashing algorithm
Stars: ✭ 35 (+25%)
Mutual labels:  sha3
sscg
Simple Signed Certificate Generator
Stars: ✭ 57 (+103.57%)
Mutual labels:  openssl
esl
Lightweight and flexible UI component library based on web components technology for creating basic UX modules
Stars: ✭ 53 (+89.29%)
Mutual labels:  flexible
jruby-openssl
JRuby's OpenSSL gem
Stars: ✭ 39 (+39.29%)
Mutual labels:  openssl
betting
Fast and flexibly API wrapper for betfair
Stars: ✭ 45 (+60.71%)
Mutual labels:  flexible
pki-manager
IT Freelancers : Manage small PKI for multiple projects (or clients) with 2 bash scripts
Stars: ✭ 36 (+28.57%)
Mutual labels:  openssl
fuseml
FuseML aims to provide an MLOps framework as the medium dynamically integrating together the AI/ML tools of your choice. It's an extensible tool built through collaboration, where Data Engineers and DevOps Engineers can come together and contribute with reusable integration code.
Stars: ✭ 73 (+160.71%)
Mutual labels:  flexible
php jwsign
This is a function wrapping through the Openssl to sign and validate the data, which ensures the integrity and security of the original data.
Stars: ✭ 33 (+17.86%)
Mutual labels:  openssl
mpc
Secure Multi-Party Computation (MPC) with Go. This project implements secure two-party computation with Garbled circuit protocol.
Stars: ✭ 41 (+46.43%)
Mutual labels:  ed25519
Logolas
R package for Enrichment Depletion Logos (EDLogos) and String Logos
Stars: ✭ 25 (-10.71%)
Mutual labels:  flexible

codecov

Ed25519 digital signature algorithm

Ed25519 digital signature algorithm is described in RFC8032. This repository aims to provide modularized implementation of this algorithm.

Originally Ed25519 consists of three modules:

  • digital signature algorithm itself
  • SHA512 hash function
  • random number generator, to generate keypairs

This repository offers at least two different C implementations for every module. Every implementation is tested and can be replaced with other at link-time. New implementations can be added as well.

During CMake time, users are able to choose any of these implementations using cmake definitions:

  • EDIMPL
    • ref10 - portable C implementation.
    • amd64-64-24k-pic - optimized C and ASM implementation, works only on Linux amd64. Has fixes in ASM files, to allow position independent code (-fPIC) builds.
  • HASH
    • sha2_openssl
    • sha2_sphlib
    • sha3_brainhub - default
  • RANDOM
    • rand_openssl
    • dev_urandom - default
    • dev_random
    • bcryptgen (windows only)
  • BUILD
    • STATIC
    • SHARED - build ed25519 library as shared library (default)

Example: We want to build shared library with fast amd64 implementation, SHA3 and PRNG, which reads entropy from /dev/urandom:

$ cmake .. -DEDIMPL=amd64-64-24k-pic -DHASH=sha3_brainhub -DRANDOM=dev_urandom -DBUILD=SHARED                   bogdan@Bogdans-MacBook-Pro
-- [hunter] Calculating Toolchain-SHA1
-- [hunter] Calculating Config-SHA1
-- [hunter] HUNTER_ROOT: /Users/bogdan/.hunter
-- [hunter] [ Hunter-ID: 1c7aaff | Toolchain-ID: 9e23df5 | Config-ID: 997ea55 ]
-- [hunter] GTEST_ROOT: /Users/bogdan/.hunter/_Base/1c7aaff/9e23df5/997ea55/Install (ver.: 1.8.0-hunter-p11)
-- EDIMPL=amd64-64-24k-pic is selected (Ed25519 implementation)
-- HASH=sha3_brainhub is selected (SHA implementation)
-- RANDOM=dev_urandom is selected (RNG implementation)
-- BUILD=SHARED is selected (library build type)
-- [ed25519] Target RANDOM=bcryptgen is not supported on your platform
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/bogdan/tools/iroha-ed25519/build

Note: only those targets (including tests) will be built, which are specified in EDIMPL, HASH, RANDOM variables.

API

Modules

ed25519 digital signature algorithm

  • ref10 - portable but relatively slow C implementation, originally copied from supercop-20171020. Its API was redesigned to separate signature data from the signed message content.
  • amd64-64-24k-pic - fast (4x ref10) but non-portable C and ASM implementation, only for AMD64. Copied from supercop-20171020. Adopted to be included as a module. Has Position Independent Code (-fPIC) fixes by @l4l.

SHA512 has function as a dependency of ed25519

  • sha2_openssl - implementation of FIPS 180-4 SHA2 512 hash function, which uses openssl underneath
  • sha2_sphlib - implementation of FIPS 180-4 SHA2 512 hash function, which was taken from supercop-20190110
  • sha3_brainhub - implementation of FIPS 202 SHA3 512 hash function taken from brainhub repository. Repository consists of a single C file, which was adopted to be included in a project as a module.

PRNG implementation as a dependency of ed25519

To generate keypair ed25519 needs a source of randomness (entropy).

This repository offers 4 implementations:

  • rand_openssl uses RAND_bytes from openssl
  • dev_urandom reads entropy from /dev/urandom
  • dev_random reads entropy from /dev/random (blocking call, uses busy waiting when user asks for more entropy than device can offer)
  • bcryptgen reads entropy from windows preferred entropy source.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].