VirgilCryptoApiImpl 5.0.0-alpha1

VirgilCryptoApiImpl 5.0.0-alpha1

Sergey SeroshtanEvgenySanjoDeundiakOleksandr Deundiak 维护。



 
依赖
VirgilCryptoAPI~> 1.0
VirgilCryptoFoundation~> 0.2.0-alpha
 

VirgilCryptoApiImpl 5.0.0-alpha1

  • Virgil Security

Virgil Security Objective-C/Swift 加密库

Build Status CocoaPods Compatible Carthage compatible Platform GitHub license

简介 | 库用途 | 用法示例 | 安装 | 文档 | 许可证 | 联系方式

简介

VirgilCrypto 是一套安全库(ECIES 与 Crypto Agility 一起封装在 Virgil Cryptogram 中)和一个开源的、高级的 加密库,它允许您在数字解决方案中执行存储和传输数据的所有必要操作。加密库是用 C++ 编写的,适用于移动和服务器平台。

Virgil Security,Inc. 引导软件开发者进入一个即将到来的加密世界,在这个世界中,一切都将被加密(密码将会消失)。在这个世界里,开发者无需筹集数百万美元来构建安全的聊天、安全的电子邮件、安全的文件共享或任何其他安全应用的时代已经结束。现在开发者可以专注于构建让他们在市场竞争中获得优势的功能,而最终用户则可以享受到他们日益需求的隐私和安全性。

图书馆用途

  • 非对称密钥生成
  • 数据流加密/解密
  • 数字签名的生成/验证
  • 完美前向安全性(PFS)

使用示例

生成密钥对

使用默认算法(EC_X25519)生成私钥

import VirgilCryptoApiImpl

let crypto = VirgilCrypto()
let keyPair = try! crypto.generateKeyPair()

生成并验证签名

使用私钥生成签名并签署数据

import VirgilCryptoApiImpl

let crypto = VirgilCrypto()

// prepare a message
let messageToSign = "Hello, Bob!"
let dataToSign = messageToSign.data(using: .utf8)!

// generate a signature
let signature = try! crypto.generateSignature(of: dataToSign, using: senderPrivateKey)

使用公钥验证签名

import VirgilCryptoApiImpl

let crypto = VirgilCrypto()

// verify a signature
let verified = crypto.verifySignature(signature, of: dataToSign, with: senderPublicKey)

加密和解密数据

在公钥上加密数据

import VirgilCryptoApiImpl

let crypto = VirgilCrypto()

// prepare a message
let messageToEncrypt = "Hello, Bob!"
let dataToEncrypt = messageToEncrypt.data(using: .utf8)!

// encrypt the message
let encryptedData = try! crypto.encrypt(dataToEncrypt, for: [receiverPublicKey])

使用私钥解密加密数据

import VirgilCryptoApiImpl

let crypto = VirgilCrypto()

// prepare data to be decrypted
let decryptedData = try! crypto.decrypt(encryptedData, with: receiverPrivateKey)

// decrypt the encrypted data using a private key
let decryptedMessage = String(data: decryptedData, encoding: .utf8)!

需要更多示例?请访问我们的开发者文档

安装

VirgilCrypto提供一系列框架。这些框架通过Carthage和CocoaPods分发。

所有框架都适用于

  • iOS 9.0+
  • macOS 10.10+
  • tvOS 9.0+
  • watchOS 2.0+

COCOAPODS

CocoaPods 是 Cocoa 项目的依赖管理器。您可以使用以下命令来安装它:

$ gem install cocoapods

使用 CocoaPods 将 VirgilCrypto 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它

target '<Your Target Name>' do
  use_frameworks!

  pod 'VirgilCryptoApiImpl', '~> 3.2'
end

然后,运行以下命令:

$ pod install

Carthage

Carthage 是一个集中式依赖管理器,它会构建您的依赖项并向您提供二进制框架。

您可以使用以下命令使用 Homebrew 来安装 Carthage:

$ brew update
$ brew install carthage

要使用 Carthage 将 VirgilSDK 集成到您的 Xcode 项目中,在您的项目根目录中创建一个名为 Cartfile 的空文件,并在您的 Cartfile 中添加以下行:

github "VirgilSecurity/virgil-crypto-x" ~> 3.2

针对预构建的二进制文件链接

要链接预构建框架到您的应用程序中,请运行以下命令:

$ carthage update --no-use-binaries

这将构建每个依赖项或从 GitHub 发布版中下载预编译的框架。

针对 iOS/tvOS/watchOS 进行编译

在您的应用程序目标“常规”设置选项卡的“链接框架和库”部分,从您的项目文件夹的 Carthage/Build 文件夹中添加以下框架:

  • VirgilCryptoAPI
  • VirgilCryptoApiImpl
  • VirgilCrypto
  • VSCCrypto

在您的应用程序目标“构建阶段”设置选项卡的“+”图标上点击,然后选择“新建运行脚本阶段”。创建一个运行脚本,在下面的脚本区域指定您的 shell(例如: /bin/sh),然后在 shell 下方添加以下内容

/usr/local/bin/carthage copy-frameworks

并在“输入文件”下添加您想要使用的框架的路径,例如

$(SRCROOT)/Carthage/Build/iOS/VirgilCryptoAPI.framework
$(SRCROOT)/Carthage/Build/iOS/VirgilCryptoAPIImpl.framework
$(SRCROOT)/Carthage/Build/iOS/VirgilCrypto.framework
$(SRCROOT)/Carthage/Build/iOS/VSCCrypto.framework
针对 macOS 的构建

在你的应用程序目标的“常规”设置选项卡中,在“嵌入的二进制文件”部分,从磁盘上的 Carthage/Build 文件夹拖放以下框架

  • VirgilCryptoAPI
  • VirgilCryptoApiImpl
  • VirgilCrypto
  • VSCCrypto

此外,你还需要将 macOS 的调试符号复制到 macOS 上进行调试和崩溃报告。

在你的应用程序目标的“构建阶段”设置选项卡中,单击“+”图标并选择“新复制文件阶段”。单击“目标”下拉菜单并选择“产品目录”。对于每个框架,将相应的 dSYM 文件拖放到目标中。

作为子项目整合

可以使用 Carthage 仅用于获取正确源码以便进一步集成到项目中。运行以下命令

$ carthage update --no-build

这将在项目文件夹内的 Carthage/Checkouts 文件夹中获取依赖项。然后,将 Carthage/Checkouts 文件夹内的 VirgilCrypto.xcodeproj 和 VirgilCryptoAPI.xcodeproj 从对应的文件夹拖放到 Xcode 项目的导航侧边栏

接下来,在应用程序目标的“常规”设置选项卡中,在“嵌入的二进制文件”部分添加以下子项目框架

  • VirgilCryptoAPI
  • VirgilCryptoApiImpl
  • VirgilCrypto
  • VSCCrypto

文档

许可协议

此库根据3-clause BSD 许可协议授权。

支持

我们的开发者支持团队为您提供帮助。

您可以在Twitter上找到我们或给我们发送电子邮件:[email protected]

此外,您还可以在我们的支持团队的帮助下在 Slack 获得额外帮助。