Dekódování obálek dat

Obecné úkoly potřebné k dekódování obálek zprávy jsou znázorněny na následujícím obrázku a popsány v seznamu, který následuje za ní.

dekódování obálek dat

Posloupnost událostí pro dekódování zašifrovaných dat pomocí správy klíčů pro přenos klíčů, jak je znázorněno na předchozím obrázku, je následující:

  • Načte se ukazatel na zprávu , která je digitálně obálkovaná s.
  • Úložiště certifikátů je otevřeno.
  • Ze zprávy se načte ID příjemce (Moje ID).
  • ID příjemce se používá k načtení certifikátu.
  • privátní klíč přidružený k tomu certifikátu se načte.
  • Privátní klíč slouží k dešifrování klíče symetrického (relace).
  • Šifrovací algoritmus se načte ze zprávy.
  • Pomocí privátního klíče a šifrovacího algoritmu se data dešifrují.

Následující postup používá funkce zpráv nízké úrovně k provádění právě uvedených úloh.

K dekódování obalené zprávy

  1. Získejte ukazatel na kódovaný objekt BLOB.
  2. Zavolejte CryptMsgOpenToDecodea předejte nezbytné argumenty.
  3. Zavolejte CryptMsgUpdate jednou, předejte popisovač načtený v kroku 2 a ukazatel na data, která se mají dekódovat. To způsobí, že se v závislosti na typu zprávy provedou příslušné akce.
  4. Volání CryptMsgGetParam, předání popisovače načteného v kroku 2 a CMSG_TYPE_PARAM pro ověření, že zpráva je obálkového datového typu.
  5. Znovu zavolejte CryptMsgGetParam, a to tím, že předáte CMSG_INNER_CONTENT_TYPE_PARAM, abyste získali datový typ vnitřního obsahu.
  6. Pokud je datový typ vnitřního obsahu dat, pokračujte dešifrováním a dekódováním obsahu. V opačném případě spusťte dekódovací proceduru odpovídající datovému typu obsahu.
  7. Předpokládejme, že vnitřní typ obsahu je "data", inicializujte CMSG_CTRL_DECRYPT_PARA strukturu dat a zavolejte CryptMsgControl, přeneste CMSG_CTRL_DECRYPT a adresu struktury. Obsah se dešifruje.
  8. Vyvoláním CryptMsgGetParama předáním CMSG_CONTENT_PARAM získáte ukazatel na dekódovaný obsah datového objektu BLOB (BYTE řetězec).
  9. Zprávu zavřete voláním CryptMsgClose.

Výsledkem tohoto postupu je dekódování a dešifrování zprávy a načtení ukazatele na objekt blob dat obsahu.

příklad programu C: Kódování obálky, podepsaná zpráva