MinaProtocol/c-reference-signer

34

stars

66

commits

C

primary language

Dec 16, 2025

updated

README

Mina reference signer

See main.c for an example usage of how to sign a payment and a stake delegation.

Building

Running make will build the reference_signer and unit_tests.

Repository overview

  • blake2 files: implementation of the blake2b hash function.
  • base10: files for printing field elements in base 10
  • crypto: group operations and the signer
  • pasta files: implementations of the arithmetic of the base and scalar fields of the Pallas curve.
  • base58 files: implementation of base58check encoders and decoders.
  • poseidon: Poseidon hash function
  • utils: small utilities

Unit tests

The unit tests run automatically as part of the build. However, you can also run them manually. There are three modes of operation.

Quiet mode

./unit_tests

The exit value of the process is set when if the unit tests fail. Any errors are printed to stderr.

Verbose mode

./unit_tests v

This prints extra information about addresses and signatures to stdout.

Ledger-gen mode

./unit_tests ledger_gen

This mode is used to automatically generate the unit tests for the Ledger device that contain the target values from this reference signer.

Contributors

imeckler

32 commits

jspada

23 commits

dannywillems

9 commits

georgeee

1 commits

MinaProtocol/c-reference-signer

34

stars

66

commits

C

primary language

Dec 16, 2025

updated

README

Mina reference signer

See main.c for an example usage of how to sign a payment and a stake delegation.

Building

Running make will build the reference_signer and unit_tests.

Repository overview

  • blake2 files: implementation of the blake2b hash function.
  • base10: files for printing field elements in base 10
  • crypto: group operations and the signer
  • pasta files: implementations of the arithmetic of the base and scalar fields of the Pallas curve.
  • base58 files: implementation of base58check encoders and decoders.
  • poseidon: Poseidon hash function
  • utils: small utilities

Unit tests

The unit tests run automatically as part of the build. However, you can also run them manually. There are three modes of operation.

Quiet mode

./unit_tests

The exit value of the process is set when if the unit tests fail. Any errors are printed to stderr.

Verbose mode

./unit_tests v

This prints extra information about addresses and signatures to stdout.

Ledger-gen mode

./unit_tests ledger_gen

This mode is used to automatically generate the unit tests for the Ledger device that contain the target values from this reference signer.

Contributors

imeckler

32 commits

jspada

23 commits

dannywillems

9 commits

georgeee

1 commits

Languages

C

99.8%