Ich haue mir den Kopf, indem ich versuche, ein privat-öffentliches Schlüsselpaar mit kSecAttrTokenIDSecureEnclave
zu generieren, so dass der private Schlüssel in der sicheren Enklave generiert wird.
Wo ist kSecAttrTokenIDSecureEnclave
dokumentiert? Unten ist mein Code, der mit dem Statuscode -50 fehlschlägt.
Der Fehler, den Sie erhalten, -50
, weist auf einen Parameterfehler hin. Ein Parameter, den Sie an die Funktion übergeben, ist für den Vorgang falsch oder ungeeignet. Wenn Sie sich den Header SecItem
ansehen, sehen Sie:
kSecAttrTokenIDSecureEnclave Gibt den bekannten Bezeichner des Token wurde mithilfe der Secure Enclave des Geräts implementiert. Die einzigen Schlüsselbundartikel Unterstützt durch das Secure Enclave Token sind 256-Bit-Ellipsenkurvenschlüssel (kSecAttrKeyTypeEC). Schlüssel müssen auf der sicheren Enklave mit generiert werden SecKeyGenerateKeyPair-Aufruf mit kSecAttrTokenID auf gesetzt kSecAttrTokenIDSecureEnclave im Parameterwörterbuch ist es nicht Es ist möglich, vorgenerierte Schlüssel in das Token kSecAttrTokenIDSecureEnclave zu importieren.
RSA ist derzeit keine unterstützte Verschlüsselung, wenn ein privater Schlüssel in der sicheren Enklave generiert wird. Wechseln Sie zu einem 256-Bit-EC-Schlüssel.
Dies wurde in der WWDC-Sitzung 2015 706 Sicherheit und Ihre Apps behandelt. Das Apple-Beispielprojekt "KeychainTouchID" zeigt die korrekten Parameter zum Generieren und Verwenden eines Schlüssels mithilfe der sicheren Enklave an.