y';. Izd: = 'GOST';. Org: = 'Org';. User: = 'User';. OpKU: = В«;. SignAlg: = 'sign algoritm';. Edit2. Text: = DatM. User;. SpeedButton2. Enabled: = false;. SpeedButton3. Enabled: = false;. Show;; TMainF.N4Click (Sender: TObject);. Show;; TMainF. FormClose (Sender: TObject; var Action: TCloseAction);. PFIBDatabase1. Connected: = false;; TMainF. ArchiveClick (Sender: TObject);. PFIBDataSet1. Active: = true;. Show;;. br/>
4.2 Модуль форми KeysForm
KeysForm;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus, Proc, Wcrypt2, ComCtrls, Expo; = class (TForm): TButton;: TComboBox; : TButton;: TLabel;: TMemo;: TLabel;: TLabel;: TEdit;: TUpDown;: TCheckBox;: TButton; Button1Click (Sender: TObject); FormActivate (Sender: TObject); Button2Click (Sender: TObject); Button3Click ( Sender: TObject);
{Private declarations}
{Public declarations};: TKeys; Math;
{$ R *. dfm} createCont (nameCon: String); cont: PChar;, con: string;: PHCRYPTPROV;
// Виконуємо створення контейнера або підключення до нього
// Ім'я контейнера беремо з об'єкта EdtCont
// ім'я контейнера con
// if length (edtCont. Text) = 0 then: = nameCon;: = Con;: = StrAlloc (length (name) + 1); (cont, name);
// намагаємося підключитися до контейнеруnot CryptAcquireContext (@ hContext, cont, nil, PROV_RSA_FULL, 0) then// якщо не вдалося підключитися
// створюємо новий контейнер з введеним ім'ям
if not CryptAcquireContext (@ hContext, cont, nil, PROV_RSA_FULL, _NEWKEYSET) then
// error: = GetLastError; ('Помилка створення контейнера:', mtInformation, [mbOK], 0);; MessageDlg ('Створено контейнер з ім'ям' + name,, [mbOK], 0 ); MessageDlg ('Підключилися до контейнера' + name, mtInformation, [mbOK], 0);; GenKey (s: string);// (Sender: TObject);: PChar;, KeyL1, KeyLS: string;: HCRYPTPROV; , SignKey: HCRYPTKEY;, keyLen: DWORD;. ReportMemo. Clear;
{В«зчитуємоВ» ім'я контейнера}
if length (s) = 0 then: = nil: = s;: = StrAlloc (length (err) + 1); (cont, err);;: = IntToStr (Keys. UpDown2. Position); (@ hProv, cont, nil, PROV_RSA_FULL, 0);: = strtoint (KeyLS); Keys. CheckBox2. Checked then: = keyLen shl 16; not CryptGenKey (hProv, AT_SIGNATURE, flag, @ SignKey) thenint64 (GetLastError) of_INVALID_HANDLE: err: = 'ERROR_INVALID_HANDLE'; _INVALID_PARAMETER: err: = 'ERROR_INVALID_PARAMETER'; _BAD_FLAGS: err: = 'NTE_BAD_FLAGS' ; _BAD_ALGID: err: = 'NTE_BAD_ALGID'; _BAD_UID: err: = 'NTE_BAD_UID'; _FAIL: err: = 'NTE_FAIL'; err: = 'Unknown error';; (...