iOS SecKeyRef (Cheia publică) îl trimite pe server

Acum am o problemă cu cheia mea publică, am folosit SecKeyGeneratePair pentru a genera public și privat. Acum trebuie să-mi trimit cheia publică la server. Am folosit metoda de mai jos pentru a converti SecKeyRef în NSData, întotdeauna primesc aceeași cheie publică. Totuși, l-am convertit în formatul base64 și l-am trimis pe server. Dar nu funcționează deloc și serverul (Java) începe să arunce erori. Aici este codul meu iOS:

- (NSData *)getPublicKeyBits {
    OSStatus sanityCheck = noErr;
    NSData * publicKeyBits = nil;

    NSMutableDictionary * queryPublicKey = [[NSMutableDictionary alloc] init];

   //Set the public key query dictionary.
    [queryPublicKey setObject:(id)kSecClassKey forKey:(id)kSecClass];
    [queryPublicKey setObject:publicTag forKey:(id)kSecAttrApplicationTag];
    [queryPublicKey setObject:(id)kSecAttrKeyTypeRSA forKey:(id)kSecAttrKeyType];
    [queryPublicKey setObject:[NSNumber numberWithBool:YES] forKey:(id)kSecReturnData];

   //Get the key bits.
    sanityCheck = SecItemCopyMatching((CFDictionaryRef)queryPublicKey, (CFTypeRef *)&publicKeyBits);

    if (sanityCheck != noErr)
    {
        publicKeyBits = nil;
    }

    [queryPublicKey release];

    return publicKeyBits;
}

Poate cineva să mă ajute să convertesc SecKeyRef la NSString sau NSData.

Mulțumesc anticipat!!!

-Murali Krishnan

9
Este posibil să o demarcați ca pe un duplicat? Răspunsurile de aici sunt perfecte pentru utilizarea cazului pentru utilizarea perechilor de chei RSA generate cu iOS cu un server Java, dar întrebarea legată nu este.
adăugat autor mikeho, sursa

1 răspunsuri

Cred că cheile generate de iOS lipsesc din informațiile de antet pe care le așteaptă restul lumii (API-urile Java în cazul tău). Prin urmare, pentru ca Java să funcționeze cu o cheie generată de API-urile de securitate iOS, mai întâi trebuie să adăugați această informație antet la cheia binară.

În schimb, pentru ca API-urile iOS Sec * să funcționeze cu o cheie generată de openssl sau ssh-keygen (de exemplu), trebuie mai întâi să eliminați această informație din antet din cheia binară.

În mod specific, iOS nu-i place ASID OID, și restul lumii face.

Vedeți acest articol pentru a exporta o cheie generată de iOS pentru a fi utilizată de o aplicație Java - ar trebui să te duci:

http://blog.wingsofhermes.org/?p=42

9
adăugat
Vezi de asemenea blogul lui Chris Luke
adăugat autor bobobobo, sursa
Frumos, acest răspuns ajută exact la cazul de utilizare cu care aveam probleme.
adăugat autor mikeho, sursa
iOS dezvoltatori, România — Moldova
iOS dezvoltatori, România — Moldova
21 participanți

Parteneri: ciupacabra.com, @php_ro, @js_ro, @node_ro, @seo_ro Android: @ro_android