2017-02-08 18 views
0

私はAppleのセキュリティAPIの初期化の次のコードを持っています。私はSSLWrite経由で174バイト(私はそれを送信するつもりはありませんでした)を送信しようとしますが、とにかく失敗します。しかし、それが書かれているSSLHandshakeについてのドキュメントで ":::成功のリターンで、セッションが機能SSLRead(を使用して、通常の安全な通信のための準備ができている :)とSSLWrite( :)"。だから、私の場合、このメソッドからの戻り値がなく、SSLWriteFuncが突然SSLWrite経由でデータを送信しようとしました。私は何が間違っているのか分かりません。皆さん、私を助けてください。リンゴの安全な輸送コードのエラー

答えて

0

SSLRead()SSLWrite()は、SSLReadFuncSSLWriteFuncコールバック内からではなく、アプリケーションコードから呼び出す必要があります。

SSLReadFuncSSLWriteFuncコールバックでは、SecureTransportはソケット(SSLSetConnectionを使用して設定)からデータを送受信するように求めています。したがって、SSLWriteFuncでは、あなたのソケットを介して送信する暗号化されたデータが与えられています。 SSLWriteFuncの実装では、次のようになります。

OSStatus mySSLWriteFunc(SSLConnectionRef connection, const void *data, size_t *dataLength) 
{ 
    int *handle; 
    SSLGetConnection(connection, &handle); 
    size_t result = write(*handle, data, *dataLength); 
    if (result == -1) 
    { 
     if ((errno == EAGAIN) || (errno == EWOULDBLOCK)) 
      return errSSLWouldBlock; 
     else 
      // fill this in 
    } 
    else 
    { 
     *dataLength = result; 
    } 
    return noErr; 
} 
あなたは追加の(ソケットが閉じた場合などには)それにエラー処理が、それが基本的な構造でなければなりませんを追加したいと思う

+0

ありがとうございました! – slowcheetah

関連する問題