Ich habe im MSDN nachgeschaut und versucht, die Crytoapi zu verstehen. Im Folgenden sind einige Fragen und Vermutungen, wie die Dinge funktionieren könnten. Für Antworten, Bestätigungen oder Widerlegungen meiner Vermutungen bin ich sehr dankbar.
Laut der Notiz, die ich unter http://msdn.microsoft.com/en-us/library/ms867086.aspx bewahrt der ZDA öffentliche private Schlüsselpaare zwischen den Sitzungen auf.
* 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?
Es sieht für mich so aus, als ob ein Schlüsselcontainer enthalten kann:
* 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
Ist dies korrekt? Werden die nicht gepaarten Schlüssel zerstört, wenn der Container geschlossen wird?
Wie werden Schlüsselcontainer üblicherweise erstellt/benannt? Wie kann man verhindern, dass man auf einem anderen Anwendungscontainer herumtrampelt? Ich brauche einen Container mit öffentlichen/privaten Schlüsseln, so dass der temporäre Container, der in den Anmerkungen von cryptacquirecontext erwähnt wird, nicht anwendbar ist. Vielleicht sollte man einen Namen erstellen, der aus einem festen Teil und einer Sequenznummer besteht. Sie könnten den Container löschen, wenn Sie fertig sind.
cryptsignhash gibt an, dass entweder der private Schlüssel für die Signatur oder der private Schlüssel für den Schlüsselaustausch zum Signieren des Hashwerts verwendet werden soll. Ich vermute, dass dies bedeutet, dass cryptsignkey den privaten Schlüssel findet, der von cryptkeygen mit dem entsprechenden Alg_id-Parameter erstellt wurde (Werte CALG_RSA_KEYX oder CALG_RSA_SIGN).
Wenn ich einen Schlüssel exportiere, enthält der Keyblob dann Informationen darüber, um welche Art von Schlüssel es sich handelt?
wenn ich ein PUBLICKEYBLOB exportiere und es in eine andere Umgebung transportiere. Muss ich diesen Blob in die neue Umgebung importieren, bevor ich ihn zur Überprüfung einer Signatur verwenden kann? cryptverifysignature benötigt ein Handle auf den Schlüssel, so dass es so aussieht, als müsste er zuerst importiert werden. Ersetzt das Importieren eines PUBLICKEYBLOB den öffentlichen Schlüssel eines bestehenden öffentlichen/privaten Schlüsselpaares? Ich nehme an NICHT.