我正在尝试在 Ruby 中离线签署 Tron 交易。
TronGrid 有一个端点来签署交易,但他们需要向他们发送帐户私钥才能这样做,这感觉有潜在风险,所以我想在本地签署交易以避免私钥值离开服务器。
具体来说,我正在尝试在 Ruby 中转换此 Javascript 方法:https ://github.com/tronprotocol/tronweb/blob/master/src/utils/crypto.js#L218
我一直在尝试同时使用 OpenSSL 和gem来做到这一点,但没有取得多大成功。
这是我到目前为止所得到的:
bn = OpenSSL::BN.new(hex_private_key, 16)
ec = OpenSSL::PKey::EC.new('secp256k1')
ec.private_key = bn
ec.dsa_sign_asn1(transaction_id).unpack1('H*')
和
bn = OpenSSL::BN.new(hex_private_key, 16)
private_key = EC::PrivateKey.new(bn.to_i)
signature = private_key.sign(transaction_id)
后者给了我r
ands
然后在 javascript 函数中使用(即使它们与我在 JS 中得到的不匹配),我不确定我在哪里可以得到那个recoveryParam
.
前者并没有返回我所期望的签名。
我有点迷失如何找到签署这些交易的方法。