Skip to content

wolfSSL SFTP API リファレンス

接続機能

wolfSSH_SFTP_accept()

用法

説明

クライアントからの接続要求を処理します

戻り値

WS_SFTP_COMPLETE - 成功

引数

ssh – WOLFSSHオブジェクトへのポインター

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_accept(WOLFSSH* ssh );

使用例

WOLFSSH* ssh;

//create new WOLFSSH structure
...

if (wolfSSH_SFTP_accept(ssh) != WS_SUCCESS) {
//handle error case
}

関連項目

wolfSSH_SFTP_free()

wolfSSH_new()

wolfSSH_SFTP_connect()

wolfSSH_SFTP_connect()

用法

説明

SFTPサーバーへの接続を開始します。

戻り値

WS_SFTP_COMPLETE - 成功

引数

ssh - – WOLFSSHオブジェクトへのポインター

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_connect(WOLFSSH* ssh );

使用例

WOLFSSH* ssh;

//after creating a new WOLFSSH structure

wolfSSH_SFTP_connect(ssh);

関連項目

wolfSSH_SFTP_accept()

wolfSSH_new()

wolfSSH_free()

wolfSSH_SFTP_negotiate()

用法

説明

本関数はクライアントからの接続要求かサーバーへの接続要求のいずれかを処理します。いずれを処理するかはwolfSSHオブジェクトにセットされているアクションに依存します。

戻り値

WS_SUCCESS - 成功

引数

ssh - – WOLFSSHオブジェクトへのポインター

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_negotiate(WOLFSSH* ssh)

使用例

WOLFSSH* ssh;

//create new WOLFSSH structure with side of connection
set
....

if (wolfSSH_SFTP_negotiate(ssh) != WS_SUCCESS) {
//handle error case
}

関連項目

wolfSSH_SFTP_free()

wolfSSH_new()

wolfSSH_SFTP_connect()

wolfSSH_SFTP_accept()

プロトコル関係

wolfSSH_SFTP_RealPath()

用法

説明

REALPATHパケットを相手に送信し、相手から取得したファイル名を返します。

戻り値

成功時にはWS_SFTPNAME構造体へのポインターを返します。エラー発生時にはNULLを返します。

引数

ssh – WOLFSSHオブジェクトへのポインター

dir - 実際のパスを取得するためのディレクトリ/ファイル名

#include <wolfssh/wolfsftp.h>
WS_SFTPNAME* wolfSSH_SFTP_RealPath(WOLFSSH* ssh , char* dir);

使用例

WOLFSSH* ssh ;

//set up ssh and do sftp connections
...

if (wolfSSH_SFTP_read( ssh ) != WS_SUCCESS) {
//handle error case
}

関連項目

wolfSSH_SFTP_accept()

wolfSSH_SFTP_connect()

wolfSSH_SFTP_Close()

用法

説明

相手にクローズパケットを送信します。

戻り値

WS_SUCCESS - 成功

引数

ssh – WOLFSSHオブジェクトへのポインター

handle - 閉じようとするハンドル

handleSz - ハンドルバッファーのサイズ

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_Close(WOLFSSH* ssh , byte* handle , word32 handleSz );

使用例

WOLFSSH* ssh;
byte handle[HANDLE_SIZE];
word32 handleSz = HANDLE_SIZE;

//set up ssh and do sftp connections
...

if (wolfSSH_SFTP_Close(ssh, handle, handleSz) != WS_SUCCESS) {
//handle error case
}

関連項目

wolfSSH_SFTP_accept()

wolfSSH_SFTP_connect()

wolfSSH_SFTP_Open()

用法

説明

Openパケットを相手に送信します。結果を受け取るバッファサイズのをhandleSzで指定し、相手から受け取ったハンドルをバッファに格納します。

openの理由として取り得る値は:

WOLFSSH_FXF_READ

WOLFSSH_FXF_WRITE

WOLFSSH_FXF_APPEND

WOLFSSH_FXF_CREAT

WOLFSSH_FXF_TRUNC

WOLFSSH_FXF_EXCL

戻り値

WS_SUCCESS - 成功

引数

ssh – WOLFSSHオブジェクトへのポインター

dir - 開くファイルの名前

reason - ファイルを開く理由

atr - ファイルの初期属性

handle - 結果として得られるハンドル

handleSz - ハンドル用バッファのサイズ

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_Open(WOLFSSH* ssh , char* dir , word32 reason, WS_SFTP_FILEATRB* atr , byte* handle , word32* handleSz);

使用例

