xref: /aosp_15_r20/external/libsrtp2/test/rtp.h (revision 90e502c7aef8d77d0622bb67d75435c6190cfc1a)
1*90e502c7SAndroid Build Coastguard Worker /*
2*90e502c7SAndroid Build Coastguard Worker  * rtp.h
3*90e502c7SAndroid Build Coastguard Worker  *
4*90e502c7SAndroid Build Coastguard Worker  * rtp interface for srtp reference implementation
5*90e502c7SAndroid Build Coastguard Worker  *
6*90e502c7SAndroid Build Coastguard Worker  * David A. McGrew
7*90e502c7SAndroid Build Coastguard Worker  * Cisco Systems, Inc.
8*90e502c7SAndroid Build Coastguard Worker  *
9*90e502c7SAndroid Build Coastguard Worker  * data types:
10*90e502c7SAndroid Build Coastguard Worker  *
11*90e502c7SAndroid Build Coastguard Worker  * rtp_msg_t       an rtp message (the data that goes on the wire)
12*90e502c7SAndroid Build Coastguard Worker  * rtp_sender_t    sender side socket and rtp info
13*90e502c7SAndroid Build Coastguard Worker  * rtp_receiver_t  receiver side socket and rtp info
14*90e502c7SAndroid Build Coastguard Worker  *
15*90e502c7SAndroid Build Coastguard Worker  */
16*90e502c7SAndroid Build Coastguard Worker 
17*90e502c7SAndroid Build Coastguard Worker /*
18*90e502c7SAndroid Build Coastguard Worker  *
19*90e502c7SAndroid Build Coastguard Worker  * Copyright (c) 2001-2017, Cisco Systems, Inc.
20*90e502c7SAndroid Build Coastguard Worker  * All rights reserved.
21*90e502c7SAndroid Build Coastguard Worker  *
22*90e502c7SAndroid Build Coastguard Worker  * Redistribution and use in source and binary forms, with or without
23*90e502c7SAndroid Build Coastguard Worker  * modification, are permitted provided that the following conditions
24*90e502c7SAndroid Build Coastguard Worker  * are met:
25*90e502c7SAndroid Build Coastguard Worker  *
26*90e502c7SAndroid Build Coastguard Worker  *   Redistributions of source code must retain the above copyright
27*90e502c7SAndroid Build Coastguard Worker  *   notice, this list of conditions and the following disclaimer.
28*90e502c7SAndroid Build Coastguard Worker  *
29*90e502c7SAndroid Build Coastguard Worker  *   Redistributions in binary form must reproduce the above
30*90e502c7SAndroid Build Coastguard Worker  *   copyright notice, this list of conditions and the following
31*90e502c7SAndroid Build Coastguard Worker  *   disclaimer in the documentation and/or other materials provided
32*90e502c7SAndroid Build Coastguard Worker  *   with the distribution.
33*90e502c7SAndroid Build Coastguard Worker  *
34*90e502c7SAndroid Build Coastguard Worker  *   Neither the name of the Cisco Systems, Inc. nor the names of its
35*90e502c7SAndroid Build Coastguard Worker  *   contributors may be used to endorse or promote products derived
36*90e502c7SAndroid Build Coastguard Worker  *   from this software without specific prior written permission.
37*90e502c7SAndroid Build Coastguard Worker  *
38*90e502c7SAndroid Build Coastguard Worker  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
39*90e502c7SAndroid Build Coastguard Worker  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
40*90e502c7SAndroid Build Coastguard Worker  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
41*90e502c7SAndroid Build Coastguard Worker  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
42*90e502c7SAndroid Build Coastguard Worker  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
43*90e502c7SAndroid Build Coastguard Worker  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
44*90e502c7SAndroid Build Coastguard Worker  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
45*90e502c7SAndroid Build Coastguard Worker  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
46*90e502c7SAndroid Build Coastguard Worker  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
47*90e502c7SAndroid Build Coastguard Worker  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
48*90e502c7SAndroid Build Coastguard Worker  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
49*90e502c7SAndroid Build Coastguard Worker  * OF THE POSSIBILITY OF SUCH DAMAGE.
50*90e502c7SAndroid Build Coastguard Worker  *
51*90e502c7SAndroid Build Coastguard Worker  */
52*90e502c7SAndroid Build Coastguard Worker 
53*90e502c7SAndroid Build Coastguard Worker #ifndef SRTP_RTP_H
54*90e502c7SAndroid Build Coastguard Worker #define SRTP_RTP_H
55*90e502c7SAndroid Build Coastguard Worker 
56*90e502c7SAndroid Build Coastguard Worker #ifdef HAVE_NETINET_IN_H
57*90e502c7SAndroid Build Coastguard Worker #include <netinet/in.h>
58*90e502c7SAndroid Build Coastguard Worker #elif defined HAVE_WINSOCK2_H
59*90e502c7SAndroid Build Coastguard Worker #include <winsock2.h>
60*90e502c7SAndroid Build Coastguard Worker #endif
61*90e502c7SAndroid Build Coastguard Worker 
62*90e502c7SAndroid Build Coastguard Worker #include "srtp_priv.h"
63*90e502c7SAndroid Build Coastguard Worker 
64*90e502c7SAndroid Build Coastguard Worker #ifdef __cplusplus
65*90e502c7SAndroid Build Coastguard Worker extern "C" {
66*90e502c7SAndroid Build Coastguard Worker #endif
67*90e502c7SAndroid Build Coastguard Worker 
68*90e502c7SAndroid Build Coastguard Worker /*
69*90e502c7SAndroid Build Coastguard Worker  * RTP_HEADER_LEN indicates the size of an RTP header
70*90e502c7SAndroid Build Coastguard Worker  */
71*90e502c7SAndroid Build Coastguard Worker #define RTP_HEADER_LEN 12
72*90e502c7SAndroid Build Coastguard Worker 
73*90e502c7SAndroid Build Coastguard Worker /*
74*90e502c7SAndroid Build Coastguard Worker  * RTP_MAX_BUF_LEN defines the largest RTP packet in the rtp.c implementation
75*90e502c7SAndroid Build Coastguard Worker  */
76*90e502c7SAndroid Build Coastguard Worker #define RTP_MAX_BUF_LEN 16384
77*90e502c7SAndroid Build Coastguard Worker 
78*90e502c7SAndroid Build Coastguard Worker typedef srtp_hdr_t rtp_hdr_t;
79*90e502c7SAndroid Build Coastguard Worker 
80*90e502c7SAndroid Build Coastguard Worker typedef struct {
81*90e502c7SAndroid Build Coastguard Worker     srtp_hdr_t header;
82*90e502c7SAndroid Build Coastguard Worker     char body[RTP_MAX_BUF_LEN];
83*90e502c7SAndroid Build Coastguard Worker } rtp_msg_t;
84*90e502c7SAndroid Build Coastguard Worker 
85*90e502c7SAndroid Build Coastguard Worker typedef struct rtp_sender_ctx_t {
86*90e502c7SAndroid Build Coastguard Worker     rtp_msg_t message;
87*90e502c7SAndroid Build Coastguard Worker     int socket;
88*90e502c7SAndroid Build Coastguard Worker     srtp_ctx_t *srtp_ctx;
89*90e502c7SAndroid Build Coastguard Worker     struct sockaddr_in addr; /* reciever's address */
90*90e502c7SAndroid Build Coastguard Worker } rtp_sender_ctx_t;
91*90e502c7SAndroid Build Coastguard Worker 
92*90e502c7SAndroid Build Coastguard Worker typedef struct rtp_receiver_ctx_t {
93*90e502c7SAndroid Build Coastguard Worker     rtp_msg_t message;
94*90e502c7SAndroid Build Coastguard Worker     int socket;
95*90e502c7SAndroid Build Coastguard Worker     srtp_ctx_t *srtp_ctx;
96*90e502c7SAndroid Build Coastguard Worker     struct sockaddr_in addr; /* receiver's address */
97*90e502c7SAndroid Build Coastguard Worker } rtp_receiver_ctx_t;
98*90e502c7SAndroid Build Coastguard Worker 
99*90e502c7SAndroid Build Coastguard Worker typedef struct rtp_sender_ctx_t *rtp_sender_t;
100*90e502c7SAndroid Build Coastguard Worker 
101*90e502c7SAndroid Build Coastguard Worker typedef struct rtp_receiver_ctx_t *rtp_receiver_t;
102*90e502c7SAndroid Build Coastguard Worker 
103*90e502c7SAndroid Build Coastguard Worker int rtp_sendto(rtp_sender_t sender, const void *msg, int len);
104*90e502c7SAndroid Build Coastguard Worker 
105*90e502c7SAndroid Build Coastguard Worker int rtp_recvfrom(rtp_receiver_t receiver, void *msg, int *len);
106*90e502c7SAndroid Build Coastguard Worker 
107*90e502c7SAndroid Build Coastguard Worker int rtp_receiver_init(rtp_receiver_t rcvr,
108*90e502c7SAndroid Build Coastguard Worker                       int sock,
109*90e502c7SAndroid Build Coastguard Worker                       struct sockaddr_in addr,
110*90e502c7SAndroid Build Coastguard Worker                       unsigned int ssrc);
111*90e502c7SAndroid Build Coastguard Worker 
112*90e502c7SAndroid Build Coastguard Worker int rtp_sender_init(rtp_sender_t sender,
113*90e502c7SAndroid Build Coastguard Worker                     int sock,
114*90e502c7SAndroid Build Coastguard Worker                     struct sockaddr_in addr,
115*90e502c7SAndroid Build Coastguard Worker                     unsigned int ssrc);
116*90e502c7SAndroid Build Coastguard Worker 
117*90e502c7SAndroid Build Coastguard Worker /*
118*90e502c7SAndroid Build Coastguard Worker  * srtp_sender_init(...) initializes an rtp_sender_t
119*90e502c7SAndroid Build Coastguard Worker  */
120*90e502c7SAndroid Build Coastguard Worker 
121*90e502c7SAndroid Build Coastguard Worker int srtp_sender_init(
122*90e502c7SAndroid Build Coastguard Worker     rtp_sender_t rtp_ctx,              /* structure to be init'ed */
123*90e502c7SAndroid Build Coastguard Worker     struct sockaddr_in name,           /* socket name             */
124*90e502c7SAndroid Build Coastguard Worker     srtp_sec_serv_t security_services, /* sec. servs. to be used  */
125*90e502c7SAndroid Build Coastguard Worker     unsigned char *input_key           /* master key/salt in hex  */
126*90e502c7SAndroid Build Coastguard Worker     );
127*90e502c7SAndroid Build Coastguard Worker 
128*90e502c7SAndroid Build Coastguard Worker int srtp_receiver_init(
129*90e502c7SAndroid Build Coastguard Worker     rtp_receiver_t rtp_ctx,            /* structure to be init'ed */
130*90e502c7SAndroid Build Coastguard Worker     struct sockaddr_in name,           /* socket name             */
131*90e502c7SAndroid Build Coastguard Worker     srtp_sec_serv_t security_services, /* sec. servs. to be used  */
132*90e502c7SAndroid Build Coastguard Worker     unsigned char *input_key           /* master key/salt in hex  */
133*90e502c7SAndroid Build Coastguard Worker     );
134*90e502c7SAndroid Build Coastguard Worker 
135*90e502c7SAndroid Build Coastguard Worker int rtp_sender_init_srtp(rtp_sender_t sender, const srtp_policy_t *policy);
136*90e502c7SAndroid Build Coastguard Worker 
137*90e502c7SAndroid Build Coastguard Worker int rtp_sender_deinit_srtp(rtp_sender_t sender);
138*90e502c7SAndroid Build Coastguard Worker 
139*90e502c7SAndroid Build Coastguard Worker int rtp_receiver_init_srtp(rtp_receiver_t sender, const srtp_policy_t *policy);
140*90e502c7SAndroid Build Coastguard Worker 
141*90e502c7SAndroid Build Coastguard Worker int rtp_receiver_deinit_srtp(rtp_receiver_t sender);
142*90e502c7SAndroid Build Coastguard Worker 
143*90e502c7SAndroid Build Coastguard Worker rtp_sender_t rtp_sender_alloc(void);
144*90e502c7SAndroid Build Coastguard Worker 
145*90e502c7SAndroid Build Coastguard Worker void rtp_sender_dealloc(rtp_sender_t rtp_ctx);
146*90e502c7SAndroid Build Coastguard Worker 
147*90e502c7SAndroid Build Coastguard Worker rtp_receiver_t rtp_receiver_alloc(void);
148*90e502c7SAndroid Build Coastguard Worker 
149*90e502c7SAndroid Build Coastguard Worker void rtp_receiver_dealloc(rtp_receiver_t rtp_ctx);
150*90e502c7SAndroid Build Coastguard Worker 
151*90e502c7SAndroid Build Coastguard Worker #ifdef __cplusplus
152*90e502c7SAndroid Build Coastguard Worker }
153*90e502c7SAndroid Build Coastguard Worker #endif
154*90e502c7SAndroid Build Coastguard Worker 
155*90e502c7SAndroid Build Coastguard Worker #endif /* SRTP_RTP_H */
156