accoのcocoaお勉強サイトです

2007年3月29日木曜日

WSSE認証

Web Service Security
WSSE認証はHTTPのX-WSSEヘッダを用いて認証用文字列を送信する認証手段です。WSSE認証用文字列にはユーザー名とパスワードが含まれます。このとき、パスワードはSHA1アルゴリズムによって暗号化されたダイジェストとして送信されるため、HTTP基本認証などに比べてセキュアな認証が可能です。

X-WSSE: UsernameToken Username="hatena", PasswordDigest="ZCNaK2jrXr4+zsCaYK/YLUxImZU=", Nonce="Uh95NQlviNpJQR1MmML+zq6pFxE=", Created="2005-01-18T03:20:15Z"
Username
ユーザー名。
Nonce
HTTPリクエスト毎に生成したセキュリティ・トークン*1
Created
Nonceが作成された日時をISO-8601表記で記述したもの
PasswordDigest
Nonce, Created, パスワードを文字列連結しSHA1アルゴリズムでダイジェスト化して生成された文字列を、Base64エンコードした文字列


はてなから引用

2007年3月27日火曜日

OpenSSL用フレームワーク

ここによると,SSCrypto がいいらしい.
Base64もできるみたい.
とりあえず,使ってみよう.

W3CのDate and Time Formats

よくある YYYY-MM-DDThh:mm:ssTZD です.TZDはタイムゾーンで+hh:mmとか-hh:mmとか.UTCだけZもOK.

///// create a W3C Date Time format string
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]initWithDateFormat:@"%Y-%m-%dT%H:%M:%S%z" allowNaturalLanguage:NO];
NSString *dateCreated = [dateFormatter stringFromDate:[NSCalendarDate calendarDate]];
[dateFormatter release];


こんなんでいいかしら.
W3Cのページ

2007年3月26日月曜日

Base64

wikipediaより
Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。MIMEによって規定されていて、7ビットのデータしか扱うことの出来ない電子メールにて広く利用されている。

現在のところcocoaにはデータや文字列をBase64化する機能が入っていないそうです.

そこで,これ.
NSDataにBase64のエンコード・デコード機能を追加する
あるいは,これ.
BaseSixtyFour

HTTPでファイルアップロード

NSURLRequest で multi part なデータを送信するには.
ここ
  1. NSDataにひたすらヘッダ情報とファイルのコンテンツをappendして,最後にsetHTTPBodyする.
  2. setHTTPBodyStream を使う.

2. の場合,NSInputStream を作るのだけど,MIMEヘッダとファイルの中身を一つのストリームにするにはどうしたらいいの...?

追記
3. ソケットにNSOutputStreamをセットして,NSURLConnectionとNSURLRequest を使わずにデータを自前で生成して流し込む
http://www2.blogger.com/img/gl.link.gif
このやり方が無難か

ところで,setHTTPBodyStreamを使って送信のプログレスを知る場合にはNSInputStreamのサブクラスを作って.....以下略

cocoacco開始

cocoa とxcode あと,いろいろなプログラミングのメモ
続くようにがんばります.