我正在为Swift上的iOS制作Hyperledger锯齿客户端原型。
在此之前,我在Java上对Android做了同样的工作。在Java实现中,使用SpongyCastle库:函数生成键很容易,如下所示:
public static KeyPair getKeyPair() throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("ECDSA", "SC");
ECGenParameterSpec ecGenParameterSpec = new ECGenParameterSpec("secp256k1");
keyPairGenerator.initialize(ecGenParameterSpec, new SecureRandom());
return keyPairGenerator.generateKeyPair();
}我需要在Swift做同样的事情:
secp256k1 生成键区,并使用对字节数组进行签名。
并使用它对字节数组进行签名:
Signature signature = Signature.getInstance("ECDSA", "SC");
signature.initSign(keyPair.getPrivate(), new SecureRandom());
signature.update(bytes);
byte[] signedBytes = signature.sign();我在googled上搜索了"secp256k1斯威夫特“,并找到了以下库:
所有这些都是比特币核心的secp256k1库与Swift的绑定。
我能做一些像let kp = KeyPair("secp256k1"),let signedBytes = kp.sign(bytes)这样的东西吗?如果是,那怎么做,如果没有,还有其他方法吗?
发布于 2018-06-06 11:03:55
我找到了解决办法。是BitcoinKit框架。我在安装Carthage时遇到了一些问题,但是Cocoapods +安装错误消息中缺少的一些工具效果很好。
发布于 2019-03-09 23:02:56
您可以始终使用C绑定,但随后必须使用UnsafePointers和Bytes,我假设您正在寻找合适的包装器。因此,我找到了这个锯齿-快速-sdk,它似乎通过boilertalk使用secp256k1库,而boilertalk又导入了广泛使用的比特币-核心/libsecp256k1。它允许类似于您要求的内容(根据文档):
import SawtoothSigning
let context = Secp256k1Context()
let privateKey = context.newRandomPrivateKey()
let signer = Signer(context: context, privateKey: privateKey)
let signature = signer.sign(data: message_bytes)我想它很快就会被列为官方认可的sdk,正如这个锯齿RFC所指出的那样。唯一缺少的东西就是提供生成的protobuf类。
https://stackoverflow.com/questions/50410946
复制相似问题