我正在为 Swift 上的 iOS 制作 Hyperledger Sawtooth 客户端原型(prototype)。

在此之前,我在 Java 上为 Android 做同样的事情。
在 Java 实现中,使用 SpongyCaSTLe 库很容易:
生成 key 的函数如下所示:

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 key 对并用它签署一个字节数组

并使用它来对字节数组进行签名:
        Signature signature = Signature.getInstance("ECDSA", "SC");
        signature.initSign(keyPair.getPrivate(), new SecureRandom());
        signature.update(bytes);
        byte[] signedBytes = signature.sign();

我在谷歌上搜索了“secp256k1 swift”并找到了这些库:
  • https://github.com/Boilertalk/secp256k1.swift
  • https://github.com/noxproject/ASKSecp256k1
  • https://github.com/pebble8888/secp256k1swift
  • https://github.com/skywinder/ios-secp256k1

  • 所有这些都是比特币核心的 secp256k1 库与 Swift 的绑定(bind)。

    我可以制作类似 let kp = KeyPair("secp256k1")let signedBytes = kp.sign(bytes) 的东西吗?如果是,那么如何,如果不是,那么还有其他方法可以做到这一点吗?

    最佳答案

    我找到了解决方案。它是 BitcoinKit framework 。我在安装 Carthage 时遇到了一些问题,但是 Cocoapods + 安装错误消息中发现的一些缺少的工具效果很好。

    关于ios - ECDSA secp256k1 key 对生成和在 Swift 上签名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50410946/

    10-10 15:30