Skip to content

lastochkanetwork/EasyPGP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EasyPGP

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())!)