signform.cpp
来自「著名的SecureBlackBox控件完整源码」· C++ 代码 · 共 264 行
CPP
264 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "SignForm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmSign *frmSign;
//---------------------------------------------------------------------------
__fastcall TfrmSign::TfrmSign(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmSign::btnReferencesClick(TObject *Sender)
{
frmReferences->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfrmSign::FormCreate(TObject *Sender)
{
CanonicalizationMethod = xcmCanon;
SignatureType = xstEnveloped;
SignatureMethodType = xmtSig;
HMACMethod = xmmHMAC_SHA1;
SigMethod = xsmRSA_SHA1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSign::FormShow(TObject *Sender)
{
UpdateOpt();
}
//---------------------------------------------------------------------------
TElXMLCanonicalizationMethod TfrmSign::GetCanonicalizationMethod(void)
{
switch(cmbCanonMethod->ItemIndex)
{
case 0: return xcmCanon;
case 1: return xcmCanonComment;
case 2: return xcmMinCanon;
default:
return xcmCanon;
}
}
//---------------------------------------------------------------------------
TElXMLMACMethod TfrmSign::GetHMACMethod(void)
{
switch(cmbHMACMethod->ItemIndex)
{
case 0: return xmmHMAC_MD5;
case 1: return xmmHMAC_SHA1;
case 2: return xmmHMAC_SHA224;
case 3: return xmmHMAC_SHA256;
case 4: return xmmHMAC_SHA384;
case 5: return xmmHMAC_SHA512;
case 6: return xmmHMAC_RIPEMD160;
default:
return xmmHMAC_SHA1;
}
}
//---------------------------------------------------------------------------
AnsiString TfrmSign::GetKeyFile(void)
{
return edKeyFile->Text;
}
//---------------------------------------------------------------------------
AnsiString TfrmSign::GetKeyName(void)
{
return edKeyName->Text;
}
//---------------------------------------------------------------------------
AnsiString TfrmSign::GetPassphrase(void)
{
return edPassphrase->Text;
}
//---------------------------------------------------------------------------
TElXMLSignatureMethod TfrmSign::GetSigMethod(void)
{
switch(cmbSignatureMethod->ItemIndex)
{
case 0: return xsmDSS;
case 1: return xsmRSA_SHA1;
case 2: return xsmRSA_MD5;
case 3: return xsmRSA_SHA256;
case 4: return xsmRSA_SHA384;
case 5: return xsmRSA_SHA512;
case 6: return xsmRSA_RIPEMD160;
default:
return xsmRSA_SHA1;
}
}
//---------------------------------------------------------------------------
TElXMLSigMethodType TfrmSign::GetSignatureMethodType(void)
{
if (rgSignatureMethodType->ItemIndex == 0)
return xmtMAC;
else
return xmtSig;
}
//---------------------------------------------------------------------------
TElXMLSignatureType TfrmSign::GetSignatureType(void)
{
switch(cmbSignatureType->ItemIndex)
{
case 1: return xstEnveloping;
case 2: return xstDetached;
default:
return xstEnveloped;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSign::rgSignatureMethodTypeClick(TObject *Sender)
{
UpdateOpt();
}
//---------------------------------------------------------------------------
void __fastcall TfrmSign::sbKeyFileClick(TObject *Sender)
{
dlgOpen->FileName = edKeyFile->Text;
if (dlgOpen->Execute())
edKeyFile->Text = dlgOpen->FileName;
}
//---------------------------------------------------------------------------
void TfrmSign::SetCanonicalizationMethod(const TElXMLCanonicalizationMethod Value)
{
switch(Value)
{
case xcmCanon:
cmbCanonMethod->ItemIndex = 0;
break;
case xcmCanonComment:
cmbCanonMethod->ItemIndex = 1;
break;
case xcmMinCanon:
cmbCanonMethod->ItemIndex = 2;
break;
default:
cmbCanonMethod->ItemIndex = 0;
}
}
//---------------------------------------------------------------------------
void TfrmSign::SetHMACMethod(const TElXMLMACMethod Value)
{
switch(Value)
{
case xmmHMAC_MD5:
cmbHMACMethod->ItemIndex = 0;
break;
case xmmHMAC_SHA1:
cmbHMACMethod->ItemIndex = 1;
break;
case xmmHMAC_SHA224:
cmbHMACMethod->ItemIndex = 2;
break;
case xmmHMAC_SHA256:
cmbHMACMethod->ItemIndex = 3;
break;
case xmmHMAC_SHA384:
cmbHMACMethod->ItemIndex = 4;
break;
case xmmHMAC_SHA512:
cmbHMACMethod->ItemIndex = 5;
break;
case xmmHMAC_RIPEMD160:
cmbHMACMethod->ItemIndex = 6;
break;
}
}
//---------------------------------------------------------------------------
void TfrmSign::SetKeyFile(const AnsiString Value)
{
edKeyFile->Text = Value;
}
//---------------------------------------------------------------------------
void TfrmSign::SetKeyName(const AnsiString Value)
{
edKeyName->Text = Value;
}
//---------------------------------------------------------------------------
void TfrmSign::SetPassphrase(const AnsiString Value)
{
edPassphrase->Text = Value;
}
//---------------------------------------------------------------------------
void TfrmSign::SetSigMethod(const TElXMLSignatureMethod Value)
{
switch(Value)
{
case xsmDSS:
cmbSignatureMethod->ItemIndex = 0;
break;
case xsmRSA_SHA1:
cmbSignatureMethod->ItemIndex = 1;
break;
case xsmRSA_MD5:
cmbSignatureMethod->ItemIndex = 2;
break;
case xsmRSA_SHA256:
cmbSignatureMethod->ItemIndex = 3;
break;
case xsmRSA_SHA384:
cmbSignatureMethod->ItemIndex = 4;
break;
case xsmRSA_SHA512:
cmbSignatureMethod->ItemIndex = 5;
break;
case xsmRSA_RIPEMD160:
cmbSignatureMethod->ItemIndex = 6;
break;
}
}
//---------------------------------------------------------------------------
void TfrmSign::SetSignatureMethodType(const TElXMLSigMethodType Value)
{
if (Value == xmtMAC)
rgSignatureMethodType->ItemIndex = 0;
else
rgSignatureMethodType->ItemIndex = 1;
}
//---------------------------------------------------------------------------
void TfrmSign::SetSignatureType(const TElXMLSignatureType Value)
{
switch(Value)
{
case xstDetached:
cmbSignatureType->ItemIndex = 2;
break;
case xstEnveloping:
cmbSignatureType->ItemIndex = 1;
break;
case xstEnveloped:
cmbSignatureType->ItemIndex = 0;
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSign::sbSelectWinCertClick(TObject *Sender)
{
AnsiString s;
if ((frmSelWinCert->ShowModal() == mrOk) &&
(frmSelWinCert->Certificate != NULL))
{
s = frmSelWinCert->Certificate->SerialNumber;
edCertSerial->Text = BinaryToString(s.c_str(), s.Length());
}
else
edCertSerial->Text = "";
}
//---------------------------------------------------------------------------
void TfrmSign::UpdateOpt(void)
{
cmbHMACMethod->Enabled = (rgSignatureMethodType->ItemIndex == 0);
lbHMACMethod->Enabled = cmbHMACMethod->Enabled;
cmbSignatureMethod->Enabled = (rgSignatureMethodType->ItemIndex == 1);
lbSignatureMethod->Enabled = cmbSignatureMethod->Enabled;
edPassphrase->Enabled = cmbSignatureMethod->Enabled;
lbPassphrase->Enabled = edPassphrase->Enabled;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?