1*90e502c7SAndroid Build Coastguard Worker /* 2*90e502c7SAndroid Build Coastguard Worker * key.h 3*90e502c7SAndroid Build Coastguard Worker * 4*90e502c7SAndroid Build Coastguard Worker * key usage limits enforcement 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 /* 10*90e502c7SAndroid Build Coastguard Worker * 11*90e502c7SAndroid Build Coastguard Worker * Copyright (c) 2001-2017 Cisco Systems, Inc. 12*90e502c7SAndroid Build Coastguard Worker * All rights reserved. 13*90e502c7SAndroid Build Coastguard Worker * 14*90e502c7SAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without 15*90e502c7SAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions 16*90e502c7SAndroid Build Coastguard Worker * are met: 17*90e502c7SAndroid Build Coastguard Worker * 18*90e502c7SAndroid Build Coastguard Worker * Redistributions of source code must retain the above copyright 19*90e502c7SAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer. 20*90e502c7SAndroid Build Coastguard Worker * 21*90e502c7SAndroid Build Coastguard Worker * Redistributions in binary form must reproduce the above 22*90e502c7SAndroid Build Coastguard Worker * copyright notice, this list of conditions and the following 23*90e502c7SAndroid Build Coastguard Worker * disclaimer in the documentation and/or other materials provided 24*90e502c7SAndroid Build Coastguard Worker * with the distribution. 25*90e502c7SAndroid Build Coastguard Worker * 26*90e502c7SAndroid Build Coastguard Worker * Neither the name of the Cisco Systems, Inc. nor the names of its 27*90e502c7SAndroid Build Coastguard Worker * contributors may be used to endorse or promote products derived 28*90e502c7SAndroid Build Coastguard Worker * from this software without specific prior written permission. 29*90e502c7SAndroid Build Coastguard Worker * 30*90e502c7SAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 31*90e502c7SAndroid Build Coastguard Worker * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 32*90e502c7SAndroid Build Coastguard Worker * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 33*90e502c7SAndroid Build Coastguard Worker * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 34*90e502c7SAndroid Build Coastguard Worker * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 35*90e502c7SAndroid Build Coastguard Worker * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 36*90e502c7SAndroid Build Coastguard Worker * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 37*90e502c7SAndroid Build Coastguard Worker * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38*90e502c7SAndroid Build Coastguard Worker * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39*90e502c7SAndroid Build Coastguard Worker * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 40*90e502c7SAndroid Build Coastguard Worker * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 41*90e502c7SAndroid Build Coastguard Worker * OF THE POSSIBILITY OF SUCH DAMAGE. 42*90e502c7SAndroid Build Coastguard Worker * 43*90e502c7SAndroid Build Coastguard Worker */ 44*90e502c7SAndroid Build Coastguard Worker 45*90e502c7SAndroid Build Coastguard Worker #ifndef KEY_H 46*90e502c7SAndroid Build Coastguard Worker #define KEY_H 47*90e502c7SAndroid Build Coastguard Worker 48*90e502c7SAndroid Build Coastguard Worker #include "rdbx.h" /* for srtp_xtd_seq_num_t */ 49*90e502c7SAndroid Build Coastguard Worker #include "err.h" 50*90e502c7SAndroid Build Coastguard Worker 51*90e502c7SAndroid Build Coastguard Worker #ifdef __cplusplus 52*90e502c7SAndroid Build Coastguard Worker extern "C" { 53*90e502c7SAndroid Build Coastguard Worker #endif 54*90e502c7SAndroid Build Coastguard Worker 55*90e502c7SAndroid Build Coastguard Worker typedef struct srtp_key_limit_ctx_t *srtp_key_limit_t; 56*90e502c7SAndroid Build Coastguard Worker 57*90e502c7SAndroid Build Coastguard Worker typedef enum { 58*90e502c7SAndroid Build Coastguard Worker srtp_key_event_normal, 59*90e502c7SAndroid Build Coastguard Worker srtp_key_event_soft_limit, 60*90e502c7SAndroid Build Coastguard Worker srtp_key_event_hard_limit 61*90e502c7SAndroid Build Coastguard Worker } srtp_key_event_t; 62*90e502c7SAndroid Build Coastguard Worker 63*90e502c7SAndroid Build Coastguard Worker srtp_err_status_t srtp_key_limit_set(srtp_key_limit_t key, 64*90e502c7SAndroid Build Coastguard Worker const srtp_xtd_seq_num_t s); 65*90e502c7SAndroid Build Coastguard Worker 66*90e502c7SAndroid Build Coastguard Worker srtp_err_status_t srtp_key_limit_clone(srtp_key_limit_t original, 67*90e502c7SAndroid Build Coastguard Worker srtp_key_limit_t *new_key); 68*90e502c7SAndroid Build Coastguard Worker 69*90e502c7SAndroid Build Coastguard Worker srtp_err_status_t srtp_key_limit_check(const srtp_key_limit_t key); 70*90e502c7SAndroid Build Coastguard Worker 71*90e502c7SAndroid Build Coastguard Worker srtp_key_event_t srtp_key_limit_update(srtp_key_limit_t key); 72*90e502c7SAndroid Build Coastguard Worker 73*90e502c7SAndroid Build Coastguard Worker typedef enum { 74*90e502c7SAndroid Build Coastguard Worker srtp_key_state_normal, 75*90e502c7SAndroid Build Coastguard Worker srtp_key_state_past_soft_limit, 76*90e502c7SAndroid Build Coastguard Worker srtp_key_state_expired 77*90e502c7SAndroid Build Coastguard Worker } srtp_key_state_t; 78*90e502c7SAndroid Build Coastguard Worker 79*90e502c7SAndroid Build Coastguard Worker typedef struct srtp_key_limit_ctx_t { 80*90e502c7SAndroid Build Coastguard Worker srtp_xtd_seq_num_t num_left; 81*90e502c7SAndroid Build Coastguard Worker srtp_key_state_t state; 82*90e502c7SAndroid Build Coastguard Worker } srtp_key_limit_ctx_t; 83*90e502c7SAndroid Build Coastguard Worker 84*90e502c7SAndroid Build Coastguard Worker #ifdef __cplusplus 85*90e502c7SAndroid Build Coastguard Worker } 86*90e502c7SAndroid Build Coastguard Worker #endif 87*90e502c7SAndroid Build Coastguard Worker 88*90e502c7SAndroid Build Coastguard Worker #endif /* KEY_H */ 89