No description
Find a file
2019-05-14 15:45:15 +02:00
armor fix typo / improve documentatation 2019-05-13 12:33:01 +00:00
constants fix compile 2019-03-07 16:56:12 +01:00
crypto Don't loop forever when passed an incorrect password 2019-05-14 13:34:42 +00:00
dist/Android Minor build fixes 2018-11-01 17:03:43 +01:00
internal fix typo / improve documentatation 2019-05-13 12:33:01 +00:00
models fix typo / improve documentatation 2019-05-13 12:33:01 +00:00
.gitignore Remove unused code + handle errors 2019-05-13 12:42:29 +00:00
.gitlab-ci.yml Add code coverage to CI 2019-05-09 18:57:27 +02:00
build.sh Minor: iOS building target name 2018-11-22 10:56:56 +01:00
Changelog.md fix compile 2019-03-07 16:56:12 +01:00
glide.lock Fix existing tests, move large constants to files 2019-05-09 18:19:14 +02:00
glide.yaml Minor build fixes 2018-11-01 17:03:43 +01:00
notes.txt wrapper for mobile 2018-06-04 16:05:14 -07:00
README.md Add key generation examples 2019-05-14 15:45:15 +02:00

GopenPGP Wrapper Library

Download/Install

Manually git clone the repository into $GOPATH/src/github.com/ProtonMail/go-pm-crypto.

This library is meant to be used together with https://github.com/ProtonMail/crypto.

Using with Go Mobile

Setup Go Mobile and build/bind the source code:

Go Mobile repo: https://github.com/golang/mobile
Go Mobile wiki: https://github.com/golang/go/wiki/Mobile

  1. Install Go: brew install go

  2. Install Gomobile: go get -u golang.org/x/mobile/cmd/gomobile

  3. Install Gobind: go install golang.org/x/mobile/cmd/gobind

  4. Install Android SDK and NDK using Android Studio

  5. Set env: export ANDROID_HOME="/AndroidSDK" (path to your SDK)

  6. Init gomobile: gomobile init -ndk /AndroidSDK/ndk-bundle/ (path to your NDK)

  7. Build examples:
    gomobile build -target=android #or ios

    Bind examples:
    gomobile bind -target ios -o frameworks/name.framework
    gomobile bind -target android

    The bind will create framework for iOS and jar&aar files for Android (x86_64 and ARM).

Other notes

This project uses glide to setup vendors.

Interfacing between Go and Swift: https://medium.com/@matryer/tutorial-calling-go-code-from-swift-on-ios-and-vice-versa-with-gomobile-7925620c17a4.

If you use build.sh, you may need to modify the paths in it.

Examples

Set up

Encrypt and decrypt

Generate key

Keys are generated with the GenerateKey function, that returns the armored key as a string and a potential error.
The library supports RSA with different key lengths or Curve25519 keys.

var pmCrypto = PmCrypto{}

var (
  localPart = "name.surname"
  domain = "example.com"
  passphrase = "LongSecret"
  rsaBits = 2048
  ecBits = 256
)

// RSA
rsaKey, err := pmCrypto.GenerateKey(localPart, domain, passphrase, "rsa", rsaBits)

// Curve 25519
ecKey, err := pmCrypto.GenerateKey(localPart, domain, passphrase, "x25519", ecBits)

Sign

Detached signatures