rray [0 .. 9] of char;: integer;: TextFile;. Lines. Add ('Серійний номер' + DatM. SerN); 1. Lines. Add ('Ідентифікатор алгоритму підпису' + DatM. IdAlgS);. Lines. Add ('Ім'я видавця' + DatM. Izd);. Lines. Add ('Період дії');. Lines. Add ('c' + DateToStr (PerS. DateTime) + '00:00:00');. Lines. Add ('до' + DateToStr (PerEnd. DateTime) + '00:00:00');. Lines. Add ('Ім'я суб'єкта' + DatM. Org + '' + DatM. User);. Lines. Add ('Відкритий ключ суб'єкта' + DatM. OpKU);. Lines. Add ('Підпис УЦ алгоритм:' + DatM. SignAlg);: = ExtractFilePath (Application. ExeName) + 'temp.txt'; (ft, path); (ft); i: = 0 to 6 do: = Memo1. Lines [i]; (ft, s);;
s: = 'Відкритий ключ суб'єкта' + DatM. OpKU; (ft, s);: = 'Підпис УЦ алгоритм:' + DatM. SignAlg; (ft, s); (ft); AdmKey. Text ='' then ('Не вибрано ключ підпису!', MtWarning, [mbOK], 0);; begin: = CALG_SHA;: = AdmKey. Text;: = StrAlloc (length (name) + 1); (cont, name); not CryptAcquireContext (@ hProv, cont, nil, PROV_RSA_FULL, 0) then ('Помилка відкриття контейнера!', MtError, [mbOK] , 0);;; not CryptCreateHash (hProv, alg, 0, 0, @ hash) then ('Помилка створення хеш-об'єкта!', mtError, [mbOK], 0);;; SaveDialog1. Execute then begin: = SaveDialog1. FileName;. Text: = str;: = pos ('. Cer', str); posn <> 0 then delete (str, posn, 4);. FileName: = str; (f1, SaveDialog1. FileName + '. Cer'); (f1, 1);: = ExtractFileName (path);: = pos ('.', Str); posn <> 0 then delete ( str, 1, posn-1) str: =''; i: = 0 to length (str) - 1 do [i]: = str [i +1]; i: = length (str) to 9 do [i ]: = # 0; (F1, format, 10); (f1, alg, 4); (f2, path); (f2, 1);: = FileSize (f2); (f1, size, 4); not eof (f2) do (f2, buf {^}, 512, size); (f1, buf, size); not CryptHashData (hash, @ buf, size, 0) then ('Помилка при хешуванні!', mtError , [mbOK], 0);;;; (f2); not CryptSignHash (hash, AT_SIGNATURE, nil, 0, nil, @ size) then
begin ('Помилка при визначенні розміру підпису!', mtError, [mbOK], 0);
CloseFile (f1);;; (signature, size); not CryptSignHash (hash, AT_SIGNATURE, nil, 0, signature, @ size) then ('Помилка при підписанні хешу!', mtError , [mbOK], 0); (f1);;; (f1, size, 4); (f1, signature ^, size); (f1); not CryptDestroyHash (hash) then ('Помилка при знищення хешу! ', mtError, [mbOK], 0);; not CryptReleaseContext (hProv, 0) then
begin ('Не вдалося звільнити контекст!', mtError, [mbOK], 0);
end; ('Файл підписаний успішно!', mtInformation, [mbOK], 0);
end;
// знищуємо хеш-об'єкт і звільняємо контекст (hash); (hProv, 0);
// тепер можна внести дані в БД
Spe...