溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Delphi調(diào)用動態(tài)庫

發(fā)布時間:2020-06-29 09:54:55 來源:網(wǎng)絡(luò) 閱讀:868 作者:ggxxjj123 欄目:開發(fā)技術(shù)
unit UnitMain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
result_param_s = record
issuer:array [0..256] of char; //* 頒發(fā)者DN*/
serialNumber:array [0..39] of char; //* 證書序列號*/
subject: array [0..255] of char; //* 證書主題*/
notBefore:array [0..19] of char; //* 證書有效期起始時間*/
notAfter :array [0..19] of char; //* 證書有效期的終止時間*/
signresult :array [0..19] of char; //* 簽名結(jié)果*/
returnCert :array [0..2047] of char; //* 證書Der編碼*/
iCertLen:Integer; //* 證書Der編碼長度*/
end;
presult_param_s=^result_param_s;


TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }

end;

var
Form1: TForm1;

function initMulti:integer;stdcall;external 'netsignagent.dll';

// function NewSocket(
// hostName:pchar;
// port:Integer;
// var sockFd:Integer):Integer;stdcall;external 'netsignagent.dll';

function NewSocket(
hostName:pchar;
port:Integer;
sockFd:pointer):Integer;stdcall;external 'netsignagent.dll';

function CloseSocket(
sockFd:pointer):integer;stdcall;external 'netsignagent.dll';



function INS_AttachedSign(
sockFd:integer;
plain:pchar;
iPlainLen:integer;
signCertDN:PChar;
digestAlg:PChar;
crypto:pchar;
iCryptoLen:pointer):integer;stdcall;external 'netsignagent.dll';

function INS_AttachedVerify(
sockFd:integer;
crypto:pchar;
iCryptoLen:Integer;
iReturnCert:Integer;
plain :pchar;
iPlainLen:pointer;
result:pointer):Integer ;stdcall;external 'netsignagent.dll';


implementation



{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
conn:Integer;
hostName:pchar;
port:Integer;
sockFd:integer;
res:Integer;
soustr:string;
isoustrLen:Integer;
signCertDN:string;
crypto:pchar;
iCryptoLen:Integer;
result:result_param_s;
iReturnCert:Integer;
plain:pchar;
iplainLen:Integer;

begin
//signCertDN := PChar('O=hoary,CN=inCRL');
//signCertDN := 'CN=5year,O=syn080924,C=cn';

signCertDN := PChar('O=infosec,CN=nocrl');
//signCertDN := 'C=cn,O=INFOSEC Technologies SM2ID,CN=中文sm2@0123@test';

soustr := '909CE48D7ABF46395A9EDD8EC6E27B5A';
isoustrLen := Length(soustr);
MessageBox(handle, PChar('isoustrLen:' + IntToStr(isoustrLen)),'', MB_OK);

ShowMessage(PChar('isoustrLen:' + IntToStr(isoustrLen)));

conn := initMulti();

if conn=0 then
Application.MessageBox('初始化并發(fā)連接操作成功', '');

hostname := PAnsiChar('192.168.2.222');
port := 1111;


// res:=NewSocket(hostName, port, sockFd);
res:=NewSocket(hostName, port, @sockFd);
Application.MessageBox(PChar('NewSocket res:' + IntToStr(res)), '');


if res = 0 then
begin

iCryptoLen := 409600;
GetMem(crypto, 409600);

Application.MessageBox(PChar('sockFd:' + IntToStr(sockFd)), '');
Application.MessageBox(PChar('soustr:' + soustr), 'soustr');


//簽名
res:=INS_AttachedSign(sockFd,PAnsiChar(soustr), isoustrLen,
PAnsiChar(signCertDN), PAnsiChar(''), crypto, @iCryptoLen);

Application.MessageBox(PChar('INS_AttachedSign res:' + IntToStr(res)), '');




iReturnCert := 0;
iplainLen := 409600;
GetMem(plain, 409600);

//驗(yàn)簽
res:=INS_AttachedVerify(sockFd, crypto, iCryptoLen, iReturnCert,
plain, @iplainLen, @result);

Application.MessageBox(PChar('INS_AttachedVerify:' + IntToStr(res)), ' ');
Application.MessageBox(PChar('plain:' + plain), ' ');



end;

CloseSocket(@sockFd);


end;

end.

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI