Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.30;
Скачать: CL | DM;

Вниз

OpenSSL   Найти похожие ветки 

 
Thunderstorm   (2008-07-11 10:40) [0]

Пробовал по этой статье http://www.disi.unige.it/person/FerranteM/delphiopenssl/index.html
Ключи генеряться прекрасно а вот RSA+MD5 signature работать не хочет, помогите разобраться.


 
umbra ©   (2008-07-11 11:08) [1]

а что, собственно, не получается?


 
Thunderstorm   (2008-07-11 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 ©   (2008-07-12 13:29) [3]


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

ну, надо же наверное модуль подключить, где эти функции есть


 
Palladin ©   (2008-07-14 08:27) [4]

1. сети то тут причем?
2. если кросс-платформенность неважна, то рекомендую использовать CryptAPI, там все просто и понятно. В твоем случае можешь начинать копать с CryptCreateHash,CryptHashData,CryptSignHash.



Страницы: 1 вся ветка

Текущий архив: 2009.08.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
15-1246132501
Loginov Dmitry
2009-06-27 23:55
2009.08.30
DBF


8-1182333180
SunriseGirl
2007-06-20 13:53
2009.08.30
работа с изображениями .bmp


15-1246469626
dmk
2009-07-01 21:33
2009.08.30
Бесперебойники


4-1216031319
Dash Rendar
2008-07-14 14:28
2009.08.30
Как запустить свое приложение вместо проводника?


1-1213076858
Альф
2008-06-10 09:47
2009.08.30
Странное поведение Variant при импорте из Excel