JunkBox_Lib 1.10.1
|
Diffie-Hellman用 ライブラリ More...
Go to the source code of this file.
Macros | |
#define | SSL_ACCEPT_COUNT_MAX 10 |
Functions | |
int | gen_CRYPT_SharedKey (int keyex, Buffer spki, Buffer *shdkey, void *ptr) |
int | udp_send_crypt_Buffer_sockaddr_in (int sock, Buffer *data, struct sockaddr_in *sv, Buffer *key, EVP_CIPHER *cipher) |
int | udp_recv_crypt_Buffer_sockaddr_in (int sock, Buffer *data, struct sockaddr_in *sv, Buffer *key, EVP_CIPHER *cipher) |
int | udp_send_crypt_Buffer (int sock, Buffer *data, struct addrinfo *sv, Buffer *key, EVP_CIPHER *cipher) |
int | udp_recv_crypt_Buffer (int sock, Buffer *data, struct addrinfo *sv, Buffer *key, EVP_CIPHER *cipher) |
int | tcp_send_crypt_Buffer (int sock, Buffer *data, Buffer *key, EVP_CIPHER *cipher) |
int | tcp_recv_crypt_Buffer (int sock, Buffer *data, Buffer *key, EVP_CIPHER *cipher) |
Buffer | get_plain_Buffer (Buffer data, Buffer *key, EVP_CIPHER *cipher) |
Buffer | get_crypt_Buffer (Buffer data, Buffer *key, EVP_CIPHER *cipher) |
int | tcp_send_crypt_mesg (int sock, char *mesg, Buffer *key, EVP_CIPHER *cipher) |
int | tcp_send_crypt_sBuffer (int sock, Buffer *mesg, Buffer *key, EVP_CIPHER *cipher) |
Buffer | get_plain_message (char *mesg, Buffer *key, EVP_CIPHER *cipher) |
Buffer | get_plain_sBuffer (Buffer mesg, Buffer *key, EVP_CIPHER *cipher) |
Buffer | get_crypt_message (char *mesg, Buffer *key, EVP_CIPHER *cipher) |
Buffer | get_crypt_sBuffer (Buffer mesg, Buffer *key, EVP_CIPHER *cipher) |
int | check_server_spki (Buffer ipaddr, Buffer spki, char *filename) |
int | save_spki_with_ipaddr (Buffer ipa, Buffer pki, FILE *fp) |
Buffer | read_spki_with_ipaddr (Buffer ipa, FILE *fp) |
EVP_CIPHER * | init_EVPAPI_Buffer (int type) |
Buffer | decode_EVPAPI_Buffer (Buffer buf, Buffer shdkey, EVP_CIPHER *cipher) |
Buffer | encode_EVPAPI_Buffer (Buffer buf, Buffer shdkey, EVP_CIPHER *cipher) |
void | free_EVP_CIPHER (EVP_CIPHER **p_cipher) |
void | ssl_init () |
SSL_CTX * | ssl_client_setup (char *ca) |
SSL * | ssl_client_socket (int sock, SSL_CTX *ssl_ctx, int mode) |
SSL_CTX * | ssl_server_setup (char *crt_fn, char *key_fn, char *chn_fn) |
int | ssl_add_chain_file (SSL_CTX *ssl_ctx, char *file) |
int | ssl_read_fullchain_cert_file (SSL_CTX *ssl_ctx, char *file) |
SSL * | ssl_server_socket (int sock, SSL_CTX *ssl_ctx) |
void | ssl_close (SSL *ssl) |
tList * | ssl_get_cert_info (SSL *ssl) |
int | ssl_recv (SSL *ssl, char *rmsg, int size) |
int | ssl_send (SSL *ssl, char *smsg, int size) |
int | ssl_recv_wait (int sock, SSL *ssl, char *mesg, int sz, int tm) |
int | ssl_send_mesgln (SSL *ssl, char *mesg) |
int | ssl_recv_mstream (int sock, SSL *ssl, char *mesg, int sz, mstream *sb, int tm) |
int | ssl_recv_Buffer (SSL *ssl, Buffer *str) |
int | ssl_send_Buffer (SSL *ssl, Buffer *str) |
int | ssl_recv_Buffer_wait (int sock, SSL *ssl, Buffer *str, int tm) |
int | ssl_send_sBuffer (SSL *ssl, Buffer *str) |
int | ssl_send_sBufferln (SSL *ssl, Buffer *str) |
int | ssl_recv_mstream_Buffer (int sock, SSL *ssl, Buffer *mesg, mstream *sb, int tm) |
int | ssl_recv_lines_Buffer (int sock, SSL *ssl, Buffer *mesg, int tm) |
int | ssl_tcp_recv (int sock, SSL *ssl, char *rmsg, int size) |
int | ssl_tcp_send (int sock, SSL *ssl, char *smsg, int size) |
int | ssl_tcp_recv_wait (int sock, SSL *ssl, char *mesg, int sz, int tm) |
int | ssl_tcp_send_mesgln (int sock, SSL *ssl, char *mesg) |
int | ssl_tcp_recv_mstream (int sock, SSL *ssl, char *mesg, int sz, mstream *sb, int tm) |
int | ssl_tcp_recv_Buffer (int sock, SSL *ssl, Buffer *str) |
int | ssl_tcp_send_Buffer (int sock, SSL *ssl, Buffer *str) |
int | ssl_tcp_recv_Buffer_wait (int sock, SSL *ssl, Buffer *str, int tm) |
int | ssl_tcp_recv_Buffer_tosize (int sock, SSL *ssl, Buffer *str, Buffer *mod, int size) |
int | ssl_tcp_recv_Buffer_tosize_wait (int sock, SSL *ssl, Buffer *str, Buffer *mod, int size, int tm) |
int | ssl_tcp_send_sBuffer (int sock, SSL *ssl, Buffer *str) |
int | ssl_tcp_send_sBufferln (int sock, SSL *ssl, Buffer *str) |
int | ssl_tcp_recv_mstream_Buffer (int sock, SSL *ssl, Buffer *mesg, mstream *sb, int tm) |
int | ssl_tcp_recv_lines_Buffer (int sock, SSL *ssl, Buffer *mesg, int tm) |
SSL暗号用ライブラリ
Definition in file ssl_tool.c.
#define SSL_ACCEPT_COUNT_MAX 10 |
Definition at line 1027 of file ssl_tool.c.
Referenced by ssl_server_socket().
int check_server_spki(char* filename, Buffer ipaddr, Buffer spki)
サーバから得た SPKIを,以前保存しておいた SPKIと比較して,サーバの正当性を検査する.
ファイル中にSPKIが無い場合は,新規のサーバとして,IPアドレスとSPKIを保存する. クライアント側でサーバの認識に使用する.
filename | 鍵が保存されているファイル |
ipaddr | サーバのIPアドレス(文字列型)例:192.168.1.1 |
spki | サーバのSPKI(DER). |
TRUE | サーバのSPKIは以前保存したSPKIに一致した.または新規のサーバ. |
FALSE | サーバのSPKIは以前保存したSPKIに一致しない. |
Definition at line 524 of file ssl_tool.c.
References bincmp_Buffer, buf, FALSE, file_chmod_open(), free_Buffer(), init_Buffer(), read_spki_with_ipaddr(), save_spki_with_ipaddr(), and TRUE.
Referenced by start_CRYPT_transfer().
Buffer decode_EVPAPI_Buffer(Buffer buf, Buffer shdkey, EVP_CIPHER* cipher)
init_EVPAPI_Buffer() によって指定された方法により 暗号文bufを復号する.
buf | 復号する暗号データ |
shdkey | 共有キー |
cipher | 暗号方式 |
Definition at line 670 of file ssl_tool.c.
References buf, Buffer::buf, init_Buffer(), make_Buffer(), and Buffer::vldsz.
Referenced by get_plain_Buffer(), get_plain_message(), get_plain_sBuffer(), tcp_recv_crypt_Buffer(), udp_recv_crypt_Buffer(), and udp_recv_crypt_Buffer_sockaddr_in().
Buffer encode_EVPAPI_Buffer(Buffer buf, Buffer shdkey, EVP_CIPHER* cipher)
init_EVPAPI_Buffer() によって指定された方法により buf を暗号化する.
鍵は CRYPT_SharedKey を使う. 暗号化は SSL_ENC_BLCKSZ Byte毎に,暗号化される(ブロック暗号)
buf | 暗号化するデータ |
shdkey | 共有キー |
cipher | 暗号方式 |
Definition at line 722 of file ssl_tool.c.
References buf, Buffer::buf, init_Buffer(), len, make_Buffer(), and Buffer::vldsz.
Referenced by get_crypt_Buffer(), get_crypt_message(), get_crypt_sBuffer(), tcp_send_crypt_Buffer(), tcp_send_crypt_mesg(), tcp_send_crypt_sBuffer(), udp_send_crypt_Buffer(), and udp_send_crypt_Buffer_sockaddr_in().
void free_EVP_CIPHER | ( | EVP_CIPHER ** | p_cipher | ) |
void free_EVP_CIPHER(EVP_CIPHER** p_cipher)
Definition at line 773 of file ssl_tool.c.
Referenced by check_auth().
int gen_CRYPT_SharedKey(int keyex, Buffer spki, Buffer* shdkey, void* ptr)
鍵交換アルゴリズム keyex 下で,共有鍵を計算する.
自分のSPKIと秘密鍵は計算済みでなければならない.
keyex
SSL_SH: Diffie-Hellman の場合は,DHの秘密鍵が,DH_generate_key()(または gen_DHspki(), gnen_DHspki_fs(), get_DHspki_ff()でも良い)により計算(またはロード)され,void* ptr に格納されていなければならない.
ptr = (void*)dhkey
RSA: RSAの場合は............
keyex | 鍵交換アルゴリズム.現在サポートしているのは SSL_DH のみ. |
spki | 相手の SPKI |
shdkey | 生成された共有鍵 |
ptr | 付加情報(SSL_DHの場合は DH* ptr) |
TRUE | 成功 |
FALSE | 失敗 |
Definition at line 91 of file ssl_tool.c.
References Buffer::buf, dup_Buffer(), FALSE, and TRUE.
Referenced by command_KEYEX(), and start_CRYPT_transfer().
Definition at line 264 of file ssl_tool.c.
References buf, encode_EVPAPI_Buffer(), and init_Buffer().
Buffer get_crypt_message(char* mesg, Buffer* key, EVP_CIPHER* cipher)
暗号化関数.暗号化に加えて Base64符号化も行なう.
CRYPT_Algorism が 0 の場合は変換を行なわない.
mesg | 変換するメッセージ |
key | 暗号鍵へのポインタ. |
cipher | 暗号方式 |
Definition at line 455 of file ssl_tool.c.
References buf, encode_base64_Buffer(), encode_EVPAPI_Buffer(), free_Buffer(), make_Buffer_bystr, and Buffer::vldsz.
Buffer get_crypt_sBuffer(Buffer mesg, Buffer* key, EVP_CIPHER* cipher)
復号化関数.暗号化に加えて Base64符号化も行なう.
CRYPT_Algorism が 0 の場合は変換を行なわない.
mesg | 変換するメッセージ |
key | 暗号鍵へのポインタ. |
cipher | 暗号方式 |
Definition at line 486 of file ssl_tool.c.
References buf, dup_Buffer(), encode_base64_Buffer(), encode_EVPAPI_Buffer(), free_Buffer(), and Buffer::vldsz.
Definition at line 254 of file ssl_tool.c.
References buf, decode_EVPAPI_Buffer(), and init_Buffer().
Buffer get_plain_message(char* mesg, Buffer* key, EVP_CIPHER* cipher)
復号化関数.復号の前に Base64のコードを行なう.
CRYPT_Algorism が 0 の場合は変換を行なわない.
mesg | 変換するメッセージ |
key | 暗号鍵へのポインタ. |
cipher | 暗号方式 |
Definition at line 391 of file ssl_tool.c.
References buf, decode_base64_Buffer(), decode_EVPAPI_Buffer(), free_Buffer(), make_Buffer_bystr, and Buffer::vldsz.
Buffer get_plain_sBuffer(Buffer mesg, Buffer* key, EVP_CIPHER* cipher)
復号化関数.復号の前に Base64のコードを行なう.
CRYPT_Algorism が 0 の場合は変換を行なわない.
mesg | 変換するメッセージ |
key | 暗号鍵へのポインタ. |
cipher | 暗号方式 |
Definition at line 423 of file ssl_tool.c.
References buf, decode_base64_Buffer(), decode_EVPAPI_Buffer(), dup_Buffer(), free_Buffer(), and Buffer::vldsz.
Referenced by command_KEYEX(), recv_mesg_until_end(), and send_command_recv_ans().
EVP_CIPHER * init_EVPAPI_Buffer | ( | int | type | ) |
EVP_CIPHER* init_EVPAPI_Buffer(int type)
共通鍵暗号のアルゴリズムを指定する.
type | 暗号化オブジェクト(暗号化手法) 現在サポートしているのは SSL_AES128CBC, SSL_3DES3CBC のみ |
OpenSSLの暗号化オブジェクトの種類(一部).
Definition at line 645 of file ssl_tool.c.
Referenced by command_CRYPT(), and start_CRYPT_transfer().
Buffer read_spki_with_ipaddr(Buffer ipa, FILE* fp)
IPアドレス ipaを持つサーバの公開鍵情報(X.509の SubjectPublicKeyInfo)をファイルから読み込む.
ipa | 検索するIPアドレス |
fp | 読み込むファイル記述子 |
Definition at line 595 of file ssl_tool.c.
References Buffer::buf, free_Buffer(), init_Buffer(), JBXL_FIO_IPADDRESS, JBXL_FIO_ORIGINAL, JBXL_FIO_SPKI, JBXL_FIO_STRING, read_tagged_Buffer(), and strcmp_Buffer.
Referenced by check_server_spki().
int save_spki_with_ipaddr(Buffer ipa, Buffer pki, FILE* fp)
サーバの公開鍵情報(X.509の SubjectPublicKeyInfo)を識別子ipa と共にファイルに保存する.
識別子には通常は IPアドレスが使用される.
識別子,鍵情報の順で保存される.既にファイルが存在する場合はデータはファイルの最後に追加される.
識別子にIPアドレスを使用することにより,クライアント側でのサーバ認証に使用する.
ipa | 識別子.通常はサーバのIPアドレス. |
pki | 保存する鍵情報(DER). |
fp | 保存先のファイル記述子 |
TRUE | 成功. |
FALSE | 失敗. |
Definition at line 569 of file ssl_tool.c.
References FALSE, JBXL_FIO_IPADDRESS, JBXL_FIO_ORIGINAL, JBXL_FIO_SPKI, JBXL_FIO_STRING, save_tagged_Buffer(), and TRUE.
Referenced by check_server_spki().
int ssl_add_chain_file | ( | SSL_CTX * | ssl_ctx, |
char * | file ) |
int ssl_add_chain_file(SSL_CTX* ssl_ctx, char* file)
証明書チェーンのファイルからすべての中間証明書を読み込んで証明書ストアに追加する.
ssl_ctx | SSL_CTX へのポインタ |
file | 証明書チェーンのファイル名(PEM形式) |
Definition at line 965 of file ssl_tool.c.
Referenced by ssl_server_setup().
SSL_CTX * ssl_client_setup | ( | char * | ca | ) |
SSL_CTX* ssl_client_setup(char* ca)
SSL/TLS のクライントソケット作成の前処理.
認証局証明書等を設定し,SSLコンテキストを返す.
SSL/TLSのクライントソケットを作成する前に,必ず実行しなければならない.
ca | 認証局の自己証明書 PEM形式.クライアント認証用.NULL可. |
NULL以外 | SSLコンテキストへのポインタ. |
NULL | エラー. |
Definition at line 826 of file ssl_tool.c.
SSL * ssl_client_socket | ( | int | sock, |
SSL_CTX * | ssl_ctx, | ||
int | mode ) |
SSL* ssl_client_socket(int sock, SSL_CTX* ssl_ctx, int mode)
SSL/TLS のストリームを作成し,ソケットと関連付ける.
これにより相手(SSLをしゃべるサーバ)とSSL/TLS通信が可能になる.
sock | SSL通信を行うソケット. |
ssl_ctx | SSLコンテキストへのポインタ. |
mode | サーバ証明書のチェックを行うか? |
mode | ON: 行う.認証エラーの場合は NULL を返す. |
mode | OFF: ここでは行わない.ca が NULLの場合は強制的に OFFになる. |
NULL以外 | SSL用ストリームへのポインタ. |
NULL | エラー. |
Definition at line 861 of file ssl_tool.c.
References ON, and ssl_close().
void ssl_close | ( | SSL * | ssl | ) |
void ssl_close(SSL* ssl)
SSLストリームをクローズし,使用した変数を開放する.
ssl | クローズする SSL用ストリーム |
Definition at line 1083 of file ssl_tool.c.
Referenced by ssl_client_socket(), and ssl_server_socket().
tList * ssl_get_cert_info | ( | SSL * | ssl | ) |
tList* ssl_get_cert_info(SSL* ssl)
SSLストリームから証明書の情報を得る.これに先立って 接続が connect していないといけない.
ssl | SSL用ストリーム |
Definition at line 1104 of file ssl_tool.c.
References add_tList_node_str, buf, and LBUF.
void ssl_init | ( | ) |
SSL/TLS 関数
SSL/TLS の初期化を行う.これに先立って,乱数の初期化も行っておいた方が良い.
Definition at line 806 of file ssl_tool.c.
int ssl_read_fullchain_cert_file | ( | SSL_CTX * | ssl_ctx, |
char * | file ) |
int ssl_read_fullchain_cert_file(SSL_CTX* ssl_ctx, char* file)
フルチェーンのファイル(サーバ証明書と中間証明書を内包)から全ての証明書を読み込んで証明書ストアに保存する.
ssl_ctx | SSL_CTX へのポインタ |
file | フルチェーンの証明書のファイル名(PEM形式) |
Definition at line 995 of file ssl_tool.c.
Referenced by ssl_server_setup().
int ssl_recv | ( | SSL * | ssl, |
char * | rmsg, | ||
int | size ) |
int ssl_recv(SSL* ssl, char* rmsg, int size)
SSL_read()をラッピングした関数.SSL経由でデータを受信する.
ssl | SSL用ストリーム |
rmsg | 受信用データバッファ |
size | データバッファのサイズ |
1以上 | 受信したバイト数. |
0 | おそらくは相手側がセッションをクローズした. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_RECV_ERROR | 受信エラー. |
Definition at line 1171 of file ssl_tool.c.
References JBXL_ARGS_ERROR, and JBXL_SSL_RECV_ERROR.
Referenced by ssl_recv_wait().
int ssl_recv_Buffer | ( | SSL * | ssl, |
Buffer * | str ) |
int ssl_recv_Buffer(SSL* ssl, Buffer* str)
SSL経由でデータを受信する.バッファリングなし.
ssl | SSL用ストリーム |
str | 受信用データバッファ.予めメモリを確保しておく. |
1以上 | 受信したバイト数. |
0 | おそらくは相手側がセッションをクローズした.正常切断 |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_RECV_ERROR | 受信エラー. |
Definition at line 1376 of file ssl_tool.c.
References Buffer::buf, Buffer::bufsz, JBXL_ARGS_ERROR, JBXL_NORMAL, JBXL_SSL_RECV_ERROR, Buffer::state, and Buffer::vldsz.
int ssl_recv_Buffer_wait | ( | int | sock, |
SSL * | ssl, | ||
Buffer * | str, | ||
int | tm ) |
int ssl_recv_Buffer_wait(int sock, SSL* ssl, Buffer* str, int tm)
SSL経由でデータを受信する.
タイムアウトの設定が可能.タイムアウトに 0を指定した場合, recv_wait() 関数を呼び出した時点で読み込み可能データがなければすぐにタイムアウト となる (JBXL_NET_RECV_TIMEOUTが返る).
sock | ソケット記述子 |
ssl | SSL用ストリーム |
str | 受信用データバッファ.予めメモリを確保しておく. |
tm | タイムアウト時間.秒単位. |
1以上 | 受信したバイト数. |
0 | おそらくは相手側がセッションをクローズした. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_RECV_ERROR | 受信エラー. |
JBXL_NET_RECV_TIMEOUT | タイムアウト. |
Definition at line 1440 of file ssl_tool.c.
References Buffer::buf, Buffer::bufsz, JBXL_ARGS_ERROR, ssl_recv_wait(), and Buffer::vldsz.
Referenced by ssl_recv_lines_Buffer(), and ssl_recv_mstream_Buffer().
int ssl_recv_lines_Buffer | ( | int | sock, |
SSL * | ssl, | ||
Buffer * | mesg, | ||
int | tm ) |
int ssl_recv_lines_Buffer(int sock, SSL* ssl, Buffer* mesg, int tm)
SSL経由でメッセージを受信する.複数行分(
で終わることが保証される)のデータを 取り出さすことのできる簡易バッファ機能付き.ここからさらに一行分のデータを取り出すには,get_line() などを使用する.
ネットワークより直接一行づつ取り出すには,tcp_recv_mstream_Buffer() を使うほうが良い.
sock | ソケット記述子 |
ssl | SSL用ストリーム |
*mesg | 受信用データバッファ.予めメモリを確保しておく. |
tm | タイムアウト時間.秒単位. |
1以上 | 受信されたバイト数. |
0 | おそらくは相手側がセッションをクローズした. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_RECV_ERROR | 受信エラー. |
JBXL_ARGS_ERROR | buf がNULL |
JBXL_NET_RECV_TIMEOUT | タイムアウト. |
Definition at line 1595 of file ssl_tool.c.
References buf, Buffer::buf, cat_Buffer(), CHAR_LF, clear_Buffer(), free_Buffer(), JBXL_ARGS_ERROR, LBUF, make_Buffer(), ssl_recv_Buffer_wait(), and Buffer::vldsz.
int ssl_recv_mstream | ( | int | sock, |
SSL * | ssl, | ||
char * | mesg, | ||
int | sz, | ||
mstream * | sb, | ||
int | tm ) |
int ssl_recv_mstream(int sock, SSL* ssl, char* mesg, int sz, mstream* sb, int tm)
SSL/TSL経由でメッセージを受信する.
受信メッセージはメッセージストリーム バッファに一旦バッファリングされ,この関数により一行ずつ読み出される. mesgには最大 sz-1文字が格納される.もし,バッファ中の一行のデータが sz-1より大きい場合は,はみ出した部分は捨てられる.
mesgに格納される時,行中の改行コードは削除され,行末には必ず '\0' が入る. タイムアウトの設定が可能でタイムアウトに 0を指定した場合, 呼び出した時点で 読み込み可能データがなければすぐにタイムアウトとなる (JBXL_NET_RECV_TIMEOUT が返る). メッセージストリームのバッファ部が確保されていない場合は,最初に呼び出された時点で確保される.
一旦この関数を使用して,受信データをバッファリングしたら,ソケットをクローズするまで, 読み取りには必ず同じストリームを使用してこの関数を呼び出さばけ ればならない.そうで無い場合は受信データの整合性は保証されない.
sock | ソケット記述子 |
ssl | SSL用ストリーム |
mesg | 受信用データバッファ.予め十分なメモリ領域を確保しておく. |
sz | データバッファのサイズ |
sb | リングバッファ型のストリームバッファ.バッファ部が確保さえていなければ,自動的に確保される. |
tm | タイムアウト時間.秒単位. |
1以上 | mesgに格納したメッセージのバイト数. |
0 | おそらくは相手側がセッションをクローズした. |
JBXL_SSL_RECV_ERROR | 受信エラー. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_MALLOC_ERROR | メッセージバッファ部が無いので確保しようとしたが,確保に失敗した. |
JBXL_NET_BUF_ERROR | メッセージバッファにデータは存在するはずだが,原因不明の理由により獲得に失敗した. |
JBXL_NET_BUFSZ_ERROR | メッセージバッファ中のデータの長さが,mesgの長さより大きい.はみ出した部分は捨てられた. |
JBXL_NET_RECV_TIMEOUT | タイムアウト. |
Definition at line 1324 of file ssl_tool.c.
References get_mstream(), JBXL_ARGS_ERROR, JBXL_MALLOC_ERROR, JBXL_NET_BUF_ERROR, JBXL_NET_BUFSZ_ERROR, make_mstream, put_mstream(), RECVBUFSZ, and ssl_recv_wait().
int ssl_recv_mstream_Buffer(int sock, SSL* ssl, Buffer* mesg, mstream* sb, int tm)
SSL経由でメッセージを受信する.
受信メッセージはメッセージストリームに一旦バッファリングされ,この関数により一行ずつ読み出される.
mesgに格納される時,行中の改行コードは削除され,行末には必ず '\0' が入る. タイムアウトの設定が可能でタイムアウトに 0を指定した場合, 呼び出した時点で 読み込み可能データがなければすぐにタイムアウトとなる (JBXL_NET_RECV_TIMEOUT が返る). メッセージストリームのバッファ部が確保されていない場合は,最初に呼び出された時点で 確保される.
一旦この関数を使用して,受信データをバッファリングしたら,ソケットをクローズするまで, 読み取りには必ず同じストリームを使用してこの関数を呼び出さばければならない. そうで無い場合は受信データの整合性は保証されない.
sock | ソケット記述子 |
ssl | SSL用ストリーム |
mesg | 受信用データバッファ.バッファ部を確保する必要はない. |
sb | メッセージバッファ(リング型のストリームバッファ).バッファ部が確保さえていなければ,自動的に確保される. |
tm | タイムアウト時間.秒単位. |
1以上 | mesgに格納したメッセージのバイト数. |
0 | おそらくは相手側がセッションをクローズした. |
JBXL_SSL_RECV_ERROR | 受信エラー. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_MALLOC_ERROR | メッセージバッファ部が無いので確保しようとしたが,確保に失敗した. |
JBXL_NET_BUF_ERROR | メッセージバッファにデータは存在するはずだが,原因不明の理由により獲得に失敗した. |
JBXL_NET_RECV_TIMEOUT | タイムアウト. |
Definition at line 1539 of file ssl_tool.c.
References Buffer::buf, clear_Buffer(), copy_s2Buffer, free_Buffer(), get_mstream(), JBXL_ARGS_ERROR, JBXL_MALLOC_ERROR, JBXL_NET_BUF_ERROR, LBUF, make_Buffer(), make_mstream, put_mstream(), RECVBUFSZ, ssl_recv_Buffer_wait(), and Buffer::vldsz.
int ssl_recv_wait | ( | int | sock, |
SSL * | ssl, | ||
char * | mesg, | ||
int | sz, | ||
int | tm ) |
int ssl_recv_wait(int sock, SSL* ssl, char* mesg, int sz, int tm)
SSL経由でデータを受信する.
タイムアウトの設定が可能.タイムアウトに 0を指定した場合, recv_wait() 関数を呼び出した時点で読み込み可能データがなければすぐにタイムアウト となる (JBXL_NET_RECV_TIMEOUTが返る).
sock | ソケット記述子 |
ssl | SSL用ストリーム |
mesg | 受信用データバッファ |
sz | データバッファのサイズ |
tm | タイムアウト時間.秒単位. |
1以上 | 受信したバイト数. |
0 | おそらくは相手側がセッションをクローズした. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_RECV_ERROR | 受信エラー. |
JBXL_NET_RECV_TIMEOUT | タイムアウト. |
Definition at line 1239 of file ssl_tool.c.
References JBXL_ARGS_ERROR, JBXL_NET_RECV_TIMEOUT, recv_wait(), and ssl_recv().
Referenced by ssl_recv_Buffer_wait(), and ssl_recv_mstream().
int ssl_send | ( | SSL * | ssl, |
char * | smsg, | ||
int | size ) |
int ssl_send(SSL* ssl, char* smsg, int size)
SSL_write()をラッピングした関数.SSL経由でデータを送る.
データ(smsg)のサイズ sizeに0以下を指定した場合は、smsgは文字列であると見なして,サイズを自動的に計算する.
ssl | SSL用ストリーム |
smsg | 送信するデータ |
size | 送信するデータ(smsg)のサイズ.サイズが 0以下の場合は smsgは文字列であるとみなす. |
0以上 | 送信バイト数. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_SEND_ERROR | 送信エラー. |
Definition at line 1202 of file ssl_tool.c.
References JBXL_ARGS_ERROR, and JBXL_SSL_SEND_ERROR.
Referenced by ssl_send_mesgln().
int ssl_send_Buffer | ( | SSL * | ssl, |
Buffer * | str ) |
int ssl_send_Buffer(SSL* ssl, Buffer* str)
SSL経由でデータを送信する.
ssl | SSL用ストリーム |
str | 送信用データバッファ. |
0以上 | 送信バイト数. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_SEND_ERROR | 送信失敗. |
Definition at line 1406 of file ssl_tool.c.
References Buffer::buf, JBXL_ARGS_ERROR, JBXL_SSL_SEND_ERROR, and Buffer::vldsz.
int ssl_send_mesgln | ( | SSL * | ssl, |
char * | mesg ) |
int ssl_send_mesgln(SSL* ssl, char* mesg)
SSLメッセージ(文字列)に改行(\r\n)を付け加えて送信する.
ssl | SSL用ストリーム |
mesg | 送信用メッセージ |
0以上 | 送信バイト数(改行を含む). |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_SEND_ERROR | 送信失敗. |
Definition at line 1271 of file ssl_tool.c.
References buf, JBXL_ARGS_ERROR, JBXL_MALLOC_ERROR, and ssl_send().
int ssl_send_sBuffer | ( | SSL * | ssl, |
Buffer * | str ) |
int ssl_send_sBuffer(SSL* ssl, Buffer* str)
SSL経由で文字列データを送信する.
ssl | SSL用ストリーム |
str | 送信用メッセージバッファ. |
0以上 | 送信バイト数. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_SEND_ERROR | 送信失敗. |
Definition at line 1467 of file ssl_tool.c.
References Buffer::buf, JBXL_ARGS_ERROR, and JBXL_SSL_SEND_ERROR.
int ssl_send_sBufferln | ( | SSL * | ssl, |
Buffer * | str ) |
int ssl_send_sBufferln(SSL* ssl, Buffer* str)
SSLメッセージ(文字列)に改行(\r\n)を付け加えて送信する.
ssl | SSL用ストリーム |
str | 送信用メッセージバッファ. |
0以上 | 送信バイト数(改行を含む). |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_SEND_ERROR | 送信失敗. |
Definition at line 1492 of file ssl_tool.c.
References buf, Buffer::buf, cat_s2Buffer, dup_Buffer(), free_Buffer(), JBXL_ARGS_ERROR, and JBXL_SSL_SEND_ERROR.
SSL_CTX * ssl_server_setup | ( | char * | crt_fn, |
char * | key_fn, | ||
char * | chn_fn ) |
SSL_CTX* ssl_server_setup(char* crt_fn, char* key_fn, char* chn_fn)
SSL/TLS のサーバソケット作成の前処理.
サーバ証明書等を設定し,SSLコンテキストを返す.
SSL/TLS のサーバソケットを作成する前に,必ず実行しなければならない.
中間証明書が必要な場合,crt_fn にフルチェーンのファイルを指定しても良い. その場合は,chn_fn に NULL を指定する.
crt_fn | サーバ証明書のファイル名(PEM形式) |
key_fn | サーバの秘密鍵のファイル名(PEM形式) |
chn_fn | 証明書チェーンのファイル名(PEM形式) |
Definition at line 912 of file ssl_tool.c.
References ssl_add_chain_file(), and ssl_read_fullchain_cert_file().
SSL * ssl_server_socket | ( | int | sock, |
SSL_CTX * | ssl_ctx ) |
SSL* ssl_server_socket(int sock, SSL_CTX* ssl_ctx)
SSL/TLS のサーバ用TCPストリームを作成し,ソケットと関連付ける.
これに先立って TCPの接続を確立とサーバ証明書を設定して置かなければならない.
sock | SSL通信を行うソケット.sock は accept() の戻り値を使用する. |
ssl_ctx | SSLコンテキストへのポインタ. |
Definition at line 1042 of file ssl_tool.c.
References SSL_ACCEPT_COUNT_MAX, and ssl_close().
int ssl_tcp_recv | ( | int | sock, |
SSL * | ssl, | ||
char * | rmsg, | ||
int | size ) |
int ssl_tcp_recv(int sock, SSL* ssl, char* rmsg, int size)
sslが NULLでなければSSLで受信を行い,NULLならば通常のソケットで受信を行う.
sock | ソケット記述子 |
ssl | SSL用ストリーム |
rmsg | 受信用データバッファ |
size | データバッファのサイズ |
1以上 | 受信したバイト数. |
0 | おそらくは相手側がセッションをクローズした. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_RECV_ERROR | 受信エラー. |
JBXL_NET_RECV_TIMEOUT | タイムアウト. |
Definition at line 1643 of file ssl_tool.c.
References JBXL_ARGS_ERROR, and JBXL_SSL_RECV_ERROR.
Referenced by ssl_tcp_recv_wait().
int ssl_tcp_recv_Buffer | ( | int | sock, |
SSL * | ssl, | ||
Buffer * | str ) |
int ssl_tcp_recv_Buffer(int sock, SSL* ssl, Buffer* str)
SSL or TCP経由でデータを受信する.バッファリングなし.
sock | ソケット記述子 |
ssl | SSL用ストリーム |
str | 受信用データバッファ.予めメモリを確保しておく. |
1以上 | 受信バイト数. |
0 | 正常切断 |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_RECV_ERROR | 受信失敗. |
Definition at line 1849 of file ssl_tool.c.
References Buffer::buf, Buffer::bufsz, JBXL_ARGS_ERROR, JBXL_NORMAL, JBXL_SSL_RECV_ERROR, Buffer::state, and Buffer::vldsz.
Referenced by ssl_tcp_recv_Buffer_tosize().
int ssl_tcp_recv_Buffer_tosize(int sock, SSL* ssl, Buffer* str, Buffer* mod, int size)
SSL or TCP経由でデータを 現データと合わせて size バイトまで受信する.
sock | ソケット記述子 |
ssl | SSL用ストリーム |
str | 受信用データバッファ.予めメモリを確保しておく. |
mod | size 以上受信した場合はここに保存する.予めメモリを確保しておく.NULL でも OK |
size | 目標バイト数. |
1以上 | 受信バイト数. |
0 | 正常切断 |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_RECV_ERROR | 受信失敗. |
Definition at line 1951 of file ssl_tool.c.
References buf, Buffer::buf, cat_Buffer(), copy_b2Buffer(), FALSE, free_Buffer(), JBXL_ARGS_ERROR, make_Buffer(), RECVBUFSZ, ssl_tcp_recv_Buffer(), TRUE, and Buffer::vldsz.
int ssl_tcp_recv_Buffer_tosize_wait | ( | int | sock, |
SSL * | ssl, | ||
Buffer * | str, | ||
Buffer * | mod, | ||
int | size, | ||
int | tm ) |
int ssl_tcp_recv_Buffer_tosize_wait(int sock, SSL* ssl, Buffer* str, Buffer* mod, int size, int tm)
SSL or TCP経由でデータを 現データと合わせて size バイトまで受信する.
タイムアウトの設定が可能.タイムアウトに 0を指定した場合, recv_wait() 関数を呼び出した時点で読み込み可能データがなければすぐにタイムアウト となる (JBXL_NET_RECV_TIMEOUTが返る).
sock | ソケット記述子 |
ssl | SSL用ストリーム |
str | 受信用データバッファ.予めメモリを確保しておく. |
mod | size 以上受信した場合はここに保存する.予めメモリを確保しておく.NULL でも OK |
size | 目標バイト数. |
tm | タイムアウト時間.秒単位. |
1以上 | 受信したバイト数. |
0 | おそらくは相手側がセッションをクローズした. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_RECV_ERROR | 受信エラー. |
JBXL_NET_RECV_TIMEOUT | タイムアウト. |
Definition at line 2006 of file ssl_tool.c.
References buf, Buffer::buf, cat_Buffer(), copy_b2Buffer(), FALSE, free_Buffer(), JBXL_ARGS_ERROR, make_Buffer(), RECVBUFSZ, ssl_tcp_recv_Buffer_wait(), TRUE, and Buffer::vldsz.
int ssl_tcp_recv_Buffer_wait | ( | int | sock, |
SSL * | ssl, | ||
Buffer * | str, | ||
int | tm ) |
int ssl_tcp_recv_Buffer_wait(int sock, SSL* ssl, Buffer* str, int tm)
SSL or TCP経由でデータを受信する.
タイムアウトの設定が可能.タイムアウトに 0を指定した場合, recv_wait() 関数を呼び出した時点で読み込み可能データがなければすぐにタイムアウト となる (JBXL_NET_RECV_TIMEOUTが返る).
sock | ソケット記述子 |
ssl | SSL用ストリーム |
str | 受信用データバッファ.予めメモリを確保しておく. |
tm | タイムアウト時間.秒単位. |
1以上 | 受信したバイト数. |
0 | おそらくは相手側がセッションをクローズした. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_RECV_ERROR | 受信エラー. |
JBXL_NET_RECV_TIMEOUT | タイムアウト. |
Definition at line 1920 of file ssl_tool.c.
References Buffer::buf, Buffer::bufsz, JBXL_ARGS_ERROR, ssl_tcp_recv_wait(), and Buffer::vldsz.
Referenced by ssl_tcp_recv_Buffer_tosize_wait(), ssl_tcp_recv_lines_Buffer(), and ssl_tcp_recv_mstream_Buffer().
int ssl_tcp_recv_lines_Buffer | ( | int | sock, |
SSL * | ssl, | ||
Buffer * | mesg, | ||
int | tm ) |
int ssl_tcp_recv_lines_Buffer(int sock, SSL* ssl, Buffer* mesg, int tm)
SSL or TCP経由でメッセージを受信する.複数行分(
で終わることが保証される)のデータを 取り出さすことのできる簡易バッファ機能付き.ここからさらに一行分のデータを取り出すには, get_line() などを使用する.
また,ネットワークより直接一行づつ取り出すには,tcp_recv_mstream_Buffer() を使うほうが良い.
sock | ソケット記述子 |
ssl | SSL用ストリーム |
*mesg | 受信用データバッファ.予めメモリを確保しておく. |
tm | タイムアウト時間.秒単位. |
1以上 | 受信されたバイト数. |
0 | おそらくは相手側がセッションをクローズした. |
JBXL_SSL_RECV_ERROR | 受信エラー. |
JBXL_ARGS_ERROR | buf がNULL |
JBXL_NET_RECV_TIMEOUT | タイムアウト. |
Definition at line 2182 of file ssl_tool.c.
References buf, Buffer::buf, cat_Buffer(), CHAR_LF, clear_Buffer(), free_Buffer(), JBXL_ARGS_ERROR, LBUF, make_Buffer(), ssl_tcp_recv_Buffer_wait(), and Buffer::vldsz.
int ssl_tcp_recv_mstream | ( | int | sock, |
SSL * | ssl, | ||
char * | mesg, | ||
int | sz, | ||
mstream * | sb, | ||
int | tm ) |
int ssl_tcp_recv_mstream(int sock, SSL* ssl, char* mesg, int sz, mstream* sb, int tm)
SSL/TSL/TCP経由でメッセージを受信する.
受信メッセージはメッセージストリーム バッファに一旦バッファリングされ,この関数により一行ずつ読み出される. mesgには最大 sz-1文字が格納される.もし,バッファ中の一行のデータが sz-1より大きい場合は, はみ出した部分は捨てられる.
mesgに格納される時,行中の改行コードは削除され,行末には必ず '\0' が入る. タイムアウトの設定が可能でタイムアウトに 0を指定した場合, 呼び出した時点で 読み込み可能データがなければすぐにタイムアウトとなる (JBXL_NET_RECV_TIMEOUT が返る). メッセージストリームのバッファ部が確保されていない場合は,最初に呼び出された時点で確保される.
一旦この関数を使用して,受信データをバッファリングしたら,ソケットをクローズするまで, 読み取りには必ず同じストリームを使用してこの関数を呼び出さばければならない. そうで無い場合は受信データの整合性は保証されない.
sock | ソケット記述子 |
ssl | SSL用ストリーム |
mesg | 受信用データバッファ.予め十分なメモリ領域を確保しておく. |
sz | データバッファのサイズ |
sb | リングバッファ型のストリームバッファ.バッファ部が確保さえていなければ,自動的に確保される. |
tm | タイムアウト時間.秒単位. |
1以上 | mesgに格納したメッセージのバイト数. |
0 | おそらくは相手側がセッションをクローズした. |
JBXL_SSL_RECV_ERROR | 受信エラー. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_MALLOC_ERROR | メッセージバッファ部が無いので確保しようとしたが,確保に失敗した. |
JBXL_NET_BUF_ERROR | メッセージバッファにデータは存在するはずだが,原因不明の理由により獲得に失敗した. |
JBXL_NET_BUFSZ_ERROR | メッセージバッファ中のデータの長さが,mesgの長さより大きい.はみ出した部分は捨てられた. |
JBXL_NET_RECV_TIMEOUT | タイムアウト. |
Definition at line 1801 of file ssl_tool.c.
References get_mstream(), JBXL_ARGS_ERROR, JBXL_MALLOC_ERROR, JBXL_NET_BUF_ERROR, JBXL_NET_BUFSZ_ERROR, make_mstream, put_mstream(), RECVBUFSZ, and ssl_tcp_recv_wait().
int ssl_tcp_recv_mstream_Buffer(int sock, SSL* ssl, Buffer* mesg, mstream* sb, int tm)
SSL or TCP経由でメッセージを受信する.受信メッセージはメッセージストリーム に一旦バッファリングされ,この関数により一行ずつ読み出される.
mesgに格納される時,行中の改行コードは削除され,行末には必ず '\0' が入る. タイムアウトの設定が可能でタイムアウトに 0を指定した場合, 呼び出した時点で 読み込み可能データがなければすぐにタイムアウトとなる (JBXL_NET_RECV_TIMEOUT が返る). メッセージストリームのバッファ部が確保されていない場合は,最初に呼び出された時点で確保される.
一旦この関数を使用して,受信データをバッファリングしたら,ソケットを クローズするまで,読み取りには必ず同じストリームを使用してこの関数を呼び出さばけ ればならない.そうで無い場合は受信データの整合性は保証されない.
sock | ソケット記述子 |
ssl | SSL用ストリーム |
mesg | 受信用データバッファ.バッファ部を確保する必要はない. |
sb | メッセージバッファ(リング型のストリームバッファ).バッファ部が確保さえていなければ,自動的に確保される. |
tm | タイムアウト時間.秒単位. |
1以上 | mesgに格納したメッセージのバイト数. |
0 | おそらくは相手側がセッションをクローズした. |
JBXL_SSL_RECV_ERROR | 受信エラー. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_MALLOC_ERROR | メッセージバッファ部が無いので確保しようとしたが,確保に失敗した. |
JBXL_NET_BUF_ERROR | メッセージバッファにデータは存在するはずだが,原因不明の理由により獲得に失敗した. |
JBXL_NET_RECV_TIMEOUT | タイムアウト. |
Definition at line 2128 of file ssl_tool.c.
References Buffer::buf, clear_Buffer(), copy_s2Buffer, free_Buffer(), get_mstream(), JBXL_ARGS_ERROR, JBXL_MALLOC_ERROR, JBXL_NET_BUF_ERROR, LBUF, make_Buffer(), make_mstream, put_mstream(), RECVBUFSZ, ssl_tcp_recv_Buffer_wait(), and Buffer::vldsz.
int ssl_tcp_recv_wait | ( | int | sock, |
SSL * | ssl, | ||
char * | mesg, | ||
int | sz, | ||
int | tm ) |
int ssl_tcp_recv_wait(int sock, SSL* ssl, char* mesg, int sz, int tm)
sslが NULLでなければ,SSL経由でデータを受信する.sslがNULLなら通常のソケットで受信する.
バイナリ受信も可.タイムアウトの設定が可能.タイムアウトに 0を指定した場合, recv_wait()関数を呼び出した時点で読み込み可能データがなければすぐにタイムアウト となる (JBXL_NET_RECV_TIMEOUTが返る).
sock | ソケット記述子 |
ssl | SSL用ストリーム |
mesg | 受信用データバッファ |
sz | データバッファのサイズ |
tm | タイムアウト時間.秒単位. |
1以上 | 受信したバイト数. |
0 | おそらくは相手側がセッションをクローズした. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_RECV_ERROR | 受信エラー. |
JBXL_NET_RECV_TIMEOUT | タイムアウト. |
Definition at line 1714 of file ssl_tool.c.
References JBXL_ARGS_ERROR, JBXL_NET_RECV_TIMEOUT, recv_wait(), and ssl_tcp_recv().
Referenced by ssl_tcp_recv_Buffer_wait(), and ssl_tcp_recv_mstream().
int ssl_tcp_send | ( | int | sock, |
SSL * | ssl, | ||
char * | smsg, | ||
int | size ) |
int ssl_tcp_send(int sock, SSL* ssl, char* smsg, int size)
sslが NULLでなければSSLで送信を行い,NULLならば通常のソケットで送信を行う.
データ(smsg)のサイズ sizeに0以下を指定した場合は、smsgは文字列であると見なして,サイズを自動的に計算する.
sock | ソケット記述子 |
ssl | SSL用ストリーム |
smsg | 送信するデータ |
size | 送信するデータ(smsg)のサイズ.サイズが 0以下の場合は smsgは文字列であるとみなす. |
0以上 | 送信バイト数. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_SEND_ERROR | 失敗した. |
Definition at line 1676 of file ssl_tool.c.
References JBXL_ARGS_ERROR, and JBXL_SSL_SEND_ERROR.
Referenced by ssl_tcp_send_mesgln().
int ssl_tcp_send_Buffer | ( | int | sock, |
SSL * | ssl, | ||
Buffer * | str ) |
int ssl_tcp_send_Buffer(int sock, SSL* ssl, Buffer* str)
SSL or TCP経由でデータを送信する.
sock | ソケット記述子 |
ssl | SSL用ストリーム |
str | 送信用データバッファ. |
0以上 | 送信バイト数. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_SEND_ERROR | 送信失敗. |
Definition at line 1881 of file ssl_tool.c.
References Buffer::buf, JBXL_ARGS_ERROR, JBXL_SSL_SEND_ERROR, and Buffer::vldsz.
int ssl_tcp_send_mesgln | ( | int | sock, |
SSL * | ssl, | ||
char * | mesg ) |
int ssl_tcp_send_mesgln(int sock, SSL* ssl, char* mesg)
SSL or TCPメッセージ(文字列)に改行(\r\n)を付け加えて送信する.
sock | ソケット記述子 |
ssl | SSL用ストリーム |
mesg | 送信用メッセージ |
0以上 | 送信バイト数(改行を含む). |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_SEND_ERROR | 送信失敗. |
JBXL_MALLOC_ERROR | メモリエラー. |
Definition at line 1747 of file ssl_tool.c.
References buf, JBXL_ARGS_ERROR, JBXL_MALLOC_ERROR, and ssl_tcp_send().
int ssl_tcp_send_sBuffer | ( | int | sock, |
SSL * | ssl, | ||
Buffer * | str ) |
int ssl_tcp_send_sBuffer(int sock, SSL* ssl, Buffer* str)
SSL or TCP経由で文字列データを送信する.
sock | ソケット記述子 |
ssl | SSL用ストリーム |
str | 送信用データバッファ. |
0以上 | 送信バイト数. |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_SEND_ERROR | 送信失敗. |
Definition at line 2052 of file ssl_tool.c.
References Buffer::buf, JBXL_ARGS_ERROR, and JBXL_SSL_SEND_ERROR.
int ssl_tcp_send_sBufferln | ( | int | sock, |
SSL * | ssl, | ||
Buffer * | str ) |
int ssl_tcp_send_sBufferln(int sock, SSL* ssl, Buffer* str)
SSL or TCPメッセージ(文字列)に改行(\r\n)を付け加えて送信する.
sock | ソケット記述子 |
ssl | SSL用ストリーム |
str | 送信用メッセージバッファ. |
0以上 | 送信バイト数(含む改行). |
JBXL_ARGS_ERROR | 引数に NULLのデータがある. |
JBXL_SSL_SEND_ERROR | 送信失敗. |
Definition at line 2079 of file ssl_tool.c.
References buf, Buffer::buf, cat_s2Buffer, dup_Buffer(), free_Buffer(), JBXL_ARGS_ERROR, and JBXL_SSL_SEND_ERROR.
Definition at line 228 of file ssl_tool.c.
References buf, copy_Buffer(), decode_EVPAPI_Buffer(), free_Buffer(), make_Buffer(), RECVBUFSZ, tcp_recv_Buffer(), and Buffer::vldsz.
Definition at line 208 of file ssl_tool.c.
References buf, encode_EVPAPI_Buffer(), free_Buffer(), JBXL_ARGS_ERROR, and tcp_send_Buffer().
int tcp_send_crypt_mesg | ( | int | sock, |
char * | mesg, | ||
Buffer * | key, | ||
EVP_CIPHER * | cipher ) |
int tcp_send_crypt_mesg(int sock, char* mesg, Buffer* key, EVP_CIPHER* cipher)
暗号化対応の転送関数.
暗号化データの最後には必ず \r\n がつく.生データの最後の \r\n はユーザの責任で付加する(通常はつける). CRYPT_Algorism が 0 でない場合には暗号化(+\r\n)して送られる.
tcp_send_crypt_mesgln(), tcp_send_crypt_sBufferln() は最後の改行コードの 取り扱いが混乱するので定義しない方が良い(と思う).定義する場合は tcp_send_mesgln(), tcp_send_sBufferln()とは使い方が異なることになるので注意が必要.
sock | ソケット |
mesg | 転送するデータ. |
key | 暗号鍵へのポインタ. |
cipher | 暗号方式 |
0以上 | 転送データ数 |
0未満 | 通信エラー |
Definition at line 298 of file ssl_tool.c.
References buf, encode_base64_Buffer(), encode_EVPAPI_Buffer(), free_Buffer(), JBXL_ARGS_ERROR, make_Buffer_bystr, tcp_send_mesg, tcp_send_sBufferln(), and Buffer::vldsz.
Referenced by command_BYE(), command_CRYPT(), command_HELLO(), command_KEYEX(), command_PASSWD(), and command_USERID().
int tcp_send_crypt_sBuffer(int sock, Buffer* mesg, Buffer* key, EVP_CIPHER* cipher)
暗号化対応の転送関数.
暗号化データの最後には必ず \r\n がつく.生データの最後の \r\n はユーザの責任で付加する(通常はつける). CRYPT_Algorism が 0 でない場合には暗号化(+\r\n)して送られる.
tcp_send_crypt_mesgln(), tcp_send_crypt_sBufferln() は最後の改行コードの 取り扱いが混乱するので定義しない方が良い(と思う).定義する場合は tcp_send_mesgln(), tcp_send_sBufferln()とは使い方が異なることになるので注意が必要.
sock | ソケット |
mesg | 転送するデータ. |
key | 暗号鍵へのポインタ. |
cipher | 暗号方式 |
0以上 | 転送データ数 |
0未満 | 通信エラー |
Definition at line 351 of file ssl_tool.c.
References buf, encode_base64_Buffer(), encode_EVPAPI_Buffer(), free_Buffer(), JBXL_ARGS_ERROR, tcp_send_sBuffer(), tcp_send_sBufferln(), and Buffer::vldsz.
Referenced by command_KEYEX(), command_USERID(), and send_command_recv_ans().
int udp_recv_crypt_Buffer | ( | int | sock, |
Buffer * | data, | ||
struct addrinfo * | sv, | ||
Buffer * | key, | ||
EVP_CIPHER * | cipher ) |
Definition at line 182 of file ssl_tool.c.
References buf, copy_Buffer(), decode_EVPAPI_Buffer(), free_Buffer(), make_Buffer(), RECVBUFSZ, udp_recv_Buffer(), and Buffer::vldsz.
int udp_recv_crypt_Buffer_sockaddr_in | ( | int | sock, |
Buffer * | data, | ||
struct sockaddr_in * | sv, | ||
Buffer * | key, | ||
EVP_CIPHER * | cipher ) |
Definition at line 132 of file ssl_tool.c.
References buf, copy_Buffer(), decode_EVPAPI_Buffer(), free_Buffer(), make_Buffer(), RECVBUFSZ, udp_recv_Buffer_sockaddr_in(), and Buffer::vldsz.
int udp_send_crypt_Buffer | ( | int | sock, |
Buffer * | data, | ||
struct addrinfo * | sv, | ||
Buffer * | key, | ||
EVP_CIPHER * | cipher ) |
Definition at line 162 of file ssl_tool.c.
References buf, encode_EVPAPI_Buffer(), free_Buffer(), JBXL_ARGS_ERROR, and udp_send_Buffer().
int udp_send_crypt_Buffer_sockaddr_in | ( | int | sock, |
Buffer * | data, | ||
struct sockaddr_in * | sv, | ||
Buffer * | key, | ||
EVP_CIPHER * | cipher ) |
Definition at line 112 of file ssl_tool.c.
References buf, encode_EVPAPI_Buffer(), free_Buffer(), JBXL_ARGS_ERROR, and udp_send_Buffer_sockaddr_in().