Ich versuche, ein EnvelopedCms , das mit einem nicht standardmäßigen Algorithmus-Identifizierer so:
%Vor% Die Verschlüsselung funktioniert wie erwartet. Jetzt, wenn ich versuche, die envelopedCms
mit etwas wie diesem zu entschlüsseln:
Ich bemerke, dass a.) der Zugriff auf das Zertifikat dauert ziemlich lange (länger als bei der Verwendung der Standard AlgorithmIdentifier) und b.) Ich bekomme diese Fehlermeldung:
%Vor%Es ist wahrscheinlich nicht das Problem, wenn man sich die Quelle anschaut, bei der das scheitert. Kann jemand den obigen Entschlüsselungscode [mit einer Smartcard] erhalten?
// EDIT1 Bitte beachten Sie, dass dieses Problem nur dann auftritt, wenn das verwendete Zertifikat auf einer Smartcard abgelegt wird und wenn ein anderer AlgorithmIdentifier als der Standard (3DES) wie im Beispielcode angegeben wurde. Alles funktioniert einwandfrei, wenn entweder der standardmäßige AlgorithmIdentifier verwendet wird oder das Zertifikat NICHT auf einer Smartcard platziert wird. Es scheint nicht wie ein SC-Problem per se, da es mit dem Standard AlgorithmIdentifier arbeitet. Es ist eher die Kombination aus einem SC und dem AES AlgorithmIdentifier, die das Problem verursacht haben, aber ich konnte keine funktionierende Lösung finden.
// EDIT2 Ein vollständiges Beispiel, das das Problem demonstriert, lesen Sie Kommentare für Details:
%Vor%Okay, also habe ich endlich den Grund dafür gefunden, warum das nicht funktioniert. Es hängt wirklich vom SC ab, den ich benutze (Yubikey 4). In meinem Fall habe ich meine RSA-Schlüssel mit openssl erstellt und dann mit dem offiziellen Yubico PIV Manager / PIV Tool auf den SC übertragen. Dies scheint mit dem offiziellen SC-Treiber von Yubico (YubiKey Smart Card Minidriver (YKMD)) noch nicht unterstützt zu werden. Der offizielle Treiber scheint jedoch der einzige Treiber zu sein, der alle erweiterten Funktionen des Yubikey unterstützt und momentan scheint es erforderlich zu sein, wenn Sie AES als Verschlüsselungsalgorithmus verwenden möchten. Ich habe den OpenSC-Treiber verwendet, bevor das für 3DES funktioniert, aber für erweiterte Funktionen fehlschlagen wird. Also, wenn jemand mit dem Yubikey auf dieses Problem stößt:
Obwohl meine Antwort zu einigen unvollständigen Tangenten führen kann, glaube ich, dass es Ihnen die gleiche Behauptung bringen wird, zu der ich gekommen bin. Tatsache ist, dass ich einen X509Store benutze, der es mir ermöglicht, die Zertifikate zu finden, die mein Computer hat. Ich übergebe dann die Sammlung in die CmsReceipientCollection mit einer X509Certificate2Collection, die von meinem store.Certificates gefunden wird. Diese Methode benötigt 128ms zur Ausführung. HTH!
%Vor%Tags und Links .net c# cryptography encryption