PGPro can encrypt and decrypt messages as well as manage all your OpenPGP keys. It is free, simple and lightweight. Everything stays on your device. PGPro is made in Switzerland.

Overview

License Swift GitHub code size in bytes iTunes App Store Codacy Badge FOSSA Status

PGPro can encrypt and decrypt messages as well as manage all your OpenPGP keys. It is free, simple and lightweight. Everything stays on your device. PGPro is made in Switzerland.

Screenshots

Contribution

You are welcome to contribute. Please create a Pull Request.

Changelog

See https://pgpro.app/changelog/.

License

This project is licensed under the GNU GENERAL PUBLIC LICENSE - see the LICENSE file for details.

FOSSA Status

Security Audit

The cryptographic library used by PGPro, ObjectivePGP, has undergone a complete security audit from Cure53.

Acknowledgment

This project uses the ObjectivePGP library developed by Marcin Krzyżanowski. Thereby it uses software developed by the OpenSSL Project for use in the OpenSSL Toolkit.

Author

Luca Näf

Comments
  • Add support for ECC keys

    Add support for ECC keys

    Hello lucanaef,

    i want to try your PGPro app to use GPG encryption on my iOS 14.1 device. Unfortunatly i failed to import my GPG private and public key. Reason was "Unsupported Key".

    I have generated my keys using the following command on a debian buster system:

    gpg --quick-gen-key "Name <email>" ed25519 cert 2y
    gpg --quick-add-key [keyid] cv25519 encr 1y
    gpg --quick-add-key [keyid] ed25519 auth 1y
    gpg --quick-add-key [keyid] ed25519 sign 1y
    

    I use the following version of GnuPG

    gpg (GnuPG) 2.2.12
    libgcrypt 1.8.4
    

    Do you have an idea if i make anything wrong, or is this "state of the art" key really not supportes? If second, will/can support for this kind of key be available in the near future?

    Kind regards Oliver Koch

    enhancement 
    opened by oliver-koch 11
  • Add support for OpenKeychain (Android) QR Codes

    Add support for OpenKeychain (Android) QR Codes

    The OpenKeychain QR code simply contains a plaintext string with the format OPENPGP4FPR:<Fingerprint>.

    Here's an example of the generated QR code for Edward, an email bot from the FSF to test email encryption (as in emailselfdefense.fsf.org).

    Screenshot_20210601-015552_OpenKeychain.jpg OPENPGP4FPR:F357AA1A5B1FA42CFD9FE52A9FF2194CC09A61E8.

    Adding the ability to scan the QR code would be a great way to instantly add another public key without the need of manually enter an email or the fingerprint into the app. This can be done by:

    1. Scanning the QR code
    2. Check whether the payload is valid
    3. Search signature on keyservers

    The OpenKeychain app also uses this functionality to verify confirm other public keys, if the current private key is capable of confirming other keys (aka. unstripped).

    Screenshot_20210601-104629_OpenKeychain.jpg

    Screenshot_20210601-104748_OpenKeychain.jpg

    Screenshot_20210601-104821_OpenKeychain.jpg

    enhancement 
    opened by reinhart1010 5
  • Import priv key after matching pub key

    Import priv key after matching pub key

    I got the issue that I can’t import a key pair one after another. First the pub key and then the priv key e.g. just one of them. Preproduction with any key pair. iPhone 8 13.4.1 App Version. 2020.02

    enhancement 
    opened by damanti-me 5
  • Where is the private key stored ?

    Where is the private key stored ?

    Hi, could you include in the description/documentation where the private keys are stored and how access to them is secured ? It's quite sensitive to upload a private key, without knowing where it is going ...

    Great job anyway ! Thanks !

    documentation 
    opened by mwid2020 5
  • .gitignored project files?

    .gitignored project files?

    Hello,

    I come across this project and would like to get started with it, but unfortunately all the Xcode project files is gitignored. Can you please share why? At the moment I wasn't able to find any reasoning neither in git history, nor on the website. It seems to be added just the second commit to the repo.

    Gitignore file seems to be autogenerated and it is too broad – repo obviously does not contain swift package library, but it has spm artifacts gitignored as well. Xcode gitignore section contains both reasonable lines (like xcuserdata) and also lines I find unreasonable to gitignore (like xcodeproj).

    In my opinion, whole Xcode section should be discarded and SwiftPM section too, but Swift section kept. In my projects, I usually only have this much:

    # Mac OS X
    .DS_Store
    
    # Backup files
    *~.nib
    
    # Xcode
    build/*
    *.pbxuser
    !default.pbxuser
    *.mode1v3
    !default.mode1v3
    *.mode2v3
    !default.mode2v3
    *.perspectivev3
    !default.perspectivev3
    *.xccheckout
    xcuserdata
    profile
    *.moved-aside
    DerivedData
    *.xcscmblueprint
    
    # AppCode
    .idea
    

    Would you mind sharing xcodeproj (and xcworkspace if any) with the rest of the world please?

    opened by ReDetection 4
  • Unable to decrypt message from Thunderbird

    Unable to decrypt message from Thunderbird

    Thanks for making PGPro, I think it is a long missing addition to the iOS ecosystem. However I got one problem: when I receive an encrypted mail sent from Thunderbird 78.3.2 and forward it to PGPro from the built-in iOS Email app, PGPro fails to decrypt it. The error msg is simply "Decryption failed!". I can decrypt other PGP blocks and tracked down the error to the fact, that PGP blocks generated as above are missing an empty line after the line "-----BEGIN PGP MESSAGE-----". This only seems to be the case when I directly forward the "encrypted.asc" MIME attachment from the iOS EMail app to PGPro. When I somehow get the attachment into a text editor and from there copy&paste it to PGPRo, decryption works. Needless to say, the latter is extremely inconvenient on an iOS device ... :-)

    bug 
    opened by tom709 4
  • Security Issue

    Security Issue

    Hi @lucanaef,

    I've come across what seems to be, in my estimation, a low-severity security issue.

    Can you provide me with your pubkey and email for further dialog on this topic?

    Thanks, Jonathan

    Edit: Alternatively, you can reach out to me directly via the contact info on my profile.

    opened by jhalt 4
  • Hiding keypad

    Hiding keypad

    Hi, first: great move to create an open source app for iOS for PGP encrypten/decryption ! That was needed !

    When editing a message for encryption, it is not easily possible to hide the keypad again to access the bottom controls bar. Any simple common way to hide the keypad (selecting a public key does it ... but it's not so intuitive.

    enhancement 
    opened by mwid2020 4
  • Set up foundation for localization

    Set up foundation for localization

    This PR converts all naked strings that are used for display into NSLocalizedStrings, and generates the xcloc file for en locale. Currently no additional locale is added, but it unlocks adding future locales.

    Hopefully this solves the concern of #76 and paves the way for #88

    enhancement 
    opened by DJBen 3
  • App crashes when trying to decrypt

    App crashes when trying to decrypt

    Might just be a user error as this seems to be too a basic functionality to not be working, but still. Here's my error and how to reproduce:

    1. I have an encrypted e-mail in the Apple Mail app. I have clicked on the encrypted message attachment (encrypted.asc) and click on PGPro in the share screen.
    2. So far so good. The encrypted content is displayed in the Decryption window, I can select my key and enter my passphrase. I click on the open envelope on the top right and:
    3. The app just shuts down and when I restart all the details are gone.

    Am I doing something wrong? Is there something wrong with my key? The same key works on macOS Mail using GPGTools.

    Some things I've tried:

    • Manually pasting encrypted contents
    • Entering a wrong password (get an error message, so I'm using the right one)

    Using an iPhone 12, iOS 15.0.1

    Let me know if I can provide you with anything or try anything. Thank you for this!

    bug 
    opened by SerafinDinges 3
  • Please Enable iOS 12.4.x Support. App Shows: iOS 13 Required.

    Please Enable iOS 12.4.x Support. App Shows: iOS 13 Required.

    Hi,
    could not run the app in iOS v12.4.x iPhone-6.

    this app or AppStore shows message (after or during install), that,
    iOS v13 or above is needed.
    :(

    Please enable support for iOS v12.4.x / v12 (when time-permits to do so).
    i'm sure, lots of users still using iPhone-6.

    opened by atErik 3
  • Add support for profile notations

    Add support for profile notations

    I have been using http://keyoxide.org/ for identify verification, and it makes use of OpenPGP profile notations for identity claims. Details can be found here: https://docs.keyoxide.org/openpgp-profiles/using-gnupg/#Adding_an_identity_claim. I was wondering if it would be possible to add support for this feature?

    enhancement 
    opened by rrgeorge 1
  • Can't decrypt encrypted.asc from Mail

    Can't decrypt encrypted.asc from Mail

    First off, thank you very much for this great app! I got an error after trying to send you an e-mail on [email protected] Recipient address rejected: Address does not exist so I'll just ask here: I encounter an issue, not being able to read the content of an encrypted message. In Mail I open the encrypted.asc file and send it to PGPro. In the settings I enable undor Preferences “Mail Integration” but still no luck. I can read a bit of the headers but nothing of the e-mails content is being decrypted. Any idea how to solve this?

    I’m on an iPhone SE 2022, iOS 15.6.1 and the latest version of your app, 2021.4

    Thank you in advance.

    bug 
    opened by chriscapisce 1
  • Request for animated QR of data

    Request for animated QR of data

    Would it be possible to add a way to export the file into a QR that is animated?

    And then also import that data back into the app from access to photos?

    enhancement 
    opened by punterwantsawhalepass 1
  • App not prioritizing correct private key

    App not prioritizing correct private key

    When importing a private key, the app is loading and using the expired key rather than the unexpired key. The keys are listed in gpg --list-packets in this order:

    cv25519 (encryption) [expired] ed25519 (signing) [expired] rsa4096 (signing) [valid] rsa4096 (encryption) [valid] rsa4096 (authentication) [valid]

    Also note that importing the public keys via paste or file has the same issue. Importing the public key via key server works as expected.

    Another key set works as expected, though the EC keys are valid and also listed first.

    bug 
    opened by mcnc-clovett 0
Owner
Luca Näf
CS student at ETH Zurich
Luca Näf
A super simple tool for macOS Swift developers to check validity of a Gumroad-issued software license keys

Gumroad License Validator Overview A super simple tool for macOS Swift developers to check validity of a Gumroad-issued software license keys Requirem

Daniel Kašaj 13 Sep 2, 2022
Cloak Swift - a tool and Tuist plugin to encrypt secrets and then pass them in an obfuscated form into applications

This is Cloak Swift - a tool and Tuist plugin to encrypt secrets and then pass them in an obfuscated form into applications.

Andrew Lord 3 Nov 9, 2022
A tiny and easy to use Swift class to encrypt strings using HMAC algorithms.

#Sweet HMAC SweetHMAC is a tiny and easy to use Swift class to encrypt strings using HMAC algorithms. A special thanks to jernejstrasner for shared HM

Jan Cássio 37 Jul 27, 2022
A key value store for storing per-developer environment and application keys

A key value store for enviroment and application keys. Its good security practice to keep production keys out of developer hands. CocoaPods-keys makes

Orta Therox 1.5k Dec 20, 2022
PassDrop is a fully-featured secure password management system, compatible with the free KeePass 1.x (Classic) and multi-platform KeePassX desktop applications.

passdrop This is a modern, updated build of Rudis Muiznieks's PassDrop application. PassDrop is a fully-featured secure password management system, co

Chad Austin 33 Sep 23, 2022
Conflict-free Replicated Data Types in Swift

CRDT An implementation of ∂-state based Conflict-free Replicated Data Types (CRDT) in the Swift language. Overview This library implements well-known

Joseph Heck 29 Dec 8, 2022
iOS library for device fingerprinting. Does not require server APIs to work, fully client-side operation.

Lightweight iOS library for local device fingerprinting Installation (CocoaPods) # Podfile pod 'FingerprintJS' Note: If you've never used CocoaPods fo

FingerprintJS 45 Dec 17, 2022
Oversecured Vulnerable iOS App is an iOS app that aggregates all the platform's known and popular security vulnerabilities.

Description Oversecured Vulnerable iOS App is an iOS app that aggregates all the platform's known and popular security vulnerabilities. List of vulner

Oversecured Inc 135 Dec 15, 2022
Wrapper class for handling all tasks related to RSA cryptography

RSAWrapper Wrapper class for handling all tasks related to RSA cryptography USAG

null 1 Dec 24, 2021
Generate passwords and save them in Keychain. Made with SwiftUI.

lockd Generate strong passwords and save them in Keychain. Join lockd Beta on TestFlight: https://testflight.apple.com/join/xJ5AlvS3 Features: Generat

Iliane 56 Dec 29, 2022
A lightweight stochastic optimizer based on slime mold (Slime Mold Algorithm)

Slime This is a Swift implementation of a Slime Mold Algorithm - a stochastic optimizer - generally based on this paper The only dependency required b

Ethan J 4 Aug 6, 2022
A customizable verification code textField. Can be used for phone verification codes, passwords etc

KKPinCodeTextField A customizable verification code textField. Can be used for phone verification codes, passwords etc. Настраиваемое текстовое поле д

Kolesa Group 66 Jul 5, 2022
Simple, secure password and data management for individuals and teams

Padloc Simple, secure password and data management for individuals and teams (formerly known as Padlock). This repo is split into multiple packages: P

Padloc 2.1k Jan 8, 2023
Simple and secure hashing in Swift with the SipHash algorithm

SipHash ⚠️ WARNING This package has been obsoleted by the Hasher type and the Hashable.hash(into:) requirement introduced in Swift 4.2. Using this pac

null 262 Dec 19, 2022
Simple Swift wrapper for Keychain that works on iOS, watchOS, tvOS and macOS.

KeychainAccess KeychainAccess is a simple Swift wrapper for Keychain that works on iOS and OS X. Makes using Keychain APIs extremely easy and much mor

Kishikawa Katsumi 7.2k Dec 30, 2022
A simple Swift Keychain Wrapper for iOS, watchOS, and OS X.

Latch A simple Swift 2.0 Keychain Wrapper for iOS, watchOS 2, and OS X. Usage A proper example of how to use Latch can be seen in the tests. import La

Danielle 56 Oct 25, 2022
Simple Objective-C wrapper for the keychain that works on Mac and iOS

SAMKeychain SAMKeychain is a simple wrapper for accessing accounts, getting passwords, setting passwords, and deleting passwords using the system Keyc

Sam Soffes 5.4k Dec 29, 2022
TouchEncryptedJson - Simple project that accepts an input and encrypts it with the TouchID on a Mac

TouchEncryptedJson Simple project that accepts an input and encrypts it with the

Charles Edge 2 Aug 29, 2022
A simple way of doing both symmetric and asymmetric crypto without the headache

Simple Swift Crypto I needed a simple way of doing both symmetric and asymmetric

Joe Hinkle 6 Dec 19, 2022