Importera och exportera nycklar
Du kan importera och exportera symmetriska nycklar och asymmetriska nycklar med CNG. Och du kan använda funktioner för nyckelexport och import för att flytta nycklar mellan datorer.
Symmetriska nycklar
Om du vill importera eller exportera symmetriska nycklar (eller sessionsnycklar) där samma nyckel används för att kryptera och dekryptera vissa data kan du använda funktionerna BCryptImportKey och BCryptExportKey. Vanligtvis exporterar du först en nyckel med hjälp av funktionen BCryptExportKey innan du importerar med hjälp av funktionen BCryptImportKey. Funktionerna är utformade för att aktivera kryptering av exporterade och importerade nycklar med hjälp av parametrarna hExportKey och hImportKey. Microsoft-implementeringen av dessa funktioner stöder dock inte kryptering av exporterade och importerade nycklar.
Asymmetriska nycklar
Om du vill importera asymmetriska (eller offentliga/privata) nyckelpar där en nyckel används för att kryptera och den andra används för att dekryptera vissa data kan du använda någon av BCryptImportKeyPair- eller NCryptImportKey funktioner. En CNG-provider måste koda nyckelparet med hjälp av en blob typ som stöds. BCryptExportKey kan användas för att skapa den kodade nyckeln BLOB. CNG Structures beskriver de viktiga BLOB-typer och strukturer som Stöds av Microsoft Key Storage Provider.
För BCryptExportKey för att skapa ett beständiga nyckelpar måste indatanyckeln BLOB innehålla en privat nyckel. Offentliga nycklar sparas inte.
Nyckelnamnet och exportprincipen ingår inte i den BLOB- struktur som definieras i CNG-strukturer. Men om en BLOB är av en ogenomskinlig BLOB-typ (till exempel minnesavbildningen av ett internt nyckeltillstånd) kan blobben innehålla nyckelnamnet och exportprincipegenskaperna.
Följande procedur beskriver hur du importerar en bevarad privat nyckel med dess egenskaper.
Så här importerar du en sparad nyckel
- Skapa en bevarad nyckel med hjälp av funktionen NCryptCreatePersistedKey.
- Ange önskade egenskaper för nyckelobjektet med hjälp av funktionen NCryptSetProperty.
- Ange bloben för importnyckeln som en egenskap för nyckeln, med BLOB-typen som egenskapsnamn.
- Slutför den bevarade nyckelimporten med hjälp av funktionen NCryptFinalizeKey.