用 Swift 编写的 TweetNaCl 封装器
CocoaPods 是 Cocoa 项目的依赖管理工具。您可以使用以下命令安装它
$ gem install cocoapods
需要 CocoaPods 1.1+ 才能构建 TweetNacl 1.0+。
要使用 CocoaPods 将 TweetNacl 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!
target '<Your Target Name>' do
pod 'TweetNacl', '~> 1.0.0'
end
然后,运行以下命令
$ pod install
Carthage 是一个去中心化的依赖管理器,它构建您的依赖项并为您提供二进制框架。
您可以使用 Homebrew 使用以下命令安装 Carthage
$ brew update
$ brew install carthage
要使用 Carthage 将 TweetNacl 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它
github "bitmark-inc/tweetnacl-swiftwrap" ~> 1.0
运行 carthage update
来构建框架,并将构建好的 TweetNacl.framework
拖到您的 Xcode 项目中。
Swift Package Manager 是一种用于自动化 Swift 代码分发的工具,并已集成到 swift
编译器中。 它尚处于早期开发阶段,但 TweetNacl 确实支持在受支持的平台上使用它。
设置好 Swift 包后,将 TweetNacl 作为依赖项添加到您的 Package.swift
的 dependencies
值中即可。
dependencies: [
.Package(url: "https://github.com/bitmark-inc/tweetnacl-swiftwrap.git", majorVersion: 1)
]
如果您不想使用上述任何依赖项管理器,则可以手动将 TweetNacl 集成到您的项目中。
打开终端,cd
进入您的顶级项目目录,并运行以下命令“如果”您的项目未初始化为 git 存储库
$ git init
通过运行以下命令将 TweetNacl 添加为 git 子模块
$ git submodule add https://github.com/bitmark-inc/tweetnacl-swiftwrap.git
打开新的 TweetNacl
文件夹,并将 TweetNacl.xcodeproj
拖到应用程序 Xcode 项目的 Project Navigator 中。
它应该嵌套在应用程序的蓝色项目图标下。 它是在所有其他 Xcode 组之上还是之下并不重要。
在 Project Navigator 中选择 TweetNacl.xcodeproj
,并验证部署目标是否与您的应用程序目标匹配。
接下来,在 Project Navigator 中选择您的应用程序项目(蓝色项目图标)以导航到目标配置窗口,然后在侧边栏中的“Targets”标题下选择应用程序目标。
在该窗口顶部的标签栏中,打开“General”面板。
单击“Embedded Binaries”部分下的 +
按钮。
您将看到两个不同的 TweetNacl.xcodeproj
文件夹,每个文件夹都有两个不同版本的 TweetNacl.framework
嵌套在 Products
文件夹中。
选择哪个
Products
文件夹并不重要,但选择顶部还是底部的TweetNacl.framework
非常重要。
为 iOS 选择顶部的 TweetNacl.framework
,为 OS X 选择底部的 TweetNacl.framework
。
您可以通过检查项目的构建日志来验证您选择了哪个。
TweetNacl
的构建目标将列为TweetNacl-iOS
、TweetNacl-macOS
、TweetNacl-tvOS
或TweetNacl-watchOS
。
就是这样!
TweetNacl.framework
会自动添加为目标依赖项、链接框架和嵌入式框架,复制文件构建阶段,这是在模拟器和设备上构建所需的一切。
所有 API 函数都接受并返回 Data。
实现 *curve25519-xsalsa20-poly1305*。
为 box 生成一个新的随机密钥对,并将其作为具有 publicKey
和 secretKey
成员的对象返回
{
publicKey: ..., // Data with 32-byte public key
secretKey: ... // Data with 32-byte secret key
}
返回 box 的密钥对,其公钥与给定的私钥相对应。
使用对端的公钥、我们的私钥以及给定的 nonce 加密和验证消息,对于密钥对的每个不同消息,nonce 必须是唯一的。
使用对端的公钥、我们的私钥以及给定的 nonce 验证和解密给定的 box。
返回原始消息,如果身份验证失败,则返回 false
。
返回一个预先计算的共享密钥,该密钥可在 NaclBox.after
和 NaclBox.open.after
中使用。
与 NaclBox
相同,但使用 NaclBox.before
预先计算的共享密钥。
与 NaclBox.open
相同,但使用 NaclBox.before
预先计算的共享密钥。
公钥的长度,以字节为单位。
私钥的长度,以字节为单位。
预先计算的共享密钥的长度,以字节为单位。
Nonce 的长度,以字节为单位。
与原始消息相比,添加到 box 的开销长度。
实现 *xsalsa20-poly1305*。
使用密钥和 nonce 加密和验证消息。 对于此密钥的每个不同消息,nonce 必须是唯一的。
返回加密和验证的消息。
使用密钥和 nonce 验证和解密给定的 secret box。
返回原始消息,如果身份验证失败,则返回 false
。
密钥的长度,以字节为单位。
Nonce 的长度,以字节为单位。
与原始消息相比,添加到 secret box 的开销长度。
实现 e25519。
将整数 n
乘以组元素 p
,并返回生成的组元素。
将整数 n
乘以标准组元素,并返回生成的组元素。
标量的长度,以字节为单位。
组元素的长度,以字节为单位。
实现 ed25519。
为签名生成新的随机密钥对,并将其作为具有 publicKey
和 secretKey
成员的对象返回
{
publicKey: ..., // Data with 32-byte public key
secretKey: ... // Data with 64-byte secret key
}
返回一个签名密钥对,其公钥与给定的 64 字节私钥相对应。 私钥必须由 NaclSign.KeyPair
或 NaclSign.KeyPair.fromSeed
生成。
从 32 字节的种子确定性地生成一个新的签名密钥对。 种子必须包含足够的熵才能保证安全。 不建议将此方法用于常规用途:而是使用 NaclSign.KeyPair
从随机种子生成新的密钥对。
使用私钥对消息进行签名,并返回已签名的消息。
验证已签名的消息,并返回不带签名的消息。
如果验证失败,则返回 nil
。
使用私钥对消息进行签名,并返回签名。
验证消息的签名,如果验证成功,则返回 true
,如果验证失败,则返回 false
。
签名公钥的长度,以字节为单位。
签名私钥的长度,以字节为单位。
NaclSign.KeyPair.keyPair(fromSeed:
的种子的长度,以字节为单位。
签名的长度,以字节为单位。
版权所有 (c) 2014-2015 Bitmark Inc (support@bitmark.com)。
特此授予许可,允许出于任何目的(无论是否收费)使用、复制、修改和分发本软件,前提是上述版权声明和本许可声明出现在所有副本中。
本软件按“原样”提供,作者不对此软件做出任何担保,包括对适销性和适用性的所有暗示担保。 在任何情况下,作者均不对任何特殊的、直接的、间接的或后果性的损害,或因使用、数据或利润损失而造成的任何损害负责,无论是在合同、疏忽或其他侵权行为中,还是因使用或执行本软件而引起或与之相关的任何损害。