WOLFSSH* ssh ;
char name[NAME_SIZE];
byte handle[HANDLE_SIZE];
word32 handleSz = HANDLE_SIZE;
WS_SFTP_FILEATRB atr;

//set up ssh and do sftp connections
...

if (wolfSSH_SFTP_Open( ssh , name , WOLFSSH_FXF_WRITE | WOLFSSH_FXF_APPEND | WOLFSSH_FXF_CREAT , &atr , handle , &handleSz ) != WS_SUCCESS) {
//handle error case
}

関連項目

wolfSSH_SFTP_accept()

wolfSSH_SFTP_connect()

wolfSSH_SFTP_SendReadPacket()

用法

説明

readパケットを相手に送信します。ハンドル用のバッファは直前のwolfSSH_SFTP_Openで得られたハンドルを格納していなければなりません。読みだすことができたデータはoutバッファに格納されます。

戻り値

成功時には読みだしたデータ数を返します。エラー発生時には、負の値を返します。

引数

ssh – WOLFSSHオブジェクトへのポインター

handle - 読みだそうとするハンドル

handleSz - ハンドルバッファのサイズ

ofst - 読み出しを開始するオフセット

out - 読み出した結果を格納するバッファ

outSz - バッファサイズ

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_SendReadPacket(WOLFSSH* ssh , byte* handle , word32 handleSz , word64 ofst , byte* out , word32 outSz );

使用例

WOLFSSH* ssh;
byte handle[HANDLE_SIZE];
word32 handleSz = HANDLE_SIZE;
byte out[OUT_SIZE];
word32 outSz = OUT_SIZE;
word32 ofst = 0;
int ret;

//set up ssh and do sftp connections
...
//get handle with wolfSSH_SFTP_Open()

if ((ret = wolfSSH_SFTP_SendReadPacket(ssh, handle, handleSz, ofst, out, outSz)) < 0) {
//handle error case
}
//ret holds the number of bytes placed into out buffer

関連項目

wolfSSH_SFTP_SendWritePacket()

wolfSSH_SFTP_Open()

wolfSSH_SFTP_SendWritePacket()

用法

説明

writeパケットを相手に送信します。ハンドル用のバッファは直前のwolfSSH_SFTP_Openで得られたハンドルを格納していなければなりません。

戻り値

成功時には書き込んだサイズを返します。エラー発生時には負の値を返します。

引数

ssh – WOLFSSHオブジェクトへのポインター

handle - 書き込もうとするハンドル

handleSz - ハンドルバッファのサイズ

ofst - 書き込みを開始するオフセット

out - 書き込むデータを保持するバッファ

outSz - バッファサイズ

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_SendWritePacket(WOLFSSH* ssh, byte* handle, word32 handleSz, word64 ofst, byte* out, word32 outSz);

使用例

WOLFSSH* ssh;
byte handle[HANDLE_SIZE];
word32 handleSz = HANDLE_SIZE;
byte out[OUT_SIZE];
word32 outSz = OUT_SIZE;
word32 ofst = 0;
int ret;

//set up ssh and do sftp connections
...
//get handle with wolfSSH_SFTP_Open()

if ((ret = wolfSSH_SFTP_SendWritePacket(ssh, handle, handleSz, ofst, out, outSz)) < 0) {
//handle error case
}
//ret holds the number of bytes written

関連項目

wolfSSH_SFTP_SendReadPacket()

wolfSSH_SFTP_Open()

wolfSSH_SFTP_STAT()

用法

説明

STATパケットを相手に送信します。ファイルあるいはディレクトリの属性を取得します。ファイルが存在しないかあるいは属性が存在しない場合は相手はエラーを返します。

戻り値

WS_SUCCESS - 成功

引数

ssh – WOLFSSHオブジェクトへのポインター

dir - NULLターミネートされたファイルあるいはディレクトリ名

atr - 属性値がこの構造体に返却されます

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_STAT(WOLFSSH* ssh , char* dir, WS_SFTP_FILEATRB* atr);

使用例

WOLFSSH* ssh;
byte name[NAME_SIZE];
int ret;
WS_SFTP_FILEATRB atr;

//set up ssh and do sftp connections
...

if ((ret = wolfSSH_SFTP_STAT(ssh, name, &atr)) < 0) {
//handle error case
}

関連項目

wolfSSH_SFTP_LSTAT()

wolfSSH_SFTP_connect()

wolfSSH_SFTP_LSTAT()

用法

説明

