コンテンツにスキップ

デバッグ

デバッグとロギング

wolfSSL(以前のCyassl)は、デバッグが制限されている環境でログメッセージを介したデバッグをサポートしています。ロギングをオンにするには、機能wolfSSL_Debugging_ON()を使用し、それをオフにするためにwolfSSL_Debugging_OFF()をオフにします。通常のビルド(リリースモード)では、これらの関数は効果がありません。デバッグビルドで、これらの機能がオンになっていることを確認するためにDEBUG_WOLFSSLを定義します。

wolfSSL 2.0以降、ロギングコールバック関数はランタイムに登録されて、ログ記録の完了方法をより柔軟に提供することができます。ロギングコールバックは機能wolfSSL_SetLoggingCb()に登録できます。

int wolfSSL_SetLoggingCb(wolfSSL_Logging_cb log_function);

typedef void (*wolfSSL_Logging_cb)(const int logLevel,
                  const char *const logMessage);

ログレベルはwolfssl/wolfcrypt/logging.hにあり、実装はlogging.cにあります。デフォルトでは、wolfsslはstderrfprintfでロギングします。

エラーコード

wolfSSLは、デバッグを支援するために、有益なエラーメッセージを提供します。

wolfSSL_read()およびwolfSSL_write()呼び出しは、read()write()と同じように、成功時に0、接続クロージャーの場合は0、およびエラーの間のバイト数を返します。エラーが発生した場合は、2つのAPIを使用して、エラーの情報を入手できます。

関数wolfSSL_get_error()は現在のエラーコードを返します。現在のWOLFSSLオブジェクト、およびwolfSSL_read()またはwolfSSL_write()の結果値を引数として取得し、対応するエラーコードを返します。

int err=wolfSSL_get_error(ssl, result);

より読み取り可能なエラーコードの説明を取得するには、wolfSSL_ERR_error_string()関数を使用できます。wolfSSL_get_errorからのリターンコードとストレージバッファーを引数として取得し、対応するエラーの説明をストレージバッファー(以下の例のerrorString)に配置します。

char errorString[80];
wolfSSL_ERR_error_string(err, errorString);

ノンブロッキングソケットを使用している場合は、EEAGAIN/EWOULDBLOCKをテストするか、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEの特定のエラーコードをテストできます。

wolfSSLとWolfCryptエラーコードのリストについては、付録C(エラーコード)を参照してください。