覆盖库函数

时间:2018-03-13 06:51:06

标签: haskell cryptography elliptic-curve

我正在尝试使用从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

1 个答案:

答案 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的定义。