| Index: webrtc/libjingle/session/tunnel/securetunnelsessionclient.h
|
| diff --git a/webrtc/libjingle/session/tunnel/securetunnelsessionclient.h b/webrtc/libjingle/session/tunnel/securetunnelsessionclient.h
|
| deleted file mode 100644
|
| index 5fa02522a61dba3dbdae4fcb6cb3fc09a2ed7ff9..0000000000000000000000000000000000000000
|
| --- a/webrtc/libjingle/session/tunnel/securetunnelsessionclient.h
|
| +++ /dev/null
|
| @@ -1,165 +0,0 @@
|
| -/*
|
| - * libjingle
|
| - * Copyright 2004--2008, Google Inc.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions are met:
|
| - *
|
| - * 1. Redistributions of source code must retain the above copyright notice,
|
| - * this list of conditions and the following disclaimer.
|
| - * 2. Redistributions in binary form must reproduce the above copyright notice,
|
| - * this list of conditions and the following disclaimer in the documentation
|
| - * and/or other materials provided with the distribution.
|
| - * 3. The name of the author may not be used to endorse or promote products
|
| - * derived from this software without specific prior written permission.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
| - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
| - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
| - * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
| - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
| - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
| - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
| - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
| - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| - */
|
| -
|
| -// SecureTunnelSessionClient and SecureTunnelSession.
|
| -// SecureTunnelSessionClient extends TunnelSessionClient to exchange
|
| -// certificates as part of the session description.
|
| -// SecureTunnelSession is a TunnelSession that wraps the underlying
|
| -// tunnel stream into an SSLStreamAdapter.
|
| -
|
| -#ifndef WEBRTC_LIBJINGLE_SESSION_TUNNEL_SECURETUNNELSESSIONCLIENT_H_
|
| -#define WEBRTC_LIBJINGLE_SESSION_TUNNEL_SECURETUNNELSESSIONCLIENT_H_
|
| -
|
| -#include <string>
|
| -
|
| -#include "webrtc/libjingle/session/tunnel/tunnelsessionclient.h"
|
| -#include "webrtc/base/sslidentity.h"
|
| -#include "webrtc/base/sslstreamadapter.h"
|
| -
|
| -namespace cricket {
|
| -
|
| -class SecureTunnelSession; // below
|
| -
|
| -// SecureTunnelSessionClient
|
| -
|
| -// This TunnelSessionClient establishes secure tunnels protected by
|
| -// SSL/TLS. The PseudoTcpChannel stream is wrapped with an
|
| -// SSLStreamAdapter. An SSLIdentity must be set or generated.
|
| -//
|
| -// The TunnelContentDescription is extended to include the client and
|
| -// server certificates. The initiator acts as the client. The session
|
| -// initiate stanza carries a description that contains the client's
|
| -// certificate, and the session accept response's description has the
|
| -// server certificate added to it.
|
| -
|
| -class SecureTunnelSessionClient : public TunnelSessionClient {
|
| - public:
|
| - // The jid is used as the name for sessions for outgoing tunnels.
|
| - // manager is the SessionManager to which we register this client
|
| - // and its sessions.
|
| - SecureTunnelSessionClient(const buzz::Jid& jid, SessionManager* manager);
|
| -
|
| - // Configures this client to use a preexisting SSLIdentity.
|
| - // The client takes ownership of the identity object.
|
| - // Use either SetIdentity or GenerateIdentity, and only once.
|
| - void SetIdentity(rtc::SSLIdentity* identity);
|
| -
|
| - // Generates an identity from nothing.
|
| - // Returns true if generation was successful.
|
| - // Use either SetIdentity or GenerateIdentity, and only once.
|
| - bool GenerateIdentity();
|
| -
|
| - // Returns our identity for SSL purposes, as either set by
|
| - // SetIdentity() or generated by GenerateIdentity(). Call this
|
| - // method only after our identity has been successfully established
|
| - // by one of those methods.
|
| - rtc::SSLIdentity& GetIdentity() const;
|
| -
|
| - // Inherited methods
|
| - virtual void OnIncomingTunnel(const buzz::Jid& jid, Session *session);
|
| - virtual bool ParseContent(SignalingProtocol protocol,
|
| - const buzz::XmlElement* elem,
|
| - ContentDescription** content,
|
| - ParseError* error);
|
| - virtual bool WriteContent(SignalingProtocol protocol,
|
| - const ContentDescription* content,
|
| - buzz::XmlElement** elem,
|
| - WriteError* error);
|
| - virtual SessionDescription* CreateOffer(
|
| - const buzz::Jid &jid, const std::string &description);
|
| - virtual SessionDescription* CreateAnswer(
|
| - const SessionDescription* offer);
|
| -
|
| - protected:
|
| - virtual TunnelSession* MakeTunnelSession(
|
| - Session* session, rtc::Thread* stream_thread,
|
| - TunnelSessionRole role);
|
| -
|
| - private:
|
| - // Our identity (key and certificate) for SSL purposes. The
|
| - // certificate part will be communicated within the session
|
| - // description. The identity will be passed to the SSLStreamAdapter
|
| - // and used for SSL authentication.
|
| - rtc::scoped_ptr<rtc::SSLIdentity> identity_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SecureTunnelSessionClient);
|
| -};
|
| -
|
| -// SecureTunnelSession:
|
| -// A TunnelSession represents one session for one client. It
|
| -// provides the actual tunnel stream and handles state changes.
|
| -// A SecureTunnelSession is a TunnelSession that wraps the underlying
|
| -// tunnel stream into an SSLStreamAdapter.
|
| -
|
| -class SecureTunnelSession : public TunnelSession {
|
| - public:
|
| - // This TunnelSession will tie together the given client and session.
|
| - // stream_thread is passed to the PseudoTCPChannel: it's the thread
|
| - // designated to interact with the tunnel stream.
|
| - // role is either INITIATOR or RESPONDER, depending on who is
|
| - // initiating the session.
|
| - SecureTunnelSession(SecureTunnelSessionClient* client, Session* session,
|
| - rtc::Thread* stream_thread,
|
| - TunnelSessionRole role);
|
| -
|
| - // Returns the stream that implements the actual P2P tunnel.
|
| - // This may be called only once. Caller is responsible for freeing
|
| - // the returned object.
|
| - virtual rtc::StreamInterface* GetStream();
|
| -
|
| - protected:
|
| - // Inherited method: callback on accepting a session.
|
| - virtual void OnAccept();
|
| -
|
| - // Helper method for GetStream() that Instantiates the
|
| - // SSLStreamAdapter to wrap the PseudoTcpChannel's stream, and
|
| - // configures it with our identity and role.
|
| - rtc::StreamInterface* MakeSecureStream(
|
| - rtc::StreamInterface* stream);
|
| -
|
| - // Our role in requesting the tunnel: INITIATOR or
|
| - // RESPONDER. Translates to our role in SSL negotiation:
|
| - // respectively client or server. Also indicates which slot of the
|
| - // SecureTunnelContentDescription our cert goes into: client-cert or
|
| - // server-cert respectively.
|
| - TunnelSessionRole role_;
|
| -
|
| - // This is the stream representing the usable tunnel endpoint. It's
|
| - // a StreamReference wrapping the SSLStreamAdapter instance, which
|
| - // further wraps a PseudoTcpChannel::InternalStream. The
|
| - // StreamReference is because in the case of CreateTunnel(), the
|
| - // stream endpoint is returned early, but we need to keep a handle
|
| - // on it so we can setup the peer certificate when we receive it
|
| - // later.
|
| - rtc::scoped_ptr<rtc::StreamReference> ssl_stream_reference_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SecureTunnelSession);
|
| -};
|
| -
|
| -} // namespace cricket
|
| -
|
| -#endif // WEBRTC_LIBJINGLE_SESSION_TUNNEL_SECURETUNNELSESSIONCLIENT_H_
|
|
|