PGP library for iOS and Android available through gomobile

To use EasyPGP you would need to install gomobile tools, following tutorial. You also need to patch gomobile to support Uint64:

diff --git a/bind/gen.go b/bind/gen.go
index 546c5cf4..0428230f 100644
--- a/bind/gen.go
+++ b/bind/gen.go
@@ -232,7 +232,9 @@ func (g *Generator) cgoType(t types.Type) string {
            return "int64_t"
        case types.Uint8: // types.Byte
            return "uint8_t"
-       // TODO(crawshaw): case types.Uint, types.Uint16, types.Uint32, types.Uint64:
+       // TODO(crawshaw): case types.Uint, types.Uint16, types.Uint32:
+       case types.Uint64:
+           return "uint64_t"
        case types.Float32:
            return "float"
        case types.Float64, types.UntypedFloat:

After that you can build EasyPGP.framework:

go get github.com/lastochkanetwork/easypgp

# For iOS
gomobile bind -target=ios -o EasyPGP.framework  github.com/lastochkanetwork/easypgp

# For Android
gomobile bind -target=android  github.com/lastochkanetwork/easypgp

After adding EasyPGP.framework to your project you can straight-forward use it.

Swift example:

let pubkey1  = "-----BEGIN PGP PUBLIC KEY BLOCK-----...."
let privkey1 = "-----BEGIN PGP PRIVATE KEY BLOCK-----...."
let pubkey2  = "-----BEGIN PGP PUBLIC KEY BLOCK-----...."
let privkey2 = "-----BEGIN PGP PRIVATE KEY BLOCK-----...."

let sender = EasypgpNewKeyPairWithKeys(pubkey1, privkey1)
let receiver = EasypgpNewKeyPairWithKeys(pubkey2, nil)
let receiver_with_privkey = EasypgpNewKeyPairWithKeys(pubkey2, privkey2)

let msg = EasypgpEncryptAndSign("hello, world!", receiver, sender, nil)

let decrypted = EasypgpDecryptAndVerify(msg, receiver_with_privkey, nil)

Repo Not Found