Importowanie i eksportowanie kluczy
Za pomocą CNG można importować i eksportować klucze symetryczne i klucze asymetryczne. Możesz też użyć funkcji eksportowania kluczy i importowania, aby przenosić klucze między maszynami.
Klucze symetryczne
Aby zaimportować lub wyeksportować klucze symetryczne (lub sesji), w których ten sam klucz jest używany do szyfrowania i odszyfrowywania niektórych danych, możesz użyć funkcji BCryptImportKey i BCryptExportKey. Zazwyczaj najpierw należy wyeksportować klucz przy użyciu funkcji BCryptExportKey przed zaimportowaniem przy użyciu funkcji BCryptImportKey. Funkcje są przeznaczone do włączania szyfrowania wyeksportowanych i importowanych kluczy przy użyciu parametrów hExportKey i hImportKey; jednak implementacja tych funkcji przez firmę Microsoft nie obsługuje szyfrowania wyeksportowanych i zaimportowanych kluczy.
Klucze asymetryczne
Aby zaimportować pary kluczy asymetryczne (lub publiczne/prywatne), w których jeden klucz jest używany do szyfrowania, a drugi służy do odszyfrowywania niektórych danych, można użyć jednej z BCryptImportKeyPair lub funkcji NCryptImportKey. Dostawca CNG musi kodować parę kluczy przy użyciu obsługiwanego klucza blOB typu. BCryptExportKey można użyć do utworzenia zakodowanego klucza BLOB. struktury CNG opisuje kluczowe typy obiektów blob i struktury obsługiwane przez dostawcę magazynu kluczy firmy Microsoft.
Aby BCryptExportKey w celu utworzenia utrwalonej pary kluczy, obiekt BLOB klucza wejściowego musi zawierać klucz prywatny. kluczy publicznych nie są utrwalane.
Nazwa klucza i zasady eksportowania nie są częścią struktury blOB zdefiniowanej w strukturach CNG . Jeśli jednak obiekt BLOB jest nieprzezroczystym typem obiektu BLOB (takim jak obraz pamięci stanu klucza wewnętrznego), obiekt BLOB może zawierać nazwę klucza i właściwości zasad eksportu.
Poniższa procedura opisuje sposób importowania utrwalonego klucza prywatnego z jego właściwościami.
Aby zaimportować utrwalone klucza
- Utwórz utrwalonego klucza przy użyciu funkcji NCryptCreatePersistedKey.
- Ustaw żądane właściwości obiektu klucza przy użyciu funkcji NCryptSetProperty.
- Ustaw klucz importu BLOB jako właściwość w kluczu, z typem obiektu BLOB jako nazwą właściwości.
- Zakończ importowanie utrwalonego klucza przy użyciu funkcji NCryptFinalizeKey.