示例#1
0
zrtp_state_info jzrtp_getInfoFromTransport(pjmedia_transport* tp){
	PJSUA_LOCK();
	struct jzrtp_allContext ctxt;
	ctxt.zrtpContext = pjmedia_transport_zrtp_getZrtpContext(tp);
	ctxt.cbUserData = (zrtp_cb_user_data*) pjmedia_transport_zrtp_getUserData(tp);
	zrtp_state_info info =  jzrtp_getInfoFromContext(ctxt);
	PJSUA_UNLOCK();
	return info;
}
示例#2
0
struct jzrtp_allContext jzrtp_getContext(pjsua_call_id call_id) {

	pjsua_call *call;
	pj_status_t status;
	unsigned i;
	pjmedia_transport_info tp_info;

	struct jzrtp_allContext result;
	result.cbUserData = NULL;
	result.zrtpContext = NULL;

	PJ_ASSERT_RETURN(call_id>=0 && call_id<(int)pjsua_var.ua_cfg.max_calls,
			NULL);


	if (pjsua_call_has_media(call_id)) {
		call = &pjsua_var.calls[call_id];
		for (i = 0; i < call->med_cnt; ++i) {
			pjsua_call_media *call_med = &call->media[i];
			if (call_med->tp && call_med->type == PJMEDIA_TYPE_AUDIO) {
				pjmedia_transport_info tp_info;

				pjmedia_transport_info_init(&tp_info);
				pjmedia_transport_get_info(call_med->tp, &tp_info);
				if (tp_info.specific_info_cnt > 0) {
					unsigned j;
					for (j = 0; j < tp_info.specific_info_cnt; ++j) {
						if (tp_info.spc_info[j].type
								== PJMEDIA_TRANSPORT_TYPE_ZRTP) {
							result.zrtpContext = pjmedia_transport_zrtp_getZrtpContext(call_med->tp);
							result.cbUserData = (zrtp_cb_user_data*) pjmedia_transport_zrtp_getUserData(call_med->tp);
						}
					}
				}
			}
		}
	}
	return result;
}
示例#3
0
pj_str_t jzrtp_getInfo(pjmedia_transport* tp) {
    pj_str_t result;

    char msg[512];

    ZrtpContext *ctx = pjmedia_transport_zrtp_getZrtpContext(tp);
    int32_t state = zrtp_inState(ctx, SecureState);

    zrtp_cb_user_data* zrtp_cb_data = (zrtp_cb_user_data*) pjmedia_transport_zrtp_getUserData(tp);

    if (state) {
        pj_ansi_snprintf(msg, sizeof(msg), "ZRTP - %s\n%.*s\n%.*s", "OK",
                         zrtp_cb_data->sas.slen, zrtp_cb_data->sas.ptr,
                         zrtp_cb_data->cipher.slen, zrtp_cb_data->cipher.ptr);
    } else {
        pj_ansi_snprintf(msg, sizeof(msg), "");
    }
    pj_strdup2_with_null(css_var.pool, &result, msg);


    PJ_LOG(4, (THIS_FILE, "ZRTP getInfos : %s", msg));

    return result;
}