Für eine iPhone App muss ich ein RSA-Schlüsselpaar erstellen, es in der Schlüsselkette speichern und den öffentlichen Schlüssel abrufen.
Zum Glück hat Apple eine Crypto-Übung veröffentlicht, in der alles enthalten ist, was ich brauche kann gefunden werden (Klasse SecKeyWrapper , Funktionen generateKeyPair und getPublicKeyBits ).
Aber nach dem Versuch, diese Funktionen zu verwenden, bekomme ich immer die gleiche Ausgabe für meinen öffentlichen Schlüssel für verschiedene Schlüsselpaare (anstelle von verschiedenen öffentlichen Schlüsselbits für verschiedene Schlüsselpaare).
Ich erstelle zuerst ein Schlüsselpaar durch Aufruf von generateKeyPairWithKeySizeInBits (was gut zu funktionieren scheint), danach extrahiere ich die öffentlichen Schlüsselbits mit getPublicKeyBits und NSLog diese ...
%Vor% So funktioniert Ihr SecItemDelete-Code nicht so, wie Sie es erwarten. Wenn Sie alle Elemente in Ihrem Schlüsselbund löschen möchten (zu Testzwecken natürlich), sollten Sie sich den Code in -[Credentials resetCredentials]
method im AdvancedURLConnections-Beispielcode ansehen.
Sie finden möglicherweise auch die Methode -dumpCredentials
während des Debuggens.
Also Das Problem mit SecItemDelete bedeutet, dass SecKeyGeneratePair jedes Mal, wenn Sie die App ausführen, einen neuen Schlüsselsatz generiert. Jeder dieser Schlüssel hat das gleiche Anwendungs-Tag, so dass Sie nicht erkennen können, welcher Schlüssel von Ihrem SecItemCopyMatching-Aufruf in - getPublicKeyBits:
zurückgegeben wird. Es stellt sich heraus, dass Sie bei der aktuellen Systemsoftware immer den ersten Schlüssel erhalten, so dass Sie immer dieselben öffentlichen Schlüssel erhalten.
Tags und Links objective-c iphone ios rsa ios5