UNNetPGP 0.8.1

UNNetPGP 0.8.1

TestsTested
LangLanguage CC
License Apache 2
ReleasedLast Release Aug 2017

Maintained by Marcin Krzyżanowski.


Downloads

Total179
Week0
Month0

Installs

Apps37
Pod Tries2
Test Targets2
powered by Segment

GitHub

Stars67
Watchers14
Forks19
Issues2
Contributors5
Pull Requests0

Code

Files47
LOCLines of Code 18,765


UNNetPGP 0.8.1

  • By
  • Marcin Krzyżanowski and Nominet UK

UNNetPGP is Objective-C wrapper for NetPGP for iOS.

About

The PGP solution you've been looking for is here. Low level C based api with Objective-C wrapper around it is all you need to encrypt and decrypt PGP messages. Based on NetPGP, a standards-compliant library and suite of utilities providing digital signature and verification functionality, as well as data encryption and decryption, using RSA and DSA/Elgamal keys.

Installation

This package is intended to be used with Cocoapods to satisfy OpenSSL dependency.

Add this to you Podfile:

pod 'UNNetPGP', :podspec => 'https://raw.github.com/upnext/unnetpgp/master/UNNetPGP.podspec'
  • Without Cocoapods

Something with Source Trees should do the trick but haven't tested. Pull request welcome.

Usage

Initialize and setup

UNNetPGP *pgp = [[UNNetPGP alloc] initWithUserId:@"[email protected]"];
pgp.password = @"secret1234";
pgp.armored  = YES

Optionally you can specify ringfiles out of home directory

pgp.publicKeyRingPath = [[self documentsDirectory] stringByAppendingPathComponent:@"pubring.gpg"];
pgp.secretKeyRingPath = [[self documentsDirectory] stringByAppendingPathComponent:@"secring.gpg"];

Lets define filenames. Caution: file extension is important for some files! (.gpg,.asc)

NSString *plaintextFile = [myDir stringByAppendingPathComponent:@"plain.txt"];
NSString *encryptedFile = [myDir stringByAppendingPathComponent:@"plain.txt.gpg"];
NSString *decryptedFile = [myDir stringByAppendingPathComponent:@"plain.decoded.txt"];
NSString *signatureFile = [myDir stringByAppendingPathComponent:@"plain.txt.asc"];

Encrypt file

BOOL result = [pgp encryptFileAtPath:plainFilePath toFileAtPath:encryptedFilePath options:UNEncryptOptionNone];
NSLog(@"encryptedFilePath = %@",@(result));

Decrypt file

BOOL result = [pgp decryptFileAtPath:encryptedFilePath toFileAtPath:decryptedFilePath];
NSLog(@"decryptFileAtPath = %@",@(result));

Generate new key (and save in keyring)

BOOL success = [pgp generateKey:1024];

Create file signature

BOOL success = [pgp signFileAtPath:plaintextFile writeToFile:signatureFile detached:YES];

Verify file signature. Caution: there is assumption that signed file exists in the same directory.

BOOL success = [pgp verifyFileAtPath:signatureFile];

Authors

Marcin Krzyżanowski