iOS SecKeyRef (klucz publiczny) wysyła go na serwer [duplikat]

To pytanie ma już tutaj odpowiedź:

Wyodrębnianie klucza publicznego z pary kluczy w breloczku 2 odpowiedzi

Teraz mam problem z moim kluczem publicznym, użyłem SecKeyGeneratePair do wygenerowania publicznego i prywatnego. Teraz muszę wysłać mój klucz publiczny na serwer. Użyłem poniższej metody, aby przekonwertować SecKeyRef na NSData, zawsze otrzymuję ten sam klucz publiczny. Przekształciłem go jednak w format base64 i wysłałem go na serwer. Ale to nie działa w ogóle i serwer (Java) zaczyna rzucać błędy. Oto mój kod 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;
}

Czy ktoś może mi pomóc przekonwertować SecKeyRef na NSString lub NSData.

Z góry dziękuję!!!

-Murali Krishnan

questionAnswers(1)

yourAnswerToTheQuestion