Delen via


Het decoderen van omhulde gegevens

De algemene taken die nodig zijn om een bericht met enveloppen te decoderen, worden weergegeven in de volgende afbeelding en worden beschreven in de lijst die erop volgt.

gegevens in enveloppen decoderen

De volgorde van gebeurtenissen voor het decoderen van omsloten gegevens met behulp van sleuteltransport en sleutelbeheer, zoals getoond in de vorige afbeelding, is als volgt:

  • Er wordt een aanwijzer naar het digitaal omhulde bericht opgehaald.
  • Er wordt een certificaatopslag geopend.
  • Uit het bericht wordt de ontvanger-id (mijn ID) opgehaald.
  • De ontvanger-id wordt gebruikt om het certificaat op te halen.
  • De persoonlijke sleutel die aan dat certificaat is gekoppeld, wordt opgehaald.
  • De privésleutel wordt gebruikt om de symmetrischesleutel (sessie-)te ontsleutelen.
  • Het versleutelingsalgoritmen worden opgehaald uit het bericht.
  • Met behulp van het algoritme voor persoonlijke sleutel en versleuteling worden de gegevens ontsleuteld.

In de volgende procedure worden berichtfuncties op laag niveau gebruikt om de zojuist vermelde taken uit te voeren.

Een bericht met enveloppen decoderen

  1. Haal een aanwijzer op naar de gecodeerde BLOB.
  2. Roep CryptMsgOpenToDecodeaan, waarbij de benodigde argumenten worden doorgegeven.
  3. Roep CryptMsgUpdate één keer aan en geef de handle die is opgehaald in stap 2 en een pointer naar de te decoderen gegevens door. Dit zorgt ervoor dat de juiste acties op het bericht worden uitgevoerd, afhankelijk van het berichttype.
  4. Roep CryptMsgGetParamaan en geef het handvat door dat is opgehaald in stap 2 en CMSG_TYPE_PARAM om te bevestigen dat het bericht van het type envelopdata is.
  5. Roep opnieuw CryptMsgGetParam-aan en geef CMSG_INNER_CONTENT_TYPE_PARAM door om het gegevenstype van de interne inhoudop te halen.
  6. Als het gegevenstype voor de interne inhoud gegevensis, gaat u verder met het ontsleutelen en decoderen van de inhoud. Voer anders een decoderingsprocedure uit die geschikt is voor het gegevenstype inhoud.
  7. Ervan uitgaande dat het interne inhoudstype 'gegevens' is, initialiseert u de CMSG_CTRL_DECRYPT_PARA gegevensstructuur en roept u CryptMsgControl-aan, waarbij CMSG_CTRL_DECRYPT en het adres van de structuur worden doorgegeven. De inhoud wordt ontsleuteld.
  8. Roep CryptMsgGetParam-aan en geef CMSG_CONTENT_PARAM door om een aanwijzer op te halen naar de gedecodeerde inhoudsgegevens-BLOB (BYTE- tekenreeks).
  9. Roep CryptMsgClose- aan om het bericht te sluiten.

Het resultaat van deze procedure is dat het bericht wordt gedecodeerd en ontsleuteld en dat een aanwijzer wordt opgehaald naar de blob met inhoudsgegevens.

voorbeeld van een C-programma: een envelop coderen, ondertekend bericht