oRTP  0.22.0
include/ortp/ortp_srtp.h
00001 /*
00002   The oRTP library is an RTP (Realtime Transport Protocol - rfc3550) stack.
00003   Copyright (C) 2001  Simon MORLAT simon.morlat@linphone.org
00004 
00005   This library is free software; you can redistribute it and/or
00006   modify it under the terms of the GNU Lesser General Public
00007   License as published by the Free Software Foundation; either
00008   version 2.1 of the License, or (at your option) any later version.
00009 
00010   This library is distributed in the hope that it will be useful,
00011   but WITHOUT ANY WARRANTY; without even the implied warranty of
00012   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013   Lesser General Public License for more details.
00014 
00015   You should have received a copy of the GNU Lesser General Public
00016   License along with this library; if not, write to the Free Software
00017   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018 */
00019 
00020 #ifndef ortp_srtp_h
00021 #define ortp_srtp_h
00022 
00023 #ifdef HAVE_SRTP
00024 #ifndef ANDROID
00025 #include <srtp/srtp.h>
00026 #else
00027 // Android doesn't use make install
00028 #include <srtp.h>
00029 #endif
00030 #else
00031 
00032 typedef  void* srtp_t;
00033 typedef int err_status_t;
00034 typedef int srtp_policy_t;
00035 
00036 #endif
00037 
00038 #include <ortp/rtpsession.h>
00039 
00040 /*srtp defines all this stuff*/
00041 #undef PACKAGE_BUGREPORT
00042 #undef PACKAGE_NAME
00043 #undef PACKAGE_STRING
00044 #undef PACKAGE_TARNAME
00045 #undef PACKAGE_VERSION
00046 
00047 #ifdef __cplusplus
00048 extern "C"{
00049 #endif
00050 
00051 enum ortp_srtp_crypto_suite_t {
00052         AES_128_SHA1_80 = 1,
00053         AES_128_SHA1_32,
00054         AES_128_NO_AUTH,
00055         NO_CIPHER_SHA1_80
00056 };
00057 
00058 ORTP_PUBLIC err_status_t ortp_srtp_init(void);
00059 ORTP_PUBLIC err_status_t ortp_srtp_create(srtp_t *session, const srtp_policy_t *policy);
00060 ORTP_PUBLIC err_status_t ortp_srtp_dealloc(srtp_t session);
00061 ORTP_PUBLIC err_status_t ortp_srtp_add_stream(srtp_t session, const srtp_policy_t *policy);
00062 ORTP_PUBLIC err_status_t ortp_crypto_get_random(uint8_t *tmp, int size);
00063 ORTP_PUBLIC bool_t ortp_srtp_supported(void);
00064 
00065 ORTP_PUBLIC int srtp_transport_new(srtp_t srtp, RtpTransport **rtpt, RtpTransport **rtcpt );
00066 
00067 ORTP_PUBLIC srtp_t ortp_srtp_create_configure_session(enum ortp_srtp_crypto_suite_t suite, uint32_t ssrc, const char* snd_key, const char* rcv_key);
00068 
00069 ORTP_PUBLIC void ortp_srtp_shutdown(void);
00070 
00071 #ifdef __cplusplus
00072 }
00073 #endif
00074 
00075 #endif