📄 unit5.~pas
字号:
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CAPICOM_TLB;
const
ConstVal=1;
type
TForm5 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Memo1: TMemo;
Memo2: TMemo;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses comobj;
{$R *.dfm}
procedure TForm5.Button1Click(Sender: TObject);
var
MyStore:TStore;
Cert:Tcertificate;
CertI:TCertificates;
Count_val,Snum_Val:string;
//cert:TCertificateProperties;
certVal:olevariant;
certR:CoCertificates;
Public_val:IPublicKey;
begin
try
Cert:=Tcertificate.Create(nil);
MyStore:=TStore.Create(nil);
MyStore.Open(CAPICOM_CURRENT_USER_STORE,'MY',CAPICOM_STORE_OPEN_READ_ONLY);
certVal:=myStore.Certificates[ConstVal];
//certVal.display;
certval.PublicKey;
certval.PublicKey.Length;
//cert.Display;
//cert.PublicKey;
finally
Cert.Free;
MyStore.Free;
end;
end;
procedure TForm5.Button3Click(Sender: TObject);
var
Tcode:TUtilities;
Val:string;
begin
Tcode:=TUtilities.Create(nil);
try
Val:=memo1.Lines.Text;
//memo2.Lines.Text:=tcode.BinaryToHex(val);
memo2.Lines.Text:=Tcode.Base64Decode(val);
finally
Tcode.Free;
end;
end;
procedure TForm5.Button4Click(Sender: TObject);
var
OE_Store,OE_Certs,OE_Cert,OE_Private,OE_Util:variant;
Cert:Tcertificate;
PrivateVal:TPrivateKey;
CUtil:TUtilities;
Cer_i,Cer_count,Cert_Select:integer;
Value_Str:pwidestring;
begin
OE_Private:=createoleobject('CAPICOM.PrivateKey.1');
OE_Cert:=createoleobject('CAPICOM.Certificate.3');
OE_Store:=createoleobject('CAPICOM.Store.3');
OE_Util:=createoleobject('CAPICOM.Utilities.1');
OE_Store.open(CAPICOM_CURRENT_USER_STORE,'MY',CAPICOM_STORE_OPEN_READ_ONLY);
cer_count:=OE_Store.certificates.count;
for Cer_i:=1 to Cer_count do
begin
OE_Cert:=OE_Store.certificates[Cer_i];
if OE_Cert.SubjectName='Qian' then
begin
OE_Cert:=OE_Store.certificates[Cer_i];
break;
end;
end;
//if OE_Cert<>nil then
//begin
// memo2.Lines.Add(OE_Cert.PublicKey.EncodedParameters.Value);
//memo2.Lines.Add(OE_Cert.PublicKey.EncodedParameters.Format(true));
//memo2.Lines.Add(OE_Cert.PublicKey.EncodedParameters.Format(true));
//memo2.Lines.Add(OE_Cert.PublicKey.EncodedKey.format(1));
//memo2.Lines.Add(OE_Cert.Extensions.Item[1]);
//showmessage(inttostr(OE_Cert.Extensions.Count));
// memo2.Lines.Add(OE_Cert.PublicKey.EncodedKey);
//CAPICOM_ENCODE_BASE64
//CAPICOM_ENCODE_BINARY
//CUtil.Base64Decode()
//cutil.Base64Encode()
memo2.Lines.Add(OE_Cert.PublicKey.EncodedKey.Value[CAPICOM_ENCODE_BINARY]);
memo2.Lines.Add('');
Value_Str:=OE_Util.BinaryToHex(OE_Cert.PublicKey.EncodedKey.Value[CAPICOM_ENCODE_BINARY]);
memo2.Lines.Add(Value_Str);
memo2.Lines.Add(inttostr(length(Value_Str)));
memo2.Lines.Add('');
memo2.Lines.Add(OE_Cert.PublicKey.EncodedKey.format(1));
//memo2.Lines.Add(OE_Cert.PublicKey.EncodedKey.Value[CAPICOM_ENCODE_BASE64]);
// memo2.Lines.Add(OE_Util.Base64Decode(OE_Cert.PublicKey.EncodedKey.Value[CAPICOM_ENCODE_BASE64]));
//memo2.Lines.Add()
//OE_Private:=OE_Cert.PrivateKey;
//PrivateVal.FreeInstance
//PrivateVal.KeySpec;
//memo2.Lines.Add(OE_Private.KeySpec);
//memo2.Lines.Add(OE_Private.ProviderName);
//memo2.Lines.Add(OE_Private.UniqueContainerName);
//end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -