forked from Mirrors/freeswitch
2664e0ee70
Remove some old tests and implement a few test-cases to emulate zrtp enrollment and sasrelay logic Modified-by: Travis Cross <tc@traviscross.com> Signed-off-by: Travis Cross <tc@traviscross.com>
131 lines
4.9 KiB
C
131 lines
4.9 KiB
C
/*
|
|
* libZRTP SDK library, implements the ZRTP secure VoIP protocol.
|
|
* Copyright (c) 2006-2009 Philip R. Zimmermann. All rights reserved.
|
|
* Contact: http://philzimmermann.com
|
|
* For licensing and other legal details, see the file zrtp_legal.c.
|
|
*
|
|
* Viktor Krykun <v.krikun at zfoneproject.com>
|
|
*/
|
|
|
|
#include "zrtp.h"
|
|
|
|
/** libzrtp test elements identifier */
|
|
typedef uint32_t zrtp_test_id_t;
|
|
|
|
/** Defines constant for unknown test element identifier */
|
|
#define ZRTP_TEST_UNKNOWN_ID 0
|
|
|
|
/** Default lengths for libzrtp test string buffers */
|
|
#define ZRTP_TEST_STR_LEN 128
|
|
|
|
/** libzrtp test endpoint configuration */
|
|
typedef struct {
|
|
zrtp_config_t zrtp; /** libzrtp global configuration parameters */
|
|
unsigned generate_traffic; /** switch On to emulate RTP/RTCP traffic generation. Off by default. */
|
|
} zrtp_test_endpoint_cfg_t;
|
|
|
|
/** ZRTP test session parameters*/
|
|
typedef struct {
|
|
zrtp_profile_t zrtp; /** libzrtp session parameters */
|
|
unsigned streams_count; /** number of zrtp streams to be attached to the session */
|
|
zrtp_signaling_role_t role; /** signaling role, default is ZRTP_SIGNALING_ROLE_UNKNOWN */
|
|
unsigned is_enrollment; /** true if enrollment session should be created */
|
|
} zrtp_test_session_cfg_t;
|
|
|
|
/** ZRTP test stream info */
|
|
typedef struct {
|
|
zrtp_stream_info_t zrtp; /** libzrtp stream info */
|
|
unsigned zrtp_events_queueu[128]; /** list of received zrtp events*/
|
|
unsigned zrtp_events_count; /** number of received events */
|
|
} zrtp_test_stream_info_t;
|
|
|
|
/** ZRTP test session state snapshot */
|
|
typedef struct {
|
|
zrtp_session_info_t zrtp; /** libzrtp session info*/
|
|
zrtp_test_stream_info_t streams[ZRTP_MAX_STREAMS_PER_SESSION]; /** array of attached streams info */
|
|
unsigned streams_count; /** number streams attached to the session */
|
|
} zrtp_test_session_info_t;
|
|
|
|
/** *ZRTP test channel state */
|
|
typedef struct {
|
|
zrtp_test_stream_info_t left; /** one-leg zrtp stream */
|
|
zrtp_test_stream_info_t right; /** second-leg zrtp stream */
|
|
unsigned char is_secure; /** enabled when both streams in the channel are secure */
|
|
} zrtp_test_channel_info_t;
|
|
|
|
|
|
/**
|
|
* Initialize zrtp test endpoint configuration with default values
|
|
* @param cfg - endpoint config to initialize
|
|
*/
|
|
void zrtp_test_endpoint_config_defaults(zrtp_test_endpoint_cfg_t *cfg);
|
|
|
|
/**
|
|
* ZRTP test endpoint constructor
|
|
* One endpoint is created, it starts processing threads and ready to emulate ZRTP exchange.
|
|
*
|
|
* @param cfg - endpoint configuration
|
|
* @param name - endpoint name for debug purposes and cache naming, e.h "Alice", "Bob".
|
|
* @param id - just created endpoint identifier will be placed here
|
|
*
|
|
* @return zrtp_status_ok on success or some of zrtp_status_t error codes on failure
|
|
*/
|
|
zrtp_status_t zrtp_test_endpoint_create(zrtp_test_endpoint_cfg_t *cfg,
|
|
const char *name,
|
|
zrtp_test_id_t *id);
|
|
|
|
/**
|
|
* ZRTP test endpoint destructor
|
|
* zrtp_test_endpoint_destroy() stops processing threads and release all
|
|
* recurses allocated in zrtp_test_endpoint_create().
|
|
*
|
|
* @param id - endpoint identifier
|
|
* @return zrtp_status_ok on success or some of zrtp_status_t error codes on failure
|
|
*/
|
|
zrtp_status_t zrtp_test_endpoint_destroy(zrtp_test_id_t id);
|
|
|
|
/**
|
|
* Enables test session config with default values
|
|
* @param cfg - session config for initialization
|
|
*/
|
|
void zrtp_test_session_config_defaults(zrtp_test_session_cfg_t *cfg);
|
|
|
|
/**
|
|
* Create zrtp test session
|
|
*
|
|
* @param endpoint - test endpoint creating endpoint should belong to
|
|
* @param cfg - session parameters
|
|
* @param id - created session identifier will be placed here
|
|
* @return zrtp_status_ok on success or some of zrtp_status_t error codes on failure
|
|
*/
|
|
zrtp_status_t zrtp_test_session_create(zrtp_test_id_t endpoint,
|
|
zrtp_test_session_cfg_t *cfg,
|
|
zrtp_test_id_t *id);
|
|
|
|
zrtp_status_t zrtp_test_session_destroy(zrtp_test_id_t id);
|
|
|
|
zrtp_status_t zrtp_test_session_get(zrtp_test_id_t id, zrtp_test_session_info_t *info);
|
|
|
|
/**
|
|
* Get stream Id by it's index in zrtp session
|
|
*
|
|
* @param session_id - zrtp test session id where needed stream should be taken
|
|
* @param idx - stream index
|
|
* @return found stream id, or ZRTP_TEST_UNKNOWN_ID if idex is out of stream array range
|
|
*/
|
|
zrtp_test_id_t zrtp_test_session_get_stream_by_idx(zrtp_test_id_t session_id, unsigned idx);
|
|
|
|
zrtp_status_t zrtp_test_stream_get(zrtp_test_id_t id, zrtp_test_stream_info_t *info);
|
|
|
|
zrtp_status_t zrtp_test_channel_create(zrtp_test_id_t left_stream, zrtp_test_id_t right_stream, zrtp_test_id_t *id);
|
|
zrtp_status_t zrtp_test_channel_create2(zrtp_test_id_t left_session, zrtp_test_id_t right_session, unsigned stream_idx, zrtp_test_id_t *id);
|
|
zrtp_status_t zrtp_test_channel_destroy(zrtp_test_id_t id);
|
|
zrtp_status_t zrtp_test_channel_start(zrtp_test_id_t id);
|
|
zrtp_status_t zrtp_test_channel_get(zrtp_test_id_t id, zrtp_test_channel_info_t *info);
|
|
|
|
zrtp_stream_t *zrtp_stream_for_test_stream(zrtp_test_id_t stream_id);
|
|
|
|
unsigned zrtp_stream_did_event_receive(zrtp_test_id_t stream_id, unsigned event);
|
|
|
|
|