DMSOpenPGP 0.1.4

DMSOpenPGP 0.1.4

维护者:jk234ertMainasuK



 
依赖
BouncyCastle-ObjC~> 0.1.0
OpenSSL-Universal~> 1.0.2.17
 

  • 作者
  • CMK

DMSOpenPGP

Version License Platform

示例

要运行示例项目,请克隆仓库,然后从示例目录首先运行 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 文件以获取更多信息。