Importação e exportação de chaves
Você pode importar e exportar chaves simétricas e chaves assimétricas com CNG. E você pode usar a funcionalidade de exportação e importação de chaves para mover chaves entre máquinas.
Chaves simétricas
Para importar ou exportar chaves simétricas (ou de sessão) em que a mesma chave é usada para criptografar e descriptografar alguns dados, você pode usar o BCryptImportKey e funções de BCryptExportKey. Normalmente, você primeiro exporta uma chave usando a função BCryptExportKey antes de importar usando a função BCryptImportKey. As funções são projetadas para permitir a criptografia de chaves exportadas e importadas usando o hExportKey e hImportKey parâmetros; no entanto, a implementação da Microsoft dessas funções não oferece suporte à criptografia de chaves exportadas e importadas.
Chaves assimétricas
Para importar pares de chaves assimétricas (ou público/privado) em que uma chave é usada para criptografar e a outra é usada para descriptografar alguns dados, você pode usar uma das BCryptImportKeyPair ou funções de NCryptImportKey. Um provedor CNG deve codificar o par de chaves usando um tipo deBLOB de chavesuportado. BCryptExportKey pode ser usada para criar o BLOB de chave codificada. CNG Structures descreve os principais tipos de BLOB e estruturas suportados pelo Microsoft Key Storage Provider.
Para BCryptExportKey criar um par de chaves persistentes, o BLOB da chave de entrada deve conter uma chave privada . As chaves públicas não são persistentes.
O nome da chave e a política de exportação não fazem parte da estrutura deBLOBdefinida em Estruturas CNG. No entanto, se um BLOB for de um tipo BLOB opaco (como a imagem de memória de um estado de chave interna), o BLOB poderá conter o nome da chave e as propriedades da política de exportação.
O procedimento a seguir descreve como importar uma chave privada persistente com suas propriedades.
Para importar uma chave persistente
- Crie uma chave persistente usando a funçãoNCryptCreatePersistedKey.
- Defina as propriedades desejadas no objeto chave usando a funçãoNCryptSetProperty.
- Defina a chave de importação BLOB como uma propriedade na chave, com o tipo BLOB como o nome da propriedade.
- Finalize a importação de chave persistente usando a funçãoNCryptFinalizeKey.