DRACOON-Crypto-SDK 2.3.2

DRACOON-Crypto-SDK 2.3.2

Mathias Schreiner维护。



  • 作者:
  • Mathias Schreiner

DRACOON Swift Crypto SDK

一个实现 DRACOON 客户端加密的库。

简介

有关 DRACOON 客户端加密的详细信息,请参阅此处

https://support.dracoon.com/hc/en-us/articles/360000986345

设置

最低要求

Xcode 12.3

Swift 包管理器

将以下行添加到 Package.swift 的依赖项部分

.package(name: "crypto_sdk", url: "https://github.com/dracoon/dracoon-swift-crypto-sdk", .upToNextMajor(from: "2.2.0"))

Carthage

将 SDK 添加到您的 Cartfile

github "dracoon/dracoon-swift-crypto-sdk.git" ~> 2.2.0

然后运行

carthage update --platform iOS

以创建框架或

carthage update --use-xcframeworks --platform iOS

以创建 xcframework。

CocoaPods

添加到您的 Podfile

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '12.0'
use_frameworks!

target '<Your Target Name>' do
pod 'DRACOON-Crypto-SDK', '~> v2.2.0'
end

然后运行

pod install

示例

示例 playground 可在此处找到: Example/CryptoSDK.playground

该示例展示了完整的加密流程,即生成用户密钥对、验证用户密钥对、生成文件密钥、加密文件密钥,最后加密和解密一个文件。

    // --- INITIALIZATION ---
    let crypto = Crypto()
    // Generate key pair
    let userKeyPair = try crypto.generateUserKeyPair(password: USER_PASSWORD)
    // Check key pair
    if !crypto.checkUserKeyPair(keyPair: userKeyPair, password: USER_PASSWORD) {
        ...
    }

    let plainData = plainText.data(using: .utf8)

    ...

    // --- ENCRYPTION ---
    // Generate plain file key
    let plainFileKey = try crypto.generateFileKey()
    // Encrypt blocks
    let encryptionCipher = try crypto.createEncryptionCipher(fileKey: fileKey)
    let encData = try encryptionCipher.processBlock(fileData: plainData)
    try encryptionCipher.doFinal()
    // Encrypt file key
    let encryptedKey = try crypto.encryptFileKey(fileKey: plainFileKey, publicKey: userKeyPair.publicKeyContainer)

    ...

    // --- DECRYPTION ---
    // Decrypt file key
    let decryptedKey = try crypto.decryptFileKey(fileKey: encryptedKey, privateKey: userKeyPair.privateKeyContainer,
      USER_PASSWORD)
    // Decrypt blocks
    let decryptionCipher = try crypto.createDecryptionCipher(fileKey: fileKey)
    let decData = try decryptionCipher.processBlock(fileData: encData)
    try decryptionCipher.doFinal()

    ...

构建 boringSSL

如需更新加密库,请调整并运行

./build-boringssl.sh

然后从输出目录复制内容到 'OpenSSL' 目录。

版权声明和许可

参见 LICENSE