ObjectivePGP
1.0

ObjectivePGP是用於iOS和MACOS的OPENPGP協議的實現。 OpenPGP是使用最廣泛的電子郵件加密標準。它由Internet工程工作組(IETF)的OpenPGP工作組定義。
這是博客文章的故事。
您想提供幫助,太好了!繼續前進,分叉我們的存儲庫,進行更改,並向我們發送拉動請求。
歡迎您貢獻。參見貢獻
請創建拉力請求。
ObjectivePGP保留在雙重許可下:
免費用於非商業用途,由BSD許可的變體涵蓋。這意味著您必須提及MarcinKrzyêAnowski作為此代碼的原始作者,並在應用程序內復制許可文本。
商業用途的商業產品許可證。請記住,一些免費產品仍然是商業產品。請通過電子郵件與我聯繫以獲取詳細信息。
不知道該選擇什麼?檢查常見問題解答
dependencies: [
.package(url: "https://github.com/krzyzanowskim/ObjectivePGP.git", .upToNextMinor(from: "0.99.4"))
]
pod 'ObjectivePGP'
ObjectivePGP附帶了最新版本的框架,您可以復制並嵌入項目:
Objective-C
# import < ObjectivePGP/ObjectivePGP.h >迅速
import ObjectivePGP NSArray <PGPKey *> *keys = [ObjectivePGP readKeysFromPath: @" /path/to/key.asc " error: nil ]; let keys = try ObjectivePGP . readKeys ( fromPath : " /path/to/key.asc " ) 鑰匙環是一個存儲(內存或磁盤上),可保留各種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 ) 用密鑰簽署數據:
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裝甲是一種二進制編碼轉換器。 ASCII裝甲涉及在ASCII中包含加密消息傳遞,以便可以以標準的消息格式(例如電子郵件)發送它們。
例子:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: For more info see https://www.objectivepgp.org
[...]
-----END PGP PUBLIC KEY BLOCK-----
PGPArmor類可用於將二進制格式轉換為ASCII格式
NSString *armoredKey = [PGPArmor armoredData: encrypted as: PGPArmorPublicKey]; let armoredKey = Armor . armored ( Data ( ) , as : . publicKey )當手動轉換時,使用定義標題的正確PGPArmorType值很重要。這可能是一個棘手的部分,所以這是備忘單:
| 類型數據 | PGParmortype | 例子 |
|---|---|---|
| 加密 | PGPArmorMessage | Armor.armored(ObjectivePGP.encrypt(...), as: .message) |
| 解密 | PGPArmorMessage | Armor.armored(ObjectivePGP.decrypt(...), as: .message) |
| 公鑰 | PGPArmorTypePublic | Armor.armored(key.export(), as: .publicKey) |
| 秘密鑰匙 | PGPArmorTypeSecret | Armor.armored(key.export(), as: .secretKey) |
對於加密的任何結果,類型是PGPArmorMessage
請參閱ChangElog
已知限制:
迄今為止,ObjectivePGP代碼庫已接受了CURE53的完整安全審核。
該產品使用OPENSL項目開發的軟件用於OpenSSL工具包。 (http://www.openssl.org/)
MarcinKrzyêAnowski