LSTATパケットを相手に送信します。ファイルあるいはディレクトリの属性値を取得します。STATパケットがシンボリックリンクをたどりませんがLSTATパケットはシンボリックリンクをたどって処理します。ファイルが存在しないかあるいは属性が存在しない場合は相手はエラーを返します。

戻り値

WS_SUCCESS - 成功

引数

ssh – WOLFSSHオブジェクトへのポインター

dir - NULLターミネートされたファイルあるいはディレクトリ名

atr - 属性値がこの構造体に返却されます

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_LSTAT(WOLFSSH* ssh, char* dir, WS_SFTP_FILEATRB* atr);

使用例

WOLFSSH* ssh;
byte name[NAME_SIZE];
int ret;
WS_SFTP_FILEATRB atr;

//set up ssh and do sftp connections
...

if ((ret = wolfSSH_SFTP_LSTAT(ssh, name, &atr)) < 0) {
//handle error case
}

関連項目

wolfSSH_SFTP_STAT()

wolfSSH_SFTP_connect()

wolfSSH_SFTPNAME_free()

用法

説明

単一のWS_SFTPNAMEノードを解放します。指定したノードがノードリストの途中のものであった場合には、リストは壊れます。

戻り値

なし

引数

name - 解放されるノード

#include <wolfssh/wolfsftp.h>
void wolfSSH_SFTPNAME_free(WS_SFTPNAME* name );

使用例

WOLFSSH* ssh;
WS_SFTPNAME* name;

//set up ssh and do sftp connections
...
name = wolfSSH_SFTP_RealPath(ssh, path);
if (name != NULL) {
wolfSSH_SFTPNAME_free(name);
}

関連項目

wolfSSH_SFTPNAME_list_free()

wolfSSH_SFTPNAME_list_free()

用法

説明

リスト中の全WS_SFTPNAMEノードを解放します。

戻り値

なし

引数

name - 解放するリストの先頭

#include <wolfssh/wolfsftp.h>
void wolfSSH_SFTPNAME_list_free(WS_SFTPNMAE* name );

使用例

WOLFSSH* ssh;
WS_SFTPNAME* name;

//set up ssh and do sftp connections
...

name = wolfSSH_SFTP_LS(ssh, path);
if (name != NULL) {
wolfSSH_SFTPNAME_list_free(name);
}

関連項目

wolfSSH_SFTPNAME_free()

Reget/Reput 機能

wolfSSH_SFTP_SaveOfst()

用法

説明 get あるいはputコマンドが中断された場合のオフセットを保存します。オフセットはwolfSSH_SFTP_GetOfstで復元できます。

戻り値

WS_SUCCESS - 成功

引数

ssh – WOLFSSHオブジェクトへのポインター

from - NULL終端されたソースパスを示す文字列

to - NULL終端されたデスティネーションパスを示す文字列

ofst - 記憶されるべきファイルのオフセット

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_SaveOfst(WOLFSSH* ssh , char* from , char*
to ,
word64 ofst );

使用例

WOLFSSH* ssh;
char from[NAME_SZ];
char to[NAME_SZ];
word64 ofst;

//set up ssh and do sftp connections
...

if (wolfSSH_SFTP_SaveOfst(ssh, from, to, ofst) != WS_SUCCESS) {
//handle error case
}

関連項目

wolfSSH_SFTP_GetOfst()

wolfSSH_SFTP_Interrupt()

wolfSSH_SFTP_GetOfst()

用法

説明

get あるいはputコマンドが中断された場合のオフセットを取得します。

戻り値

成功時にはオフセット値を返します。オフセットが保存されていない場合には0が返されます。

引数

ssh – WOLFSSHオブジェクトへのポインター

from - NULL終端されたソースパスを示す文字列

to - NULL終端されたデスティネーションパスを示す文字列

#include <wolfssh/wolfsftp.h>
word64 wolfSSH_SFTP_GetOfst(WOLFSSH* ssh, char* from, char* to);

使用例

WOLFSSH* ssh;
char from[NAME_SZ];
char to[NAME_SZ];
word64 ofst;

//set up ssh and do sftp connections
...

ofst = wolfSSH_SFTP_GetOfst(ssh, from, to);
//start reading/writing from ofst

関連項目

wolfSSH_SFTP_SaveOfst()

wolfSSH_SFTP_Interrup()

wolfSSH_SFTP_ClearOfst()

用法

説明

保存されている全オフセット値をクリアします。

戻り値

WS_SUCCESS - 成功

引数

ssh – WOLFSSHオブジェクトへのポインター

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_ClearOfst(WOLFSSH* ssh);

使用例

