CSecp256k1.swift
Swift C模块,用于bitcoin secp256k1库。
安装
CSecp256k1.swift支持部署到macOS、iOS、tvOS、watchOS和Linux。它仅在使用最新OS版本时进行过测试,但由于此模块使用了极少的平台提供的API,因此应该与早期版本很少出现问题。
设置说明
-
Swift包管理器:请将此内容添加到您的
Package.swift
列表的依赖部分.package(url: "https://github.com/tesseract-one/CSecp256k1.swift.git", from: "0.2.0")
-
CocoaPods:请将此内容添加到您的
Podfile
pod 'CSecp256k1', '~> 0.2'
使用示例
签名和验证
import CSecp256k1
let privKey: [UInt8] = [
0x9d, 0x61, 0xb1, 0x9d, 0xef, 0xfd, 0x5a, 0x60, 0xba,
0x84, 0x4a, 0xf4, 0x92, 0xec, 0x2c, 0xc4, 0x44, 0x49,
0xc5, 0x69, 0x7b, 0x32, 0x69, 0x19, 0x70, 0x3b, 0xac,
0x03, 0x1c, 0xae, 0x7f, 0x60
]
let data = [UInt8](repeating: 0, count: 32)
let context: OpaquePointer! = secp256k1_context_create(
UInt32(SECP256K1_CONTEXT_SIGN|SECP256K1_CONTEXT_VERIFY)
)
var signature = secp256k1_ecdsa_recoverable_signature()
let res = secp256k1_ecdsa_sign_recoverable(context, &signature, data, privKey, nil, nil)
assert(res > 0)
var pubKey = secp256k1_pubkey()
let res2 = secp256k1_ec_pubkey_create(context, &pubKey, privKey)
assert(res2 > 0)
var ssig = secp256k1_ecdsa_signature()
let res3 = secp256k1_ecdsa_recoverable_signature_convert(context, &ssig, &signature)
assert(res3 > 0)
let isValid = secp256k1_ecdsa_verify(context, &ssig, hash, &pubKey)
assert(isValid == 1)
许可证
CSecp256k1.swift 可在 Apache 2.0 许可证下使用、分发和修改。
Bitcoin secp256k1 可在 MIT 许可证下使用、分发和修改。