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 + -
显示快捷键?