関連項目

wolfSSH_SFTP_SaveOfst()

wolfSSH_SFTP_GetOfst()

wolfSSH_SFTP_Interrupt()

用法

説明

中断フラグをセットし、get/putコマンドを停止します。

戻り値

なし

引数

ssh – WOLFSSHオブジェクトへのポインター

#include <wolfssh/wolfsftp.h>
void wolfSSH_SFTP_Interrupt(WOLFSSH* ssh);

使用例

WOLFSSH* ssh;

//set up ssh and do sftp connections
...

if (wolfSSH_SFTP_ClearOfst(ssh) != WS_SUCCESS) {
//handle error
}
WOLFSSH* ssh;
char from[NAME_SZ];
char to[NAME_SZ];
word64 ofst;

//set up ssh and do sftp connections
...

wolfSSH_SFTP_Interrupt(ssh);
wolfSSH_SFTP_SaveOfst(ssh, from, to, ofst);

関連項目

wolfSSH_SFTP_SaveOfst()

wolfSSH_SFTP_GetOfst()

コマンド機能

wolfSSH_SFTP_Remove()

用法

説明

"remove"パケットをチャネルを通じて送信します。削除するファイル名"f"は相手に渡されます。

戻り値

WS_SUCCESS - 成功

引数

ssh – WOLFSSHオブジェクトへのポインター
f - 削除したいファイル名

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_Remove(WOLFSSH* ssh , char* f );

使用例

WOLFSSH* ssh;
int ret;
char* name[NAME_SZ];

//set up ssh and do sftp connections
...

ret = wolfSSH_SFTP_Remove(ssh, name);

関連項目

wolfSSH_SFTP_accept()

wolfSSH_SFTP_connect()

wolfSSH_SFTP_MKDIR()

用法

説明

チャネルを通して“mkdir”パケットを送信します。相手に作成するディレクトリ名が"dir"として渡されます。現時点では、属性は使用されず、既定の属性が使用されます。

戻り値

WS_SUCCESS - 成功

引数

ssh – WOLFSSHオブジェクトへのポインター

dir - NULL終端された作成するディレクトリ名を示す文字列

atr - ディレクトリ作成に使う属性値

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_MKDIR(WOLFSSH* ssh, char* dir, WS_SFTP_FILEATRB* atr);

使用例

WOLFSSH* ssh;
int ret;
char* dir[DIR_SZ];

//set up ssh and do sftp connections
...

ret = wolfSSH_SFTP_MKDIR(ssh, dir, DIR_SZ);

関連項目

wolfSSH_SFTP_accept()

wolfSSH_SFTP_connect()

wolfSSH_SFTP_RMDIR()

用法

説明

“rmdir”パケットをチャネルを通じて送信します。削除するディレクトリ名は"dir"として相手に送られます。

戻り値

WS_SUCCESS - 成功

引数

ssh – WOLFSSHオブジェクトへのポインター

dir - NULL終端された削除するディレクトリ名を示す文字列

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_RMDIR(WOLFSSH* ssh , char* dir );

使用例

WOLFSSH* ssh;
int ret;
char* dir[DIR_SZ];

//set up ssh and do sftp connections
...

ret = wolfSSH_SFTP_RMDIR(ssh, dir);

関連項目

wolfSSH_SFTP_accept()

wolfSSH_SFTP_connect()

wolfSSH_SFTP_Rename()

用法

説明

“rename”パケットをチャネルを通じて送信します。相手側のファイル名を“old” から “nw”に変更しようとします。

戻り値

WS_SUCCESS - 成功

引数

ssh – WOLFSSHオブジェクトへのポインター

old - 旧ファイル名

nw - 新ファイル名

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_Rename(WOLFSSH* ssh , const char* old , const char* nw);

使用例

WOLFSSH* ssh;
int ret;
char* old[NAME_SZ];
char* nw[NAME_SZ]; //new file name

//set up ssh and do sftp connections
...

ret = wolfSSH_SFTP_Rename(ssh, old, nw);

関連項目

wolfSSH_SFTP_accept()

wolfSSH_SFTP_connect()

wolfSSH_SFTP_LS()

用法

説明

LS操作(全ファイルとディレクトリのリストを取得する)を現在のワーキングディレクトリで実行します。 この関数はREALPATH, OPENDIR, READDIR と CLOSE操作を実行する高水準関数です。

戻り値

成功時にはWS_SFTPNAME構造体のリストを返します。失敗時にはNULLを返します。

引数

ssh – WOLFSSHオブジェクトへのポインター

