mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-12-02 00:12:33 +08:00
init
This commit is contained in:
parent
4875d4ebfd
commit
729e7f3d23
@ -46,6 +46,8 @@ android {
|
|||||||
// buildConfig = true
|
// buildConfig = true
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
Binary file not shown.
BIN
Android/app/libs/arm64-v8a/libsrtp2.so
Normal file
BIN
Android/app/libs/arm64-v8a/libsrtp2.so
Normal file
Binary file not shown.
@ -9,19 +9,8 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/libs_export/${AND
|
|||||||
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/libs_export/${ANDROID_ABI}/binary)
|
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/libs_export/${ANDROID_ABI}/binary)
|
||||||
set(OPENSSL_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${ANDROID_ABI}")
|
set(OPENSSL_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${ANDROID_ABI}")
|
||||||
|
|
||||||
#由于openssl库编译时未指定-fPIC,到时github action ci编译失败,先屏蔽掉
|
|
||||||
set(OPENSSL_INCLUDE_DIR "3rdpart/openssl/include")
|
|
||||||
set(OPENSSL_CRYPTO_LIBRARY "Android/app/libs/arm64-v8a/libcrypto.a")
|
|
||||||
set(OPENSSL_SSL_LIBRARY "Android/app/libs/arm64-v8a/libssl.a")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
set(SRTP_INCLUDE_DIRS "3rdpart/libsrtp/include")
|
|
||||||
set(SRTP_LIBRARIES "Android/app/libs/arm64-v8a/libsrtp2.a")
|
|
||||||
|
|
||||||
include_directories(${OPENSSL_INCLUDE_DIR})
|
|
||||||
include_directories(${SRTP_INCLUDE_DIRS})
|
|
||||||
|
|
||||||
###################################################################
|
###################################################################
|
||||||
# 编译openssl 1.1.1k
|
# 编译openssl 1.1.1k
|
||||||
|
|
||||||
@ -43,6 +32,19 @@ include_directories(${SRTP_INCLUDE_DIRS})
|
|||||||
set(JNI_Root ${CMAKE_CURRENT_SOURCE_DIR})
|
set(JNI_Root ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
set(ZLMediaKit_Root ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../)
|
set(ZLMediaKit_Root ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../)
|
||||||
|
|
||||||
|
#由于openssl库编译时未指定-fPIC,到时github action ci编译失败,先屏蔽掉
|
||||||
|
set(OPENSSL_INCLUDE_DIR "${ZLMediaKit_Root}3rdpart/openssl/include")
|
||||||
|
set(OPENSSL_CRYPTO_LIBRARY "${ZLMediaKit_Root}Android/app/libs/${ANDROID_ABI}/libcrypto.a")
|
||||||
|
set(OPENSSL_SSL_LIBRARY "${ZLMediaKit_Root}Android/app/libs/${ANDROID_ABI}/libssl.a")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
set(SRTP_INCLUDE_DIRS "include")
|
||||||
|
set(SRTP_LIBRARIES "${ZLMediaKit_Root}Android/app/libs/${ANDROID_ABI}/libsrtp2.a")
|
||||||
|
|
||||||
|
include_directories(${OPENSSL_INCLUDE_DIR})
|
||||||
|
include_directories(${SRTP_INCLUDE_DIRS})
|
||||||
|
|
||||||
#添加主工程cmake
|
#添加主工程cmake
|
||||||
add_subdirectory(${ZLMediaKit_Root} ${EXECUTABLE_OUTPUT_PATH})
|
add_subdirectory(${ZLMediaKit_Root} ${EXECUTABLE_OUTPUT_PATH})
|
||||||
|
|
||||||
@ -59,7 +61,7 @@ include_directories(${ZLMediaKit_Root}/3rdpart/ZLToolKit/src)
|
|||||||
#收集源代码添加动态库
|
#收集源代码添加动态库
|
||||||
file(GLOB JNI_src_list ${JNI_Root}/*.cpp ${JNI_Root}/*.h)
|
file(GLOB JNI_src_list ${JNI_Root}/*.cpp ${JNI_Root}/*.h)
|
||||||
add_library(zlmediakit_jni SHARED ${JNI_src_list})
|
add_library(zlmediakit_jni SHARED ${JNI_src_list})
|
||||||
|
message(WARNING ${MK_LINK_LIBRARIES})
|
||||||
#链接
|
#链接
|
||||||
target_link_libraries(zlmediakit_jni -Wl,--start-group log z ${MK_LINK_LIBRARIES} -Wl,--end-group)
|
target_link_libraries(zlmediakit_jni -Wl,--start-group log z ${MK_LINK_LIBRARIES} -Wl,--end-group)
|
||||||
|
|
||||||
|
173
Android/app/src/main/cpp/include/srtp2/auth.h
Normal file
173
Android/app/src/main/cpp/include/srtp2/auth.h
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
/*
|
||||||
|
* auth.h
|
||||||
|
*
|
||||||
|
* common interface to authentication functions
|
||||||
|
*
|
||||||
|
* David A. McGrew
|
||||||
|
* Cisco Systems, Inc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright (c) 2001-2017, Cisco Systems, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* Neither the name of the Cisco Systems, Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "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
|
||||||
|
* COPYRIGHT HOLDERS OR CONTRIBUTORS 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SRTP_AUTH_H
|
||||||
|
#define SRTP_AUTH_H
|
||||||
|
|
||||||
|
#include "srtp.h"
|
||||||
|
#include "crypto_types.h" /* for values of auth_type_id_t */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef const struct srtp_auth_type_t *srtp_auth_type_pointer;
|
||||||
|
typedef struct srtp_auth_t *srtp_auth_pointer_t;
|
||||||
|
|
||||||
|
typedef srtp_err_status_t (*srtp_auth_alloc_func)(srtp_auth_pointer_t *ap,
|
||||||
|
int key_len,
|
||||||
|
int out_len);
|
||||||
|
|
||||||
|
typedef srtp_err_status_t (*srtp_auth_init_func)(void *state,
|
||||||
|
const uint8_t *key,
|
||||||
|
int key_len);
|
||||||
|
|
||||||
|
typedef srtp_err_status_t (*srtp_auth_dealloc_func)(srtp_auth_pointer_t ap);
|
||||||
|
|
||||||
|
typedef srtp_err_status_t (*srtp_auth_compute_func)(void *state,
|
||||||
|
const uint8_t *buffer,
|
||||||
|
int octets_to_auth,
|
||||||
|
int tag_len,
|
||||||
|
uint8_t *tag);
|
||||||
|
|
||||||
|
typedef srtp_err_status_t (*srtp_auth_update_func)(void *state,
|
||||||
|
const uint8_t *buffer,
|
||||||
|
int octets_to_auth);
|
||||||
|
|
||||||
|
typedef srtp_err_status_t (*srtp_auth_start_func)(void *state);
|
||||||
|
|
||||||
|
/* some syntactic sugar on these function types */
|
||||||
|
#define srtp_auth_type_alloc(at, a, klen, outlen) \
|
||||||
|
((at)->alloc((a), (klen), (outlen)))
|
||||||
|
|
||||||
|
#define srtp_auth_init(a, key) \
|
||||||
|
(((a)->type)->init((a)->state, (key), ((a)->key_len)))
|
||||||
|
|
||||||
|
#define srtp_auth_compute(a, buf, len, res) \
|
||||||
|
(((a)->type)->compute((a)->state, (buf), (len), (a)->out_len, (res)))
|
||||||
|
|
||||||
|
#define srtp_auth_update(a, buf, len) \
|
||||||
|
(((a)->type)->update((a)->state, (buf), (len)))
|
||||||
|
|
||||||
|
#define srtp_auth_start(a) (((a)->type)->start((a)->state))
|
||||||
|
|
||||||
|
#define srtp_auth_dealloc(c) (((c)->type)->dealloc(c))
|
||||||
|
|
||||||
|
/* functions to get information about a particular auth_t */
|
||||||
|
int srtp_auth_get_key_length(const struct srtp_auth_t *a);
|
||||||
|
|
||||||
|
int srtp_auth_get_tag_length(const struct srtp_auth_t *a);
|
||||||
|
|
||||||
|
int srtp_auth_get_prefix_length(const struct srtp_auth_t *a);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* srtp_auth_test_case_t is a (list of) key/message/tag values that are
|
||||||
|
* known to be correct for a particular cipher. this data can be used
|
||||||
|
* to test an implementation in an on-the-fly self test of the
|
||||||
|
* correctness of the implementation. (see the srtp_auth_type_self_test()
|
||||||
|
* function below)
|
||||||
|
*/
|
||||||
|
typedef struct srtp_auth_test_case_t {
|
||||||
|
int key_length_octets; /* octets in key */
|
||||||
|
const uint8_t *key; /* key */
|
||||||
|
int data_length_octets; /* octets in data */
|
||||||
|
const uint8_t *data; /* data */
|
||||||
|
int tag_length_octets; /* octets in tag */
|
||||||
|
const uint8_t *tag; /* tag */
|
||||||
|
const struct srtp_auth_test_case_t
|
||||||
|
*next_test_case; /* pointer to next testcase */
|
||||||
|
} srtp_auth_test_case_t;
|
||||||
|
|
||||||
|
/* srtp_auth_type_t */
|
||||||
|
typedef struct srtp_auth_type_t {
|
||||||
|
srtp_auth_alloc_func alloc;
|
||||||
|
srtp_auth_dealloc_func dealloc;
|
||||||
|
srtp_auth_init_func init;
|
||||||
|
srtp_auth_compute_func compute;
|
||||||
|
srtp_auth_update_func update;
|
||||||
|
srtp_auth_start_func start;
|
||||||
|
const char *description;
|
||||||
|
const srtp_auth_test_case_t *test_data;
|
||||||
|
srtp_auth_type_id_t id;
|
||||||
|
} srtp_auth_type_t;
|
||||||
|
|
||||||
|
typedef struct srtp_auth_t {
|
||||||
|
const srtp_auth_type_t *type;
|
||||||
|
void *state;
|
||||||
|
int out_len; /* length of output tag in octets */
|
||||||
|
int key_len; /* length of key in octets */
|
||||||
|
int prefix_len; /* length of keystream prefix */
|
||||||
|
} srtp_auth_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* srtp_auth_type_self_test() tests an auth_type against test cases
|
||||||
|
* provided in an array of values of key/message/tag that is known to
|
||||||
|
* be good
|
||||||
|
*/
|
||||||
|
srtp_err_status_t srtp_auth_type_self_test(const srtp_auth_type_t *at);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* srtp_auth_type_test() tests an auth_type against external test cases
|
||||||
|
* provided in an array of values of key/message/tag that is known to
|
||||||
|
* be good
|
||||||
|
*/
|
||||||
|
srtp_err_status_t srtp_auth_type_test(const srtp_auth_type_t *at,
|
||||||
|
const srtp_auth_test_case_t *test_data);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* srtp_replace_auth_type(ct, id)
|
||||||
|
*
|
||||||
|
* replaces srtp's kernel's auth type implementation for the auth_type id
|
||||||
|
* with a new one passed in externally. The new auth type must pass all the
|
||||||
|
* existing auth_type's self tests as well as its own.
|
||||||
|
*/
|
||||||
|
srtp_err_status_t srtp_replace_auth_type(const srtp_auth_type_t *ct,
|
||||||
|
srtp_auth_type_id_t id);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* SRTP_AUTH_H */
|
248
Android/app/src/main/cpp/include/srtp2/cipher.h
Normal file
248
Android/app/src/main/cpp/include/srtp2/cipher.h
Normal file
@ -0,0 +1,248 @@
|
|||||||
|
/*
|
||||||
|
* cipher.h
|
||||||
|
*
|
||||||
|
* common interface to ciphers
|
||||||
|
*
|
||||||
|
* David A. McGrew
|
||||||
|
* Cisco Systems, Inc.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright (c) 2001-2017 Cisco Systems, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* Neither the name of the Cisco Systems, Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "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
|
||||||
|
* COPYRIGHT HOLDERS OR CONTRIBUTORS 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SRTP_CIPHER_H
|
||||||
|
#define SRTP_CIPHER_H
|
||||||
|
|
||||||
|
#include "srtp.h"
|
||||||
|
#include "crypto_types.h" /* for values of cipher_type_id_t */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* srtp_cipher_direction_t defines a particular cipher operation.
|
||||||
|
*
|
||||||
|
* A srtp_cipher_direction_t is an enum that describes a particular cipher
|
||||||
|
* operation, i.e. encryption or decryption. For some ciphers, this
|
||||||
|
* distinction does not matter, but for others, it is essential.
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
srtp_direction_encrypt, /**< encryption (convert plaintext to ciphertext) */
|
||||||
|
srtp_direction_decrypt, /**< decryption (convert ciphertext to plaintext) */
|
||||||
|
srtp_direction_any /**< encryption or decryption */
|
||||||
|
} srtp_cipher_direction_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* the srtp_cipher_pointer_t definition is needed
|
||||||
|
* as srtp_cipher_t is not yet defined
|
||||||
|
*/
|
||||||
|
typedef struct srtp_cipher_t *srtp_cipher_pointer_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* a srtp_cipher_alloc_func_t allocates (but does not initialize) a
|
||||||
|
* srtp_cipher_t
|
||||||
|
*/
|
||||||
|
typedef srtp_err_status_t (*srtp_cipher_alloc_func_t)(srtp_cipher_pointer_t *cp,
|
||||||
|
int key_len,
|
||||||
|
int tag_len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* a srtp_cipher_init_func_t [re-]initializes a cipher_t with a given key
|
||||||
|
*/
|
||||||
|
typedef srtp_err_status_t (*srtp_cipher_init_func_t)(void *state,
|
||||||
|
const uint8_t *key);
|
||||||
|
|
||||||
|
/* a srtp_cipher_dealloc_func_t de-allocates a cipher_t */
|
||||||
|
typedef srtp_err_status_t (*srtp_cipher_dealloc_func_t)(
|
||||||
|
srtp_cipher_pointer_t cp);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* a srtp_cipher_set_aad_func_t processes the AAD data for AEAD ciphers
|
||||||
|
*/
|
||||||
|
typedef srtp_err_status_t (*srtp_cipher_set_aad_func_t)(void *state,
|
||||||
|
const uint8_t *aad,
|
||||||
|
uint32_t aad_len);
|
||||||
|
|
||||||
|
/* a srtp_cipher_encrypt_func_t encrypts data in-place */
|
||||||
|
typedef srtp_err_status_t (*srtp_cipher_encrypt_func_t)(
|
||||||
|
void *state,
|
||||||
|
uint8_t *buffer,
|
||||||
|
unsigned int *octets_to_encrypt);
|
||||||
|
|
||||||
|
/* a srtp_cipher_decrypt_func_t decrypts data in-place */
|
||||||
|
typedef srtp_err_status_t (*srtp_cipher_decrypt_func_t)(
|
||||||
|
void *state,
|
||||||
|
uint8_t *buffer,
|
||||||
|
unsigned int *octets_to_decrypt);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* a srtp_cipher_set_iv_func_t function sets the current initialization vector
|
||||||
|
*/
|
||||||
|
typedef srtp_err_status_t (*srtp_cipher_set_iv_func_t)(
|
||||||
|
void *state,
|
||||||
|
uint8_t *iv,
|
||||||
|
srtp_cipher_direction_t direction);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* a cipher_get_tag_func_t function is used to get the authentication
|
||||||
|
* tag that was calculated by an AEAD cipher.
|
||||||
|
*/
|
||||||
|
typedef srtp_err_status_t (*srtp_cipher_get_tag_func_t)(void *state,
|
||||||
|
uint8_t *tag,
|
||||||
|
uint32_t *len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* srtp_cipher_test_case_t is a (list of) key, salt, plaintext, ciphertext,
|
||||||
|
* and aad values that are known to be correct for a
|
||||||
|
* particular cipher. this data can be used to test an implementation
|
||||||
|
* in an on-the-fly self test of the correctness of the implementation.
|
||||||
|
* (see the srtp_cipher_type_self_test() function below)
|
||||||
|
*/
|
||||||
|
typedef struct srtp_cipher_test_case_t {
|
||||||
|
int key_length_octets; /* octets in key */
|
||||||
|
const uint8_t *key; /* key */
|
||||||
|
uint8_t *idx; /* packet index */
|
||||||
|
unsigned int plaintext_length_octets; /* octets in plaintext */
|
||||||
|
const uint8_t *plaintext; /* plaintext */
|
||||||
|
unsigned int ciphertext_length_octets; /* octets in plaintext */
|
||||||
|
const uint8_t *ciphertext; /* ciphertext */
|
||||||
|
int aad_length_octets; /* octets in AAD */
|
||||||
|
const uint8_t *aad; /* AAD */
|
||||||
|
int tag_length_octets; /* Length of AEAD tag */
|
||||||
|
const struct srtp_cipher_test_case_t
|
||||||
|
*next_test_case; /* pointer to next testcase */
|
||||||
|
} srtp_cipher_test_case_t;
|
||||||
|
|
||||||
|
/* srtp_cipher_type_t defines the 'metadata' for a particular cipher type */
|
||||||
|
typedef struct srtp_cipher_type_t {
|
||||||
|
srtp_cipher_alloc_func_t alloc;
|
||||||
|
srtp_cipher_dealloc_func_t dealloc;
|
||||||
|
srtp_cipher_init_func_t init;
|
||||||
|
srtp_cipher_set_aad_func_t set_aad;
|
||||||
|
srtp_cipher_encrypt_func_t encrypt;
|
||||||
|
srtp_cipher_encrypt_func_t decrypt;
|
||||||
|
srtp_cipher_set_iv_func_t set_iv;
|
||||||
|
srtp_cipher_get_tag_func_t get_tag;
|
||||||
|
const char *description;
|
||||||
|
const srtp_cipher_test_case_t *test_data;
|
||||||
|
srtp_cipher_type_id_t id;
|
||||||
|
} srtp_cipher_type_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* srtp_cipher_t defines an instantiation of a particular cipher, with fixed
|
||||||
|
* key length, key and salt values
|
||||||
|
*/
|
||||||
|
typedef struct srtp_cipher_t {
|
||||||
|
const srtp_cipher_type_t *type;
|
||||||
|
void *state;
|
||||||
|
int key_len;
|
||||||
|
int algorithm;
|
||||||
|
} srtp_cipher_t;
|
||||||
|
|
||||||
|
/* some bookkeeping functions */
|
||||||
|
int srtp_cipher_get_key_length(const srtp_cipher_t *c);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* srtp_cipher_type_self_test() tests a cipher against test cases provided in
|
||||||
|
* an array of values of key/srtp_xtd_seq_num_t/plaintext/ciphertext
|
||||||
|
* that is known to be good
|
||||||
|
*/
|
||||||
|
srtp_err_status_t srtp_cipher_type_self_test(const srtp_cipher_type_t *ct);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* srtp_cipher_type_test() tests a cipher against external test cases provided
|
||||||
|
* in
|
||||||
|
* an array of values of key/srtp_xtd_seq_num_t/plaintext/ciphertext
|
||||||
|
* that is known to be good
|
||||||
|
*/
|
||||||
|
srtp_err_status_t srtp_cipher_type_test(
|
||||||
|
const srtp_cipher_type_t *ct,
|
||||||
|
const srtp_cipher_test_case_t *test_data);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* srtp_cipher_bits_per_second(c, l, t) computes (an estimate of) the
|
||||||
|
* number of bits that a cipher implementation can encrypt in a second
|
||||||
|
*
|
||||||
|
* c is a cipher (which MUST be allocated and initialized already), l
|
||||||
|
* is the length in octets of the test data to be encrypted, and t is
|
||||||
|
* the number of trials
|
||||||
|
*
|
||||||
|
* if an error is encountered, then the value 0 is returned
|
||||||
|
*/
|
||||||
|
uint64_t srtp_cipher_bits_per_second(srtp_cipher_t *c,
|
||||||
|
int octets_in_buffer,
|
||||||
|
int num_trials);
|
||||||
|
|
||||||
|
srtp_err_status_t srtp_cipher_type_alloc(const srtp_cipher_type_t *ct,
|
||||||
|
srtp_cipher_t **c,
|
||||||
|
int key_len,
|
||||||
|
int tlen);
|
||||||
|
srtp_err_status_t srtp_cipher_dealloc(srtp_cipher_t *c);
|
||||||
|
srtp_err_status_t srtp_cipher_init(srtp_cipher_t *c, const uint8_t *key);
|
||||||
|
srtp_err_status_t srtp_cipher_set_iv(srtp_cipher_t *c,
|
||||||
|
uint8_t *iv,
|
||||||
|
int direction);
|
||||||
|
srtp_err_status_t srtp_cipher_output(srtp_cipher_t *c,
|
||||||
|
uint8_t *buffer,
|
||||||
|
uint32_t *num_octets_to_output);
|
||||||
|
srtp_err_status_t srtp_cipher_encrypt(srtp_cipher_t *c,
|
||||||
|
uint8_t *buffer,
|
||||||
|
uint32_t *num_octets_to_output);
|
||||||
|
srtp_err_status_t srtp_cipher_decrypt(srtp_cipher_t *c,
|
||||||
|
uint8_t *buffer,
|
||||||
|
uint32_t *num_octets_to_output);
|
||||||
|
srtp_err_status_t srtp_cipher_get_tag(srtp_cipher_t *c,
|
||||||
|
uint8_t *buffer,
|
||||||
|
uint32_t *tag_len);
|
||||||
|
srtp_err_status_t srtp_cipher_set_aad(srtp_cipher_t *c,
|
||||||
|
const uint8_t *aad,
|
||||||
|
uint32_t aad_len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* srtp_replace_cipher_type(ct, id)
|
||||||
|
*
|
||||||
|
* replaces srtp's existing cipher implementation for the cipher_type id
|
||||||
|
* with a new one passed in externally. The new cipher must pass all the
|
||||||
|
* existing cipher_type's self tests as well as its own.
|
||||||
|
*/
|
||||||
|
srtp_err_status_t srtp_replace_cipher_type(const srtp_cipher_type_t *ct,
|
||||||
|
srtp_cipher_type_id_t id);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* SRTP_CIPHER_H */
|
116
Android/app/src/main/cpp/include/srtp2/crypto_types.h
Normal file
116
Android/app/src/main/cpp/include/srtp2/crypto_types.h
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
/*
|
||||||
|
* crypto_types.h
|
||||||
|
*
|
||||||
|
* constants for cipher types and auth func types
|
||||||
|
*
|
||||||
|
* David A. McGrew
|
||||||
|
* Cisco Systems, Inc.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright(c) 2001-2017 Cisco Systems, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* Neither the name of the Cisco Systems, Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "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
|
||||||
|
* COPYRIGHT HOLDERS OR CONTRIBUTORS 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SRTP_CRYPTO_TYPES_H
|
||||||
|
#define SRTP_CRYPTO_TYPES_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The null cipher performs no encryption.
|
||||||
|
*
|
||||||
|
* The SRTP_NULL_CIPHER leaves its inputs unaltered, during both the
|
||||||
|
* encryption and decryption operations. This cipher can be chosen
|
||||||
|
* to indicate that no encryption is to be performed.
|
||||||
|
*/
|
||||||
|
#define SRTP_NULL_CIPHER 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AES-128 Integer Counter Mode (AES ICM)
|
||||||
|
*
|
||||||
|
* AES-128 ICM is the variant of counter mode that is used by
|
||||||
|
* Secure RTP. This cipher uses a 16-octet key concatenated with a
|
||||||
|
* 14-octet offset (or salt) value.
|
||||||
|
*/
|
||||||
|
#define SRTP_AES_ICM_128 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AES-192 Integer Counter Mode (AES ICM)
|
||||||
|
*
|
||||||
|
* AES-128 ICM is the variant of counter mode that is used by
|
||||||
|
* Secure RTP. This cipher uses a 24-octet key concatenated with a
|
||||||
|
* 14-octet offset (or salt) value.
|
||||||
|
*/
|
||||||
|
#define SRTP_AES_ICM_192 4
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AES-256 Integer Counter Mode (AES ICM)
|
||||||
|
*
|
||||||
|
* AES-128 ICM is the variant of counter mode that is used by
|
||||||
|
* Secure RTP. This cipher uses a 32-octet key concatenated with a
|
||||||
|
* 14-octet offset (or salt) value.
|
||||||
|
*/
|
||||||
|
#define SRTP_AES_ICM_256 5
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AES-128_GCM Galois Counter Mode (AES GCM)
|
||||||
|
*
|
||||||
|
* AES-128 GCM is the variant of galois counter mode that is used by
|
||||||
|
* Secure RTP. This cipher uses a 16-octet key.
|
||||||
|
*/
|
||||||
|
#define SRTP_AES_GCM_128 6
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AES-256_GCM Galois Counter Mode (AES GCM)
|
||||||
|
*
|
||||||
|
* AES-256 GCM is the variant of galois counter mode that is used by
|
||||||
|
* Secure RTP. This cipher uses a 32-octet key.
|
||||||
|
*/
|
||||||
|
#define SRTP_AES_GCM_256 7
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The null authentication function performs no authentication.
|
||||||
|
*
|
||||||
|
* The NULL_AUTH function does nothing, and can be selected to indicate
|
||||||
|
* that authentication should not be performed.
|
||||||
|
*/
|
||||||
|
#define SRTP_NULL_AUTH 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HMAC-SHA1
|
||||||
|
*
|
||||||
|
* SRTP_HMAC_SHA1 implements the Hash-based MAC using the NIST Secure
|
||||||
|
* Hash Algorithm version 1 (SHA1).
|
||||||
|
*/
|
||||||
|
#define SRTP_HMAC_SHA1 3
|
||||||
|
|
||||||
|
#endif /* SRTP_CRYPTO_TYPES_H */
|
1747
Android/app/src/main/cpp/include/srtp2/srtp.h
Normal file
1747
Android/app/src/main/cpp/include/srtp2/srtp.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String sd_dir = Environment.getExternalStoragePublicDirectory("").toString();
|
String sd_dir = Environment.getExternalStoragePublicDirectory("zlmediakit").toString();
|
||||||
if(permissionSuccess){
|
if(permissionSuccess){
|
||||||
Toast.makeText(this,"你可以修改配置文件再启动:" + sd_dir + "/zlmediakit.ini" ,Toast.LENGTH_LONG).show();
|
Toast.makeText(this,"你可以修改配置文件再启动:" + sd_dir + "/zlmediakit.ini" ,Toast.LENGTH_LONG).show();
|
||||||
Toast.makeText(this,"SSL证书请放置在:" + sd_dir + "/zlmediakit.pem" ,Toast.LENGTH_LONG).show();
|
Toast.makeText(this,"SSL证书请放置在:" + sd_dir + "/zlmediakit.pem" ,Toast.LENGTH_LONG).show();
|
||||||
|
BIN
Android/app/src/main/jnilibs/arm64-v8a/libsrtp2.a
Normal file
BIN
Android/app/src/main/jnilibs/arm64-v8a/libsrtp2.a
Normal file
Binary file not shown.
BIN
Android/app/src/main/jnilibs/arm64-v8a/libsrtp2.so
Normal file
BIN
Android/app/src/main/jnilibs/arm64-v8a/libsrtp2.so
Normal file
Binary file not shown.
@ -310,6 +310,7 @@ int start_main(int argc,char *argv[]) {
|
|||||||
#endif//defined(ENABLE_RTPPROXY)
|
#endif//defined(ENABLE_RTPPROXY)
|
||||||
|
|
||||||
#if defined(ENABLE_WEBRTC)
|
#if defined(ENABLE_WEBRTC)
|
||||||
|
InfoL << "已启动webrtc";
|
||||||
auto rtcSrv_tcp = std::make_shared<TcpServer>();
|
auto rtcSrv_tcp = std::make_shared<TcpServer>();
|
||||||
//webrtc udp服务器
|
//webrtc udp服务器
|
||||||
auto rtcSrv_udp = std::make_shared<UdpServer>();
|
auto rtcSrv_udp = std::make_shared<UdpServer>();
|
||||||
|
Loading…
Reference in New Issue
Block a user