Cocoa/CocoaTouchからRemember The Milk APIを使ってみる(その1:MD5値の算出)

ちょっと手元でToDoアプリを作っていたのだけれど、思いついた全部をiPhone上で入力するのはとても無理ってことで、オンラインサービスと連携させようと思った。
で、Remember The Milk を使おうってことにした。

Remember The MilkはAPIが公開されているので、PCやiPhoneのアプリや他のWebサイトからも操作出来る。APIのラッパーも色々載ってるけど…CocoaObjective-Cがない。多分探せばあるだろうしCのをラップすればいいんだけど、ここは自力でやってみる。面白いから。で、作る端から忘れていくから備忘録としてBlogに書いていくことにする。

えーとまず、RTMは操作をリクエストするときに、アプリ固有のキーやなんかから算出したMD5値を署名として使う。ので、NSStringからMD5を算出し、それをNSStringで得る方法をググってみた。
http://stackoverflow.com/questions/2018550/how-do-i-create-an-md5-hash-of-a-string-in-cocoa
なんかエレガントじゃない気がするけどこれを使ってみる。ただし、16進表記のアルファベットは小文字しかRTMでは通らないようなので、小文字にする。

#import <CommonCrypto/CommonDigest.h>

-(NSString *)md5 {
	if (!self) return nil;
	const char *cStr = [self UTF8String];
	unsigned char result[CC_MD5_DIGEST_LENGTH];
	CC_MD5( cStr, strlen(cStr), result );
	return [NSString stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
			result[0], result[1],
			result[2], result[3],
			result[4], result[5],
			result[6], result[7],
			result[8], result[9],
			result[10], result[11],
			result[12], result[13],
			result[14], result[15]];
}

なんか…ねえ?もっと綺麗に書きたい。