Question

Je l'ai regardé à travers le MSDN en essayant de comprendre le CrytoAPI. Voici quelques questions et suppositions quant à la façon dont les choses pourraient fonctionner. Toutes les réponses ou des confirmations ou réfutant de mes suppositions beaucoup apprécié.

D'après la note que j'ai trouvé à http://msdn.microsoft. com / fr-fr / bibliothèque / ms867086.aspx , le CSP maintient des paires de clés privées publiques entre les sessions.

* 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?

Il me semble que si un conteneur de clé peut contenir:

* 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

Est-ce exact? Sont les clés non appariés détruites lorsque le conteneur est fermé?

Quelle est la méthode habituelle de créer / nommer des conteneurs clés? Comment peut-on garder de piétiner un autre conteneur d'applications? J'ai besoin d'un conteneur avec les clés publiques / privées de sorte que le réservoir temporaire mentionné dans la section des remarques de CryptAcquireContext n'est pas applicable. Peut-être utiliser créer nom constitué par une partie fixe et un numéro de séquence. Pourrait supprimer conteneur lorsque vous avez terminé.

cryptsignhash précise que la signature ou de l'échange de clés clé privée doit être utilisé pour signer le hachage. Je suppose que cela signifie cryptsignkey trouvera la clé privée créée par cryptkeygen avec le ALG_ID approprié Parmeter (valeurs CALG_RSA_KEYX ou CALG_RSA_SIGN).

Si j'exporter une clé, ne l'keyblob contient des informations disant quel type de clé, il est?

si j'exporter un PublicKeyBlob et de transport à un autre environnement. Dois-je importer ce blob dans le nouvel environnement avant de pouvoir l'utiliser pour vérifier une signature? cryptverifysignature a besoin d'une poignée à la clé il semble que ce doit être d'abord importé. Est-ce que l'importation d'un PublicKeyBlob remplacer la clé publique de toute paire de clés publique / privée existante? Je suppose pas.

Était-ce utile?

La solution

C'était beaucoup de questions. Je vais essayer d'y répondre:

  

le CSP conserve les paires de clés public-privé   entre les sessions.   Est-ce que cela signifie qu'ils sont conservés indéfiniment?

Oui, jusqu'à ce qu'ils soient explicitement supprimés en appelant CryptAcquireContext avec le drapeau de CRYPT_DELETEKEYSET.

  

De quelle valeur sont ces conteneurs et les paires de clés qu'ils contiennent?

Ils sont les clés persistantes que vous pouvez réutiliser. Si vous obtenez un certificat sur une clé privée, vous voulez garder la clé privée autour - et vous ne voulez pas exporter la clé privée si vous pouvez l'éviter: le CSP peut potentiellement protéger la clé beaucoup mieux que vous pouvez

  

Est-il possible d'obtenir une poignée à l'une des paires de clés?

CryptAcquireContext suivie CryptGetUserKey.

  

Il me semble que si un conteneur de clé   peut contenir: 1 signature paire de clés, 1 échange de clés paire de clés, un certain nombre de clés publiques de signature soit ou le type de key_exchange, un certain nombre de clés de session. Est-ce exact?

Oui et non. Les clés publiques importées et les clés de session ne sont pas logiquement dans un conteneur clé particulière.

  

sont non apparié   clés détruites lorsque le conteneur est   fermé?

Oui.

  

Quelle est la méthode habituelle de   créer / nommer des conteneurs clés? Comment   peut-on garder de piétiner certains   autre conteneur applications?

La plupart des applications utilisent un GUID.

  

cela signifie cryptsignkey sera   trouver la clé privée créée par   cryptkeygen avec le approprié   ALG_ID Parmeter (valeurs CALG_RSA_KEYX   ou CALG_RSA_SIGN).

Oui.

  

Si j'exporter une clé, ce que le keyblob   contenir des informations indiquant quel genre   la clé est?

Cela dépend du type sélectionné blob, mais la plupart keyblobs commence par un BLOBHEADER qui contient le type de clé.

  

si j'exporter un PublicKeyBlob et   le transporter à un autre   environnement. Est-ce que je dois importer ce   blob dans le nouvel environnement avant   peut l'utiliser pour vérifier une signature?

Oui.

  

Est-ce que l'importation d'un   PublicKeyBlob remplacer la clé publique   de toute paire de clés publique / privée existante?

Non.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top