Sr25519 0.2.0

Sr25519 0.2.0

Yehor Popovych 维护。



Sr25519 0.2.0

  • 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 封装,基于 shnorrkelC 库

安装

Sr25519.swift 可以部署到 macOS、iOS、tvOS、watchOS 和 Linux。它只在最新操作系统版本上进行了测试,因为该模块使用的平台 API 非常少,所以应该与早期版本存在很少的问题。

设置说明

  • Swift 包管理器:将以下内容添加到您的 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 许可证下使用、分发和修改。