
ObjectivePGP ist eine Implementierung des OpenPGP -Protokolls für iOS und macOS. OpenPGP ist der am häufigsten verwendete E -Mail -Verschlüsselungsstandard. Es wird von der OpenPGP -Arbeitsgruppe der Internet Engineering Task Force (IETF) definiert.
Hier ist die Blog -Postgeschichte.
Du willst helfen, großartig! Gehen Sie voran und geben Sie unser Repo, nehmen Sie Ihre Änderungen vor und senden Sie uns eine Pull -Anfrage.
Sie können einen Beitrag leisten. Siehe Beitrag.md
Bitte erstellen Sie Pull -Anfrage.
Das objektivePGP bleibt unter einer doppelten Lizenz:
Kostenlos für den nichtkommerziellen Gebrauch, abgedeckt von der Variante der BSD-Lizenz. Das bedeutet, dass Sie Marcin Krzyżanowski als ursprünglicher Autor dieses Codes erwähnen und den Lizenztext in Ihrer App reproduzieren müssen.
Gewerbebrauchslizenz zur Verwendung in kommerziellen Produkten. Bitte beachten Sie, dass einige kostenlose Produkte kommerzielle Produkte bleiben. Bitte kontaktieren Sie mich per E -Mail, um Details zu erhalten.
Nicht sicher, was ich wählen soll? FAQ überprüfen
dependencies: [
.package(url: "https://github.com/krzyzanowskim/ObjectivePGP.git", .upToNextMinor(from: "0.99.4"))
]
pod 'ObjectivePGP'
ObjectivePGP wird mit den Frameworks für die neueste Version geliefert. Sie können Ihr Projekt kopieren und einbetten:
Ziel-C
# import < ObjectivePGP/ObjectivePGP.h >Schnell
import ObjectivePGP NSArray <PGPKey *> *keys = [ObjectivePGP readKeysFromPath: @" /path/to/key.asc " error: nil ]; let keys = try ObjectivePGP . readKeys ( fromPath : " /path/to/key.asc " ) Der Schlüsselring ist ein Speicher (in Speicher oder auf der Festplatte), die alle Arten von PGP -Tasten aufbewahrt.
PGPKeyring *keyring = ObjectivePGP.defaultKeyring;
PGPKeyring *keyring = [[PGPKeyring alloc ] init ];
NSArray <PGPKey *> *allKeys = keyring.keys;
[keyring importKeys: @[key]];
[keyring deleteKeys: @[key]];
[keyring importKey: @" 979E4B03DFFE30C6 " fromPath: @" /path/to/secring.gpg " ];
PGPKey *key = [keyring findKeyWithIdentifier: @" 979E4B03DFFE30C6 " ];
NSArray <PGPKey *> keys = [pgp findKeysForUserID: @" Name <[email protected]> " ]; let keyring = ObjectivePGP . defaultKeyring
let keyring = Keyring ( )
let allKeys = keyring . keys
keyring . import ( keys : [ key ] )
keyring . delete ( keys : [ key ] )
keyring . import ( keyIdentifier : " 979E4B03DFFE30C6 " , fromPath : " /path/to/secring.gpg " )
if let key = keyring . findKey ( " 979E4B03DFFE30C6 " ) {
// key found in keyring
}
keyring . findKeys ( " Name <[email protected]> " ) . forEach ( key ) {
// process key
} // Write keyring to file
[[keyring export: error] writeToURL: [ NSURL fileURLWithString: @" keyring.gpg " ]];
// Public keys data
NSData *publicKeys = [keyring exportKeysOfType: PGPKeyTypePublic error: nil ];// Write keyring to file
try keyring . export ( ) . write ( to : URL ( fileURLWithPath : " keyring.gpg " ) )
// Public keys (Data)
let publicKeys = keyring . exportKeys ( of : . public ) Unterschreiben Sie eine Daten mit einem Schlüssel:
NSData *signature = [ObjectivePGP sign: fileContent detached: YES usingKeys: @[key] passphraseForKey: nil error: nil ];
[ObjectivePGP verify: fileContent withSignature: signature usingKeys: @[key] passphraseForKey: nil error: nil ]; let signature = try ObjectivePGP . sign ( encryptedBin , detached : true , using : [ key1 ] )
try ObjectivePGP . verify ( encryptedBin , withSignature : signature , using : [ key1 ] ) NSData *encrypted = [ObjectivePGP encrypt :fileContent addSignature: YES usingKeys: @[key] passphraseForKey: nil error: nil ];
[ObjectivePGP decrypt: encrypted andVerifySignature: YES usingKeys: @[key] passphraseForKey: nil error: nil ]; let encrypted = try ObjectivePGP . encrypt ( fileContent ) , addSignature : true , using : [ key1 , key2 ] )
let decrypted = try ObjectivePGP . decrypt ( encrypted , andVerifySignature : true , using : [ key1 ] ) PGPKeyGenerator *generator = [[PGPKeyGenerator alloc ] init ];
PGPKey *key = [generator generateFor: @" Marcin <[email protected]> " passphrase: nil ];
NSData *publicKeyData = [key export: PGPKeyTypePublic error: nil ];
NSData *secretKeyData = [key export: PGPKeyTypeSecret error: nil ]; let key = KeyGenerator ( ) . generate ( for : " [email protected] " , passphrase : " password " )
let publicKey = try key . export ( keyType : . public )
let secretKey = try key . export ( keyType : . secret ) ASCII-Rüstung ist ein Binär- bis textueller Codierungswandler. ASCII -Rüstung umfasst die Einhüllung verschlüsselter Nachrichten in ASCII, damit sie in einem Standard -Messaging -Format wie E -Mail gesendet werden können.
Beispiel:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: For more info see https://www.objectivepgp.org
[...]
-----END PGP PUBLIC KEY BLOCK-----
Die Klasse PGPArmor der Klasse kann verwendet werden, um das Binärformat in das ASCII -Format umzuwandeln
NSString *armoredKey = [PGPArmor armoredData: encrypted as: PGPArmorPublicKey]; let armoredKey = Armor . armored ( Data ( ) , as : . publicKey ) Wenn man manuell konvertiert, ist es wichtig, den richtigen PGPArmorType -Wert zu verwenden, der den Header definiert. Es kann ein schwieriger Teil sein, also hier ist das Cheatsheet:
| Geben Sie Daten ein | Pgparmortype | Beispiel |
|---|---|---|
| Verschlüsselt | PGPArmorMessage | Armor.armored(ObjectivePGP.encrypt(...), as: .message) |
| Entschlüsselt | PGPArmorMessage | Armor.armored(ObjectivePGP.decrypt(...), as: .message) |
| Öffentlicher Schlüssel | PGPArmorTypePublic | Armor.armored(key.export(), as: .publicKey) |
| Geheimer Schlüssel | PGPArmorTypeSecret | Armor.armored(key.export(), as: .secretKey) |
Für jedes Ergebnis der Verschlüsselung ist der Typ PGPArmorMessage
Siehe ChangeLog
Bekannte Einschränkungen:
Bisher hat die ObjektivePGP -Code -Basis eine vollständige Sicherheitsprüfung von CURE53 durchlaufen.
Dieses Produkt verwendet Software, die vom OpenSSL -Projekt für die Verwendung im OpenSSL -Toolkit entwickelt wurde. (http://www.opensl.org/)
Marcin Krzyżanowski