やりたいことはiOSからSMBでWindowsファイルサーバにファイルを保存する。
フルスクラッチで実装したわけではなく、ライブラリを使用してみたその検証です。
tango
https://github.com/38leinaD/tango
・SMB1.0で接続
・3ウェイハンドシェイク認証に非対応なのでWindows側はXPまで
・C言語
ライセンスはBSD
認証周りに手を入れられるならば使える。
ビルド時にはARCを使わないようにする。
SMB4ios
http://sourceforge.net/projects/smb4ios/?source=navbar
・SMB1.0
・3ウェイハンドシェイクで認証。Windows7以降でも大丈夫
・接続先IPアドレスがXXX.XXX.XXX.XXXと全15文字を想定している。
→192.168.0.1とかだとリクエストヘッダが4バイト分ズレてしまい、認証でコケる。
→IPアドレスを0埋めするとサーバ見つからない。ヘッダ情報の接続先以降を4バイトオフセットしてあげると認証通った。
→ファイル一覧まで取得できることを確認。
→ファイル書き込み、読み込みは実装されていない。
・C言語
ライセンスは無いようなことがかかれているが使用してるntlmライブラリがLGPLなので結局LGPL。
ビルドはARCなしで、arm64off、ビットコードOFFにする。
結論
そのまま使えるライブラリは無い。
SMBプロトコルに自信がある人でなければやめたほうが良い。