Outlook titkosítás és aláírás programozása

Mit tegyünk ha az a feladat, hogy az Outlook-ot, mint COM szervert használva kell különféle címekre leveleket küldenünk, úgy, hogy bizonyos címre titkosítva menjen a levél, bizonyos helyekre pedig titkosítás nélkül?

Az Outlook szinte minden paramétere az COM szerver módban elérhető, kivéve "természtesen" az aláírás és a titkosítás egyes levelekre vonatkozó beállításait. A nem túl gyakran dokumentált megoldás a Registry-ben található eldugva. A megfelelő kulcs és bejegyzés állításával az egyes levelekre vonatkozó titkosítási és aláírási beállítások szabályozhatóak.
A beállítások az Outlook Tool/Options/Security képernyőjén található kapcsolók által beállított értékeket manipulálják (azaz egyenértékűek a manuális konfigurációval).

Az eset bemutatására álljon itt egy Delphi-ben megírt függvény:

Function TDm.SetTitkos(pTitkos: boolean): boolean;
var lReg    : TRegistry;
    lBinary : array [0..3] of byte;
    lSize   : integer;
    lStart  : string;
begin
  Result := True;

  lReg := TRegistry.Create;
  try
    lReg.RootKey := HKEY_CURRENT_USER;

    lStart := '\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\'
              + comm_PROFILE_NAME + '\c02ebc5353d9cd11975200aa004ae40e';

    if lReg.OpenKey(lStart, False) then
      Begin
        lSize := 4;
        lBinary[1] := 0;
        lBinary[2] := 0;
        lBinary[3] := 0;
        If pTitkos then
          lBinary[0] := lBinary[0] or 3
        else
          lBinary[0] := lBinary[0] and $FC;

        lReg.WriteBinaryData('00030354', lBinary, lSize);
      End
    else
      Begin
        Result := False;
        MessageDlg('Hiányzik az "' + comm_PROFILE_NAME +'" outlook profil megfelelő bejegyzése!', mtError, [mbOK], 0)
        Abort;
      End;
  finally
    lReg.Free;
  end;

end;

A példából látható, hogy a kulcsban szerepel a használni kívánt profil neve (comm_PROFILE_NAME), ezen belül kell a c02ebc5353d9cd11975200aa004ae40e kulcsot megkeresni, majd itt kell a 00030354 DWORD 0. bytjának 0 és 1 bitjét beállítani.

Értékei : 01 aláírás, 10 titkosítás, 11 mindkettő, 00 egyik sem.

Világi Ferenc
BanKonekt Kft.
bankonekt@axelero.hu

Comments