Pergunta

Eu estive olhando através da MSDN tentando entender a crytoapi. Abaixo estão algumas perguntas e suposições a respeito de como as coisas poderiam funcionar. Quaisquer respostas ou confirmações ou refutar das minhas conjecturas muito apreciado.

De acordo com a nota que eu encontrei em http://msdn.microsoft. com / en-us / library / ms867086.aspx , o CSP mantém pares de chaves público-privadas entre as sessões.

* Does that mean they are kept indefinitely? If so, whatever signature or exchange key pairs are extant when the CSP is closed remain. 
* Of what value are these containers and any key pairs they contain?  I guess they could be used to sign things without obtaining a handle to a key pair. 
* Is there any way to get a handle to one of the key pairs?

Parece-me como se um recipiente de chave pode conter:

* 1 signature key pair
* 1 key exchange key pair
* any number of PUBLIC keys of either signature or key_exchange type
* any number of session keys

Isso é correto? São a não emparelhado chaves destruída quando o recipiente está fechado?

O que é o método usual de criar / nomear recipientes principais? Como é que se impedir de pisar em algum outro recipiente aplicações? Eu preciso de um recipiente com chaves públicas / privadas para o recipiente temporário mencionado na seção de observações de CryptAcquireContext não é aplicável. Talvez usar criar nome que consiste de uma parte fixa de uma sequência. Foi possível eliminar o recipiente quando feito.

especifica cryptsignhash que tanto a assinatura ou a chave privada de troca de chaves é para ser usado para assinar o hash. Acho que isso significa cryptsignkey vai encontrar a chave privada criada por cryptkeygen com o Parmeter ALG_ID apropriado (valores CALG_RSA_KEYX ou CALG_RSA_SIGN).

Se eu exportar uma chave, que o keyblob conter informado que tipo de chave que é?

Se eu exportar um PUBLICKEYBLOB e transportá-lo para algum outro ambiente. Eu tenho que importar esse blob no novo ambiente antes que eu possa usá-lo para verificar uma assinatura? cryptverifysignature precisa de um identificador para a chave assim que olha como ele deve ser importado pela primeira vez. Será que a importação de um PUBLICKEYBLOB substituir a chave pública de qualquer par existente público / privado chave? EU NÃO assumir.

Foi útil?

Solução

Isso foi um monte de perguntas. Deixe-me tentar responder-lhes:

o CSP mantém pares de chaves públicas privadas entre as sessões. Isso significa que eles são mantidos indefinidamente?

Sim, até que sejam explicitamente excluídos chamando CryptAcquireContext com a bandeira CRYPT_DELETEKEYSET.

De que valor são esses recipientes e quaisquer pares de chaves que eles contêm?

Eles são chaves persistentes que podem ser reutilizados. Se você receber um certificado em uma chave privada, você quer manter a chave privada ao redor - e você não quer exportar a chave privada se você pode evitá-lo: o CSP pode potencialmente proteger a chave muito melhor do que você pode

Existe alguma maneira de obter um identificador para um dos pares de chaves?

CryptAcquireContext seguido por CryptGetUserKey.

Parece-me como se um recipiente de chave pode conter: 1 assinatura par de chaves, um par de chaves de troca de chaves, qualquer número de chaves públicas de qualquer assinatura ou key_exchange tipo, qualquer número de chaves de sessão. É este correto?

Sim e não. As chaves públicas importadas e as chaves de sessão não são logicamente em qualquer recipiente de chave particular.

são os não pareado chaves destruída quando o recipiente está fechado?

Sim.

O que é o método usual de criar / nomear recipientes principais? Como é que uma pessoa manter-se de pisar em alguma outro recipiente aplicações?

A maioria dos aplicativos usar um GUID.

Este meio vontade cryptsignkey encontrar a chave privada criada por cryptkeygen com o apropriado ALG_ID Parmeter (valores CALG_RSA_KEYX ou CALG_RSA_SIGN).

Sim.

Se eu exportar uma chave, faz o keyblob conter informado que tipo de chave que é?

Isso depende do tipo blob selecionado, mas a maioria dos keyblobs começa com um BLOBHEADER que contém o tipo de chave.

Se eu exportar um PUBLICKEYBLOB e transportá-lo para algum outro meio Ambiente. Eu tenho que importar esse blob no novo ambiente antes de eu pode usá-lo para verificar uma assinatura?

Sim.

A importação de um PUBLICKEYBLOB substituir a chave pública de qualquer par existente público / privado chave?

Não.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top