티스토리 뷰


출처

https://stackoverflow.com/questions/16748993/ios-seckeyref-to-nsdata
https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_as_data?language=objc





iOS 10 이상에서의 Security.framework 가 
SecKeyRef -> NSData *, NSData * -> SecKeyRef 로 변경하는 메소드를 제공한다.



SecKeyRef -> NSData * 로 변경하기 


CFErrorRef cfError = NULL;

    NSData *keyData = (__bridge_transfer NSData *)SecKeyCopyExternalRepresentation(publicKeyRef, &cfError);


if (!keyData) {

    NSError *keyError = (__bridge_transfer NSError *)cfError;

    if (error && keyError) {

        *error = keyError;

    }

    return NO;

}






NSData * -> SecKeyRef 로 변경하기


NSDictionary *options = @{

        (id)kSecAttrKeyType : (id)kSecAttrKeyTypeRSA,

        (id)kSecAttrKeyClass : (id)kSecAttrKeyClassPublic,

        (id)kSecAttrKeySizeInBits : @2048,

};

CFErrorRef cfError = NULL;

SecKeyRef key = SecKeyCreateWithData((__bridge CFDataRef)decData,

    (__bridge CFDictionaryRef)options, &cfError);

if (!key) {

    NSError *keyError = (__bridge_transfer NSError *)cfError;

    if (error && keyError) {

        *error = keyError;

    }

    return nil;

}

































공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함