DMSOpenPGP
示例
要运行示例项目,请克隆仓库,然后从示例目录首先运行 pod install
。
安装
DMSOpenPGP 可通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile:
pod 'DMSOpenPGP'
用法
设置
import BouncyCastle_ObjC
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Add provider before use DMSOpenPGP (also add to extension if have)
JavaSecuritySecurity.addProvider(with: BCJceProviderBouncyCastleProvider())
return true
}
密钥生成
do {
let generateKeyData = GenerateKeyData(name: "Hello", email: "[email protected]", password: "Alice",
masterKey: KeyData(), subkey: KeyData())
let alice = try DMSPGPKeyRingFactory(generateKeyData: generateKeyData).keyRing
let armoredPublicKey = alice.publicKeyRing.armored()
let armoredSecretKey = alice.secretKeyRing.armored()
} catch {
…
}
加密 & 签名
// encrypt
guard let secretKeyRing = alice.secretKeyRing else {
return
}
do {
// with signature
let encryptor = try DMSPGPEncryptor(publicKeyRings: [alice.publicKeyRing, bob.publicKeyRing, eve.publicKeyRing],
secretKeyRing: secretKeyRing,
password: "Alice")
let encryptedWithSignatureMessage = try encryptor.encrypt(message: "Message")
// without signature
let encryptor2 = try DMSPGPEncryptor(publicKeyRings: [alice.publicKeyRing, bob.publicKeyRing, eve.publicKeyRing])
let encryptedWithoutSignatureMessage = try encryptr2.encrypt(message: "Message")
} catch {
…
}
// Sign
guard let secretKeyRing = alice.secretKeyRing else {
return
}
do {
let encryptor = try DMSPGPEncryptor(secretKeyRing: secretKeyRing, password: "Alice")
let cleartext = try encryptor.encrypt(message: "Message")
// or
let signer = try DMSPGPSigner(secretKeyRing: keyRing.secretKeyRing, password: password)
let cleartext2 = signer.sign(message: "Message")
} catch {
…
}
解密 & 验证
do {
let decryptor = try DMSPGPDecryptor(armoredMessage: encryptedMessage)
// decryptor.encryptingKeyIDs contains all decryptable secret keys' keyID
let decryptKey = decryptor.encryptingKeyIDs.compactMap { keyID in
return alice.secretKeyRing?.getDecryptingSecretKey(keyID: keyID)
}.first
guard let secretKey = decryptKey else {
return
}
let message = try decryptor.decrypt(secretKey: secretKey, password: "Alice")
let signatureVerifier = DMSPGPSignatureVerifier(message: message, onePassSignatureList: decryptor.onePassSignatureList, signatureList: decryptor.signatureList)
let verifyResult = signatureVerifier.verifySignature(use: alice.publicKeyRing)
}
请在 Example Pods 单元测试中检查 DMSOpenPGP/Tests/DMSOpenPGPTests.swift 以获取更多细节。
依赖
许可
DMSOpenPGP 在 AGPL 许可下可用。请参阅 LICENSE 文件以获取更多信息。