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)
NSLog((msg?.cipher())!)
let decrypted = EasypgpDecryptAndVerify(msg, receiver_with_privkey, nil)
NSLog((decrypted?.text())!)