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