Seckey à partir de la clé publique de chaîne à partir du serveur en Swift
Je veux crypter les données à l'aide de RSA , j'ai essayé de générer la clé dans mon code et ça fonctionne , Mais ce dont j'ai réellement besoin est d'obtenir la clé publique comme une chaîne de caractères à partir du serveur et de l'utiliser ensuite comme Seckey donc je peux l'utiliser pour chiffrer les données à l'aide de RSA,
J'ai essayé ce code:
//KeyString is the string of the key from server
let KeyData = (keyString as NSString).dataUsingEncoding(NSUTF8StringEncoding) as NSData!
var cert : Unmanaged<SecCertificateRef>!;
var policy : Unmanaged<SecPolicy>!;
cert = SecCertificateCreateWithData(kCFAllocatorDefault, KeyData);
policy = SecPolicyCreateBasicX509();
var status : OSStatus = noErr
var trust: SecTrust?
var certArray : [Unmanaged<SecCertificateRef>!] = [cert];
var certArrayPointer = UnsafeMutablePointer<UnsafePointer<Void>>(certArray)
status = SecTrustCreateWithCertificates(cert, policy, trust);
let publicKey: SecKeyRef = SecTrustCopyPublicKey(trust!).takeUnretainedValue()
Je ne pouvais pas exécuter ce code, car SecTrustCreateWithCertificates Méthode attend certificat de anyObject! Je ne Sais pas comment résoudre ce problème,Et si la résolution de ce me permettra de tirer le SecKey.
J'ai obtenu le code ci-dessus à partir de cette réponse objective-c
Donc si quelqu'un peut m'aider à obtenir le bon code pour résoudre ce problème , je serai très reconnaissant 🙂
OriginalL'auteur jamil | 2015-03-02
Vous devez vous connecter pour publier un commentaire.
Pour mac:
Où pubKey est une représentation de chaîne de votre clé publique.
Si vous ne connaissez pas votre clé publique, vous pouvez déduire de votre clé privée avec la commande suivante:
Où le serveur.la clé est le fichier contenant
-----BEGIN RSA PRIVATE KEY-----
la première ligne.
Pour iOS:
C'est un peu plus compliquer.
Vous avez besoin d'un
der
fichier. C'est une représentation binaire de votre certificat.Si vous avez besoin de convertir un certificat existant, vous pouvez le faire avec la commande suivante:
La
.crt
ou.pem
fichier contient-----BEGIN CERTIFICATE-----
la première ligne.Mettre le
der
fichier dans votre bundle et à faire:Yatta ! La clé contient maintenant une
SecKey
représentation de votre clé publique. Heureux L'Épinglage.pubKey
rendrait la réponse beaucoup plus utile.J'ai édité la réponse et ajouté tous les processus nécessaires pour que le SecKey; je ne suis pas sûr de ce que je peux dire à propos de ce qu'est une clé publique sans en expliquer l'acte en entier/RSA chose...
Merci pour l'ajout de l'information, il aide vraiment la réponse.
commandes : Convertir .la cer .pem
openssl x509 -in NAME.cer -inform der -out NAME.pem
Convertir .pem .deropenssl x509 -outform der -in NAME.pem -out NAME.der
Est-ce à dire que nous devons utiliser der fichier uniquement, ne peut pas utiliser de clé pem dans iOS?
OriginalL'auteur Antzi
Voici comment j'ai procédé:
Cela fonctionne, mais vous devez vous assurer que ce que vous transmettez à
SecCertificateCreateWithData()
est un certificat codé DER, et pas seulement une codé DER clé. Vous avez besoin d'un certificat signé par votre serveur de clé privée pour obtenir la clé publique.OriginalL'auteur hrunting
Je N'ai utilisé cette Alamofire:
OriginalL'auteur tinkl