Skip to content

Wollac/iota-crypto-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crypto demo

This repository contains Go example implementations related to several cryptographic constructs used in various DLTs.

Packages

It contains the following general packages:

  • slip10 implements the SLIP-10 private key derivation with full BIP-32 compatibility.
  • bip32path provides utilities for BIP-32 chains.
  • bip39 implements the BIP-39 specification and mnemonic word lists.
  • bech32 implements Bech32 addresses based on the format described in BIP-173.
  • ed25519 implements Ed25519 signatures with particular validation rules around edge cases as described in ZIP-215.
  • curl implements the Curl ternary hash function in its batched mode. It relies on avo to generate high-performance x86 assembly.
  • merkle implements a simple Merkle tree hash.
  • pow implements the Curl-based proof of work for arbitrary binary data as mentioned in TIP-12.
  • encoding/b1t6 implements the binary-to-ternary encoding which uses 6 trits to represent each byte.
  • encoding/b1t8 implements the binary-to-ternary encoding which uses 8 trits to represent each byte.
  • migration implements the migration address computation as described in this document: https://hackmd.io/@wollac/H1tZoCK0w

All these packages are tested against the full test vectors provided in the corresponding specifications.

Examples

  • bech32 encode and decode addresses using the bech32 address scheme.
    Run the example with go run examples/bech32/main.go and use -help to see the available commands.
  • kdf shows the private and public key derivation using SLIP-10 and BIP-39 mnemonics + passphrase.
    It performs the legacy IOTA seed derivation (as implemented in the Ledger App) based on BIP-32 and the Ed25519 key derivation following SLIP-10.
    Run with go run examples/kdf/main.go and use -help to see the available command-line flags.
  • merkle prints the Merkle tree of several random transaction hashes on the console.
    Run with go run examples/merkle/main.go and use -help to see the available command-line flags.
  • mnemseed presents the extension of BIP-0039 to decode and encode 81-tryte legacy IOTA seeds using mnemonics.
    Run with go run examples/mnemseed/main.go and use -help to see the available command-line flags.

About

Go implementations for various DLT crypto primitives

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published