我正在尝试使用从Crypto.PubKey.ECIES库调用curveGenerateKeyPair
函数的Crypto.ECC库,Crypto.ECC使用Crypto.PubKey.ECC.P256调用scalarGenerate
函数,如何我可以修改这个scalarGenerate
函数而不修改所有这些库吗?还有其他方法吗?
基本上,我想修改Crypto.PubKey.ECC.P256库的scalarGenerate
函数(使用random Raaz库的randomByteString生成),
这将影响Crypto.PubKey.ECIES库
deriveEncrypt
函数的输出
我将曲线类型用作curve = Proxy :: Proxy Curve_X25519
答案 0 :(得分:1)
deriveEncrypt
使用curveGenerateKeyPair
作为相关曲线。我在那里看不到有关scalarGenerate
的任何信息。 EllipticCurve
的{{1}}实例定义了
Curve_X25519
如果您想以其他方式生成curveGenerateKeyPair _ = do
s <- X25519.generateSecretKey
return $ KeyPair (X25519.toPublic s) s
密钥对,则必须定义自己的X25519
类型版本,复制Curve_X25519
和{{1} EllipticCurve
类型的实例为您的类型创建实例,但用您自己的EllipticCurveDH
替换Curve_X25519
的定义。