dir - リストを作成するディレクトリ名

#include <wolfssh/wolfsftp.h>
WS_SFTPNAME* wolfSSH_SFTP_LS(WOLFSSH* ssh , char* dir );

使用例

WOLFSSH* ssh;
int ret;
char* dir[DIR_SZ];
WS_SFTPNAME* name;
WS_SFTPNAME* tmp;

//set up ssh and do sftp connections
...

name = wolfSSH_SFTP_LS(ssh, dir);
tmp = name;
while (tmp != NULL) {
printf("%s\n", tmp->fName);
tmp = tmp->next;
}
wolfSSH_SFTPNAME_list_free(name);

関連項目

wolfSSH_SFTP_accept()

wolfSSH_SFTP_connect()

wolfSSH_SFTPNAME_list_free()

wolfSSH_SFTP_Get()

用法

説明

相手からファイルを取得するget操作を実行し、ローカルディレクトリに配置します。この関数は高水準関数であり、LSTAT, OPEN, READ, とCLOSEを実行します。関数の実行を中断したい場合には、wolfSSH_SFTP_Interruptを呼び出すことができます。

戻り値

WS_SUCCESS - 成功 その他の値はすべてエラーとみなすべきです。

引数

ssh – WOLFSSHオブジェクトへのポインター

from - 取得するファイルの名前

to - 配置する際のファイルの名前

resume - 操作を再開するか(1は再開する、0はしない)

statusCb - ステータスを取得するコールバック関数

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_Get(WOLFSSH* ssh , char* from , char* to , byte resume , WS_STATUS_CB* statusCb );

使用例

static void myStatusCb(WOLFSSH* sshIn, long bytes, char* name)
{
char buf[80];
WSNPRINTF(buf, sizeof(buf), "Processed %8ld\t bytes
\r", bytes);
WFPUTS(buf, fout);
(void)name;
(void)sshIn;
}
...
WOLFSSH* ssh;
char* from[NAME_SZ];
char* to[NAME_SZ];

//set up ssh and do sftp connections
...

if (wolfSSH_SFTP_Get( ssh , from , to , 0 , & myStatusCb ) != WS_SUCCESS) {
//handle error case
}

関連項目

wolfSSH_SFTP_accept()

wolfSSH_SFTP_connect()

wolfSSH_SFTP_Put()

用法

説明

ローカルのファイルを相手のディレクトリに配置するput操作を実行します。この関数は高水準関数であり、OPEN, WRITE, と CLOSE操作を実行します。操作を中断する場合にはwolfSSH_SFTP_Interruptを呼び出してください。

戻り値

WS_SUCCESS - 成功

その他の値はすべてエラーとみなすべきです。

引数

ssh – WOLFSSHオブジェクトへのポインター

from - 配置したい対象ファイルの名前

to - 配置先でのファイルの名前

resume - 操作を再開するかのフラグ(1は再開、0は再開しない)

statusCb - ステータスを取得するコールバック関数

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_Put(WOLFSSH* ssh, char* from, char* to, byte resume, WS_STATUS_CB* statusCb);

使用例

static void myStatusCb(WOLFSSH* sshIn, long bytes, char* name)
{
char buf[80];
WSNPRINTF(buf, sizeof(buf), "Processed %8ld\t bytes
\r", bytes);
WFPUTS(buf, fout);
(void)name;
(void)sshIn;
}
...

WOLFSSH* ssh;
char* from[NAME_SZ];
char* to[NAME_SZ];

//set up ssh and do sftp connections
...

if (wolfSSH_SFTP_Put(ssh, from, to, 0, &myStatusCb) !=
WS_SUCCESS) {
//handle error case
}

関連項目

wolfSSH_SFTP_accept()

wolfSSH_SFTP_connect()

SFTPサーバー機能

wolfSSH_SFTP_read()

用法

説明

メインのSFTPサーバー機能を提供する関数です。到着するパケットを処理し、I/O バッファからデータを読み出しSFTPパケットのタイプに応じて内部の関数を呼び出します。

戻り値

WS_SUCCESS - 成功

引数

ssh – WOLFSSHオブジェクトへのポインター

#include <wolfssh/wolfsftp.h>
int wolfSSH_SFTP_read(WOLFSSH* ssh );

使用例

WOLFSSH* ssh;

//set up ssh and do sftp connections
...
if (wolfSSH_SFTP_read(ssh) != WS_SUCCESS) {
//handle error case
}

関連項目

wolfSSH_SFTP_accept()

wolfSSH_SFTP_connect()