« 広瀬隆さんから、DAYS JAPANの衝撃報告 | トップページ | 広瀬隆さんから「2日連チャン大集会の緊急呼びかけ!」 »

objective-cでBASE64 Encode(OSX 10.7以降みたい)

ネットを調べるとosxでbase64エンコードする際にはOpenSSLのライブラリを使うとか。 ところが10.8ではどうやらOpenSSLは入っていない?

ということでどうするかというと、アップルのサイトhttp://developer.apple.com/library/mac/#documentation/Security/Conceptual/SecTransformPG/SecurityTransformsBasics/SecurityTransformsBasics.htmlを参考にしながら、次のような感じで。(objective-cに慣れていない人のコードだから、と、言い訳をしておこう。)

NSString *Base64EncodeData(NSData * data) { CFErrorRef error = NULL; @try { /* Create the Base64 encoder object. */ SecTransformRef encoder = SecEncodeTransformCreate(kSecBase64Encoding, &error); @try { if ( NULL != error) { return nil; } SecTransformSetAttribute(encoder, kSecTransformInputAttributeName, (__bridge CFDataRef)data, &error); if ( NULL != error) { return nil; } NSData * encoded = (__bridge_transfer NSData *)SecTransformExecute(encoder, &error); if ( NULL != error) { return nil; } return [[NSString alloc] initWithData:encoded encoding:NSUTF8StringEncoding]; } @finally { if( NULL != encoder) { CFRelease(encoder); } } } @finally { if( NULL != error) { CFRelease(error); } } }

|

« 広瀬隆さんから、DAYS JAPANの衝撃報告 | トップページ | 広瀬隆さんから「2日連チャン大集会の緊急呼びかけ!」 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/48778/56605111

この記事へのトラックバック一覧です: objective-cでBASE64 Encode(OSX 10.7以降みたい):

« 広瀬隆さんから、DAYS JAPANの衝撃報告 | トップページ | 広瀬隆さんから「2日連チャン大集会の緊急呼びかけ!」 »