Конференция "WinAPI" » OpenSSL [D7, WinXP]
 
  • Thunderstorm (11.07.08 10:40) [0]
    Пробовал по этой статье http://www.disi.unige.it/person/FerranteM/delphiopenssl/index.html
    Ключи генеряться прекрасно а вот RSA+MD5 signature работать не хочет, помогите разобраться.
  • umbra © (11.07.08 11:08) [1]
    а что, собственно, не получается?
  • Thunderstorm (11.07.08 17:17) [2]
    сгенерил 2 ключа вот этой процедурой
    procedure GenerateKeyPair;
    var
     kp: TKeyPairGenerator;
    begin
    kp := TKeyPairGenerator.Create;
    kp.KeyFileNames('c:\temp\mykeys');  // it create a pair c:\temp\mykeys.key
                                       // and c:\temp\mykeys.pub
    kp.Password := 'mypasswd';          // Required
    kp.GenerateRSA;
    end;


    дальше мне надо создать подпись
    пробую как на сайте написано
    function Sign_RSA_MD5(privatekey,msg: string): string;
    var
    Len: cardinal;
    mdctx: EVP_MD_CTX;
    inbuf, outbuf: array [0..1023] of char;
    key: pEVP_PKEY;
    begin
    StrPCopy(inbuf, msg);
    InitOpenSSL;
    key:=ReadPrivateKey(privatekey);
    EVP_SignInit(@mdctx, EVP_md5());
    EVP_SignUpdate(@mdctx, @inbuf, StrLen(inbuf));
    EVP_SignFinal(@mdctx, @outbuf, Len, key);
    FreeOpenSSL;
    BinToHex(outbuf, inbuf,Len);
    inbuf[2*Len]:=#0;
    result := StrPas(inbuf);
    end;


    при компиляции ругаеться что незнает InitOpenSSL, ReadPrivateKey, FreeOpenSSL

    в целом задача такая(это пример для проверки):
    есть пирватный ключ:
    -----BEGIN RSA PRIVATE KEY-----
    MIICXgIBAAKBgQC+gD1T4ytZIvq3OWU3TBc3FNqEN1pCk3bVdRIH7PoE7fSvyjBR
    dtFdsToPQEIkURuFdqDzdWnkEmA+boFYJ9TUMokbx7RYt5jCGE7/S9/G/6DFCVLF
    C5I6P2uengppDNBjyWaAiYMkvJLVIo7E+S8Y2GAVrluy/YKvXLVzijBSPwIDAQAB
    AoGAUEjzj7sZtcNMLpP92EQ1NH2Rak95tr03Q9bG9pgk9pbinIN1wZ91tSrP8UV/
    mpakJqdMRc6iBgDIlwczc9e1lc0cSMaYp+IN4J4Td/ZBxG/hdguE8hcL+3GP4h6I
    aX39yXsLxIlgv/BRvTktVAPNsFFUEvZ6JMbMBlMMLrjeuwECQQD4OgWMXQ+NR5eA
    b19pOSin+qVb+XALqUJu9lhRvRssv5cUwGKMRGvgRpaEOnJCQ0OP2zOwkfojIuvT
    6DcShruhAkEAxHdxjo9kzD4V1Pi+AtDI0IgTUn0OmFdtXQ0ZFO0YbbJ8nekdYqtN
    JiKFemFmPgrTjMUOYhCBHwdeG18SOs9B3wJBANG7xKBaqR9IVFwyvj0cDJwSDdHu
    qptPwlAbWXiG/gULRM5F136I+VUgj2DeOVh/mQBdyAjy7pTtlrEPziibKsECQQCL
    NvQhh5xuWaQQuH2z8wwJMBM5BWKdMn5NTGW0fVktCifhoXjwHOBbIGUi1fekCPnk
    qxHJDVbhjM/zZ0e8onZTAkEA3quKkqMHnjbDB8f0dhpsl21KfoRrEElvd3PvYW1w
    KXYxSIA0fBzNLG2DbCPaaiqQYukBOVRRFZbWW5zdg0gbLQ==
    -----END RSA PRIVATE KEY-----

    нужно имея данные:

    OPERATION[\r\n]
    id=071127006641252[\r\n]
    checkid=641252[\r\n]
    product=5725[\r\n]
    value=100.00RUR[\r\n]
    account=9165556677[\r\n]
    timeout=15[\r\n]
    cnfmode=1[\r\n]
    где [\r\n] перенос строки или #13#10

    По алгоритму MD5, в формате base64 получить подпись:

    WeOxhkSMlZDXqc1D4a/OQz2875FPPkXRShvxgc/DFEYktX3N1RgI6WqgNSXzqoDlt8MUpu7yFE0bkjC
    EpWoQXEkaQSUMoalwPS27gHxNooVKB1otpLjEQbqYMywwYf5Yz3NhxQCHgiIfNbdvqbqDKEn0SZV6Bb
    NXBSunFPPjRew=

    Впринципе не важно каким способом, подскажите как реализовать, раньше не сталкивался очень надо
  • umbra © (12.07.08 13:29) [3]

    > при компиляции ругаеться что незнает InitOpenSSL, ReadPrivateKey,
    >  FreeOpenSSL

    ну, надо же наверное модуль подключить, где эти функции есть
  • Palladin © (14.07.08 08:27) [4]
    1. сети то тут причем?
    2. если кросс-платформенность неважна, то рекомендую использовать CryptAPI, там все просто и понятно. В твоем случае можешь начинать копать с CryptCreateHash,CryptHashData,CryptSignHash.
 
Конференция "WinAPI" » OpenSSL [D7, WinXP]
Есть новые Нет новых   [134433   +25][b:0][p:0.001]