Categorygithub.com/pseusys/monocypher-go
repositorypackage
0.0.3
Repository: https://github.com/pseusys/monocypher-go.git
Documentation: pkg.go.dev

# README

Monocypher-Go

Inspired by pymonocypher.

GO bindings for monocypher.

Originally, a part of SeasideVPN project.

Preamble

Currently, there are no maintained GO bindings for monocypher. The only repository that I could google was demonshreder/monocypher-go one, however it is marked as not maintained. The proposed replacement was HACKERALERT/Monocypher-Go, however this repository is not currently accessible. Its go index page, however, states:

Please note that I will not be adding new Monocypher functions or features, and that I will only fix security issues for this repository.

Well, I will support this repository of mine, if I have free time and also if I can.

Version

The package depends on Monocypher version 4.0.2. As for now, it is the lates version.

Platforms

This module is currently Linux-only and I do not think I will try to support any other platforms right now. However, all contributions are welcome!

Requirements

This repository uses c-for-go for bindings generation. It can normally be installed using this command:

go install github.com/xlab/c-for-go@latest

This package also (surprisingly!) uses CGO.

Generate and Build

The bindings can be generated using make generate command.

This command can also be triggered normally by go generate, running go generate ./....

Lower and Higher

The package includes the generated C bindings, all of them are public and available in monocypher_internal subpackage.

Also, there are some of the higher-level functions implemented (the ones that I found useful in the Python bindings repository). Feel free to contribute any other high-end bindings you need!

Licences

This repository is published under MIT licence itself. However, do not forget to check the licences of the other libraries it heavily depends on:

  1. Source library code: monocypher licence.
  2. High-level borrowed from: pymonocypher licence.
  3. The generated bindings code: c-for-go generated licence.