【发布时间】:2021-02-08 01:50:49
【问题描述】:
我正在使用 freepascal/lazarus 开发一个加密货币引擎。我使用 OpenSSL 通过 TProcess 调用创建密钥对;使用 secp256k1 对消息进行签名和验证也是如此。
现在我找到了这个库:https://github.com/Xor-el/CryptoLib4Pascal
这似乎能够做到这一点,所以我可以消除对 OpenSSL 的依赖,减少近 98% 的处理时间并使其自动跨平台。 即使图书馆包含一些示例,我也无法找到为此获得工作功能的方法:
Keyspair= Packed Record
public: String[255];
private: String[255];
end;
Var
MyKeysPair: Keyspair;
MyMessage : string = 'Hello world';
Begin
Keyspair := GenerateKeys('secp256k1');
End;
Function GenerateKeys(algo:string):Keyspair;
Begin
// Stuff from CryptoLib4Pascal...
result.public := ???;
result.private := ???;
End;
然后,使用密钥对签名并验证消息:
var
SignedMessage: string;
Begin
SignedMessage := GetSignedMessage(Keyspair.private,MyMessage);
if VerifySignature(MyMessage,SignedMessage,Keyspair.public) then writeln('Perfect');
End;
function GetSignedMessage(PrivKey,Message:String):String;
Begin
// Stuff from CryptoLib4Pascal...
result := ???;
End;
function VerifySignature(Message,Signature,PubKey:string):boolean;
Begin
Result:= false;
if {stuff from CryptoLib4Pascal} then result := true;
End;
【问题讨论】: