
ObjectivePGP adalah implementasi protokol OpenPGP untuk iOS dan macOS. OpenPGP adalah standar enkripsi email yang paling banyak digunakan. Ini didefinisikan oleh kelompok kerja OpenPGP dari Internet Engineering Task Force (IETF).
Ini adalah cerita posting blog.
Anda ingin membantu, bagus! Silakan dan membayar repo kami, buat perubahan Anda dan kirimkan permintaan tarik kepada kami.
Anda dipersilakan untuk berkontribusi. Lihat Contributing.md
Harap buat permintaan tarik.
ObjectivePGP tetap di bawah lisensi ganda:
Gratis untuk penggunaan non-komersial, dicakup oleh varian lisensi BSD. Itu berarti Anda harus menyebutkan Marcin Krzyżanowski sebagai penulis asli kode ini dan mereproduksi teks lisensi di dalam aplikasi Anda.
Lisensi penggunaan komersial untuk digunakan dalam produk komersial. Harap diingat bahwa beberapa produk gratis tetap menjadi produk komersial. Silakan hubungi saya melalui email untuk detailnya.
Tidak yakin apa yang harus dipilih? Periksa FAQ
dependencies: [
.package(url: "https://github.com/krzyzanowskim/ObjectivePGP.git", .upToNextMinor(from: "0.99.4"))
]
pod 'ObjectivePGP'
ObjectivePGP hadir dengan kerangka kerja untuk rilis terbaru, Anda dapat menyalin dan menanamkan dalam proyek Anda:
Objektif-C
# import < ObjectivePGP/ObjectivePGP.h >Cepat
import ObjectivePGP NSArray <PGPKey *> *keys = [ObjectivePGP readKeysFromPath: @" /path/to/key.asc " error: nil ]; let keys = try ObjectivePGP . readKeys ( fromPath : " /path/to/key.asc " ) Keyring adalah penyimpanan (dalam memori atau pada disk) yang menjaga segala macam kunci PGP.
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 ) Menandatangani data dengan kunci:
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 Armor adalah konverter pengkodean biner-ke-tekstual. Armor ASCII melibatkan pencabutan pesan terenkripsi di ASCII sehingga mereka dapat dikirim dalam format pesan standar seperti email.
Contoh:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: For more info see https://www.objectivepgp.org
[...]
-----END PGP PUBLIC KEY BLOCK-----
Kelas PGPArmor dapat digunakan untuk mengonversi format biner ke format ASCII
NSString *armoredKey = [PGPArmor armoredData: encrypted as: PGPArmorPublicKey]; let armoredKey = Armor . armored ( Data ( ) , as : . publicKey ) Saat mengonversi secara manual, penting untuk menggunakan nilai PGPArmorType yang tepat yang menentukan header. Ini mungkin bagian yang rumit jadi inilah lembar cheatnya:
| Ketik data | Pgparmortype | Contoh |
|---|---|---|
| Terenkripsi | PGPArmorMessage | Armor.armored(ObjectivePGP.encrypt(...), as: .message) |
| Didekripsi | PGPArmorMessage | Armor.armored(ObjectivePGP.decrypt(...), as: .message) |
| Kunci publik | PGPArmorTypePublic | Armor.armored(key.export(), as: .publicKey) |
| Kunci Rahasia | PGPArmorTypeSecret | Armor.armored(key.export(), as: .secretKey) |
Untuk hasil enkripsi jenisnya adalah PGPArmorMessage
Lihat Changelog
Batasan yang Diketahui:
Sampai saat ini basis kode ObjectivePGP telah mengalami audit keamanan lengkap dari Cure53.
Produk ini menggunakan perangkat lunak yang dikembangkan oleh Proyek OpenSSL untuk digunakan di OpenSSL Toolkit. (http://www.openssl.org/)
Marcin Krzyżanowski