Domanda

Ho cercato attraverso la MSDN cercando di capire il crytoapi. Qui di seguito alcune domande e congetture su come le cose potrebbero funzionare. Tutte le risposte o conferme o confutare delle mie congetture molto apprezzato.

Secondo la nota che ho trovato su http://msdn.microsoft. com / it-it / library / ms867086.aspx , il CSP continua a coppie di chiavi private pubbliche tra le sessioni.

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

Sembra a me come se un contenitore di chiavi può contenere:

* 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

È corretto? Sono le chiavi non accoppiati distrutte quando il contenitore è chiuso?

Qual è il metodo usuale di creare / nominare contenitori chiave? Come si fa a tenere a botte con qualche altro contenitore applicazioni? Ho bisogno di un contenitore con chiavi pubbliche / private in modo che il contenitore provvisorio menzionato nella sezione commenti di CryptAcquireContext non è applicabile. Forse utilizzare creare nome composto di una parte fissa più un numero di sequenza. Potrebbe cancellare contenitore quando fatto.

cryptsignhash specifica che o la firma o scambio di chiave la chiave privata deve essere utilizzata per firmare l'hash. Credo che questo significa cryptsignkey troveranno la chiave privata creato da cryptkeygen con l'appropriato Alg_id Parmeter (valori CALG_RSA_KEYX o CALG_RSA_SIGN).

Se io esportare una chiave, fa il keyblob contiene informazioni dicendo che tipo di chiave è?

se posso esportare un PUBLICKEYBLOB e trasportarlo a qualche altro ambiente. Devo importare che blob nel nuovo ambiente prima che io possa usarlo per verificare una firma? cryptverifysignature ha bisogno di una maniglia alla chiave in modo da sembra che deve essere importato prima. Fa l'importazione di un PUBLICKEYBLOB sostituire la chiave pubblica di una qualsiasi coppia esistente chiavi pubblica / privata? Io non impegna.

È stato utile?

Soluzione

E 'stato un sacco di domande. Vorrei cercare di rispondere:

  

il CSP mantiene le coppie chiave pubblica privata   tra le sessioni.   Vuol dire che essi sono tenuti a tempo indeterminato?

Sì, fino a quando non sono esplicitamente cancellati chiamando CryptAcquireContext con la bandiera CRYPT_DELETEKEYSET.

  

Che valore sono questi contenitori e le eventuali coppie di chiavi che essi contengono?

Sono le chiavi persistenti che è possibile riutilizzare. Se si ottiene un certificato su una chiave privata, si desidera mantenere la chiave privata intorno - e non si desidera esportare la chiave privata se si può evitare: il CSP può potenzialmente proteggere la chiave molto meglio di quanto si possa

  

C'è un modo per ottenere un handle a una delle coppie di chiavi?

CryptAcquireContext seguito da CryptGetUserKey.

  

Sembra a me come se un contenitore di chiavi   può contenere: 1 coppia di chiavi di firma, 1 scambio di chiavi coppia di chiavi, un numero qualsiasi di chiavi pubbliche di entrambi firma o tipo key_exchange, qualsiasi numero di chiavi di sessione. È corretto?

Sì e no. Le chiavi pubbliche importati e le chiavi di sessione non sono logicamente in un particolare contenitore di chiavi.

  

sono il non accoppiato   chiavi distrutte quando il contenitore è   chiuso?

Sì.

  

Qual è il metodo usuale di   creazione / denominazione contenitori chiave? Come   si fa a tenere a botte con un po 'di   altro contenitore applicazioni?

La maggior parte delle applicazioni utilizzano un GUID.

  

questo significa cryptsignkey sarà   trovare la chiave privata creato da   cryptkeygen con l'appropriato   Alg_id Parmeter (valori CALG_RSA_KEYX   o CALG_RSA_SIGN).

Sì.

  

Se io esportare una chiave, fa il keyblob   contenere informazioni raccontare che tipo   di chiave è?

Dipende dal blob-tipo selezionato, ma la maggior parte keyblobs inizia con un BLOBHEADER che contiene il tipo di chiave.

  

se posso esportare un PUBLICKEYBLOB e   trasportarlo a qualche altro   ambiente. Devo importare che   blob nel nuovo ambiente prima di   può essere utilizzato per verificare una firma?

Sì.

  

Fa l'importazione di un   PUBLICKEYBLOB sostituire la chiave pubblica   di qualsiasi coppia esistente chiavi pubblica / privata?

No.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top