Sr25519Clone 0.2.0

Sr25519Clone 0.2.0

Test Pod 维护。



  • Tesseract Systems, Inc.

Sr25519.swift

🐧 linux: ready GitHub license Build Status GitHub release SPM compatible CocoaPods version Platform macOS | iOS | tvOS | watchOS | Linux

shnorrkel 的 Swift 包装器 shnorrkel C 库

安装

Sr25519.swift 部署到 macOS、iOS、tvOS、watchOS 和 Linux。它只测试了最新操作系统版本,但由于该模块使用的平台提供的 API 非常少,因此在较旧版本中应该很少有问题。

设置说明

  • Swift Package Manager:将其添加到 Package.swift 清单的依赖部分

    .package(url: "https://github.com/tesseract-one/Sr25519.swift.git", from: "0.2.0")
  • CocoaPods:将其放入您 Podfile

    pod 'Sr25519', '~> 0.2'
  • CocoaPods 与 Ed25519

    如果要从源构建 Ed25519 部分,请在您的 Podfile 中添加此内容

    pod 'Sr25519/Sr25519', '~> 0.2'
    pod 'Sr25519/Ed25519', '~> 0.2'

使用示例

以下是一些展示库使用的示例。

使用密钥对签名和验证

import Sr25519

// Creating new KeyPair from random seed
let keypair = Sr25519KeyPair(seed: Sr25519Seed())
// Our message Data
let message = "Hello, World!".data(using: .utf8)!

// Signing
let signature = keypair.sign(message: message)
print("Signature:" signature)

// Validating signature
let valid = keypair.validate(message: message, signature: signature)
print("Is valid:", valid)

使用公钥验证

import Sr25519

// Creating PublicKey from Data
let pkey = try! Sr25519PublicKey(data: Data(repeating: 0, count: Sr25519PublicKey.size))
// Our message Data
let message = "Hello, World!".data(using: .utf8)!
// Signature
let signature = try! Sr25519Signature(data: Data(repeating: 0, count: Sr25519Signature.size))

// Validating
let valid = pkey.verify(message: message, signature: signature)
print("Is valid:", valid)

密钥派生

import Sr25519

// Creating new KeyPair from random seed
let keypair = Sr25519KeyPair(seed: Sr25519Seed())
// It's PublicKey
let pkey = keypair.publicKey

// Creating ChainCode for derivation from Data
let chaincode = try! Sr25519ChainCode(code: Data(repeating: 0, count: Sr25519ChainCode.size))

// Derive
let derived = keypair.derive(chainCode: chaincode, hard: true)
print("Hard derived PublicKey", derived.publicKey)

// Also soft derivation can be performed on PrivateKey directly
let pderived = pkey.derive(chainCode: chaincode)
print("Soft derived PublicKey", pderived)

可验证随机函数

import Sr25519

// Creating new KeyPair from random seed
let keypair = Sr25519KeyPair(seed: Sr25519Seed())
// Our message Data
let message = "Hello, World!".data(using: .utf8)!

// Default 0xFF filled threshold
let limit = Sr25519VrfThreshold()

// Signing
let (signature, isLess) = try! keypair.vrfSign(message: message, ifLessThan: limit)
print("Signature:", signature, "is less:", isLess)

// Verification
let valid = keypair.vrfVerify(message: message, signature: signature, threshold: limit)
print("Is valid:", valid)

许可证

Sr25519.swift 可在 Apache 2.0 许可协议 下使用、分发和修改。