Changeset 1723


Ignore:
Timestamp:
Jan 21, 2008 9:20:58 PM (11 years ago)
Author:
nanang
Message:

Ticket #452:

  • Applied preprocessor PJMEDIA_HAS_SRTP in PJMEDIA & PJSUA.
  • Applied preprocessor PJSUA_DEFAULT_USE_SRTP and PJSUA_DEFAULT_SRTP_SECURE_SIGNALING in PJSUA
Location:
pjproject/branches/users/nanang
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/users/nanang/pjmedia/include/pjmedia/config.h

    r1664 r1723  
    496496 
    497497 
     498/** 
     499 * SRTP Transport 
     500 * By default it is enabled. 
     501 */ 
     502#ifndef PJMEDIA_HAS_SRTP 
     503#   define PJMEDIA_HAS_SRTP                         1 
     504#endif 
     505 
    498506 
    499507/** 
  • pjproject/branches/users/nanang/pjmedia/include/pjmedia/errno.h

    r1710 r1723  
    5858 
    5959 
    60 /** 
     60#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
     61 
     62 /** 
    6163 * Mapping from LibSRTP error codes to pjmedia error space. 
    6264 */ 
     
    6971#define PJMEDIA_ERRNO_FROM_LIBSRTP(err)   (PJMEDIA_LIBSRTP_ERRNO_START+err) 
    7072 
     73#endif 
    7174 
    7275/************************************************************ 
     
    541544 
    542545 
     546#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    543547/************************************************************ 
    544548 * SRTP TRANSPORT ERRORS 
     
    594598 */ 
    595599#define PJMEDIA_SRTP_ESDPREQSECTP   (PJMEDIA_ERRNO_START+229)    /* 220229 */ 
     600 
     601#endif /* PJMEDIA_HAS_SRTP */ 
    596602 
    597603 
  • pjproject/branches/users/nanang/pjmedia/src/pjmedia/errno.c

    r1712 r1723  
    146146    PJ_BUILD_ERR( PJMEDIA_ESNDINSAMPLEFMT,  "Invalid sample format for sound device" ), 
    147147 
     148#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    148149    /* SRTP transport errors: */ 
    149150    PJ_BUILD_ERR( PJMEDIA_SRTP_ECRYPTONOTMATCH, "SRTP crypto-suite name not match the offerer tag" ), 
     
    157158    PJ_BUILD_ERR( PJMEDIA_SRTP_ESDPREQCRYPTO,   "SRTP crypto attribute required" ), 
    158159    PJ_BUILD_ERR( PJMEDIA_SRTP_ESDPREQSECTP,    "Secure transport required in SDP media descriptor" ) 
     160#endif 
     161 
    159162}; 
    160163 
  • pjproject/branches/users/nanang/pjmedia/src/pjmedia/transport_srtp.c

    r1722 r1723  
    2626#include <pj/os.h> 
    2727#include <pj/pool.h> 
     28 
     29#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
     30 
    2831#include <srtp.h> 
    2932 
     
    12281231    return pjmedia_transport_srtp_stop(tp); 
    12291232} 
     1233 
     1234#endif 
  • pjproject/branches/users/nanang/pjsip-apps/src/pjsua/pjsua_app.c

    r1720 r1723  
    121121    puts  ("SIP Account options:"); 
    122122    puts  ("  --use-ims           Enable 3GPP/IMS related settings on this account"); 
     123#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    123124    puts  ("  --use-srtp=N        Use SRTP N= 0: disabled, 1: optional, 2: mandatory"); 
     125#endif 
    124126    puts  ("  --registrar=url     Set the URL of registrar server"); 
    125127    puts  ("  --id=url            Set the URL of local ID (used in From header)"); 
     
    443445        { "rtp-port",   1, 0, OPT_RTP_PORT}, 
    444446        { "use-ice",    0, 0, OPT_USE_ICE}, 
     447#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    445448        { "use-srtp",   1, 0, OPT_USE_SRTP}, 
     449#endif 
    446450        { "add-codec",  1, 0, OPT_ADD_CODEC}, 
    447451        { "dis-codec",  1, 0, OPT_DIS_CODEC}, 
     
    474478    pjsua_acc_config *cur_acc; 
    475479    char *config_file = NULL; 
    476     int use_srtp = -1; 
    477480    unsigned i; 
    478481 
     
    800803            break; 
    801804 
     805#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    802806        case OPT_USE_SRTP: 
    803             use_srtp = my_atoi(pj_optarg); 
    804             if (!pj_isdigit(*pj_optarg) || use_srtp > 2) { 
     807            app_config.cfg.use_srtp = my_atoi(pj_optarg); 
     808            if (!pj_isdigit(*pj_optarg) || app_config.cfg.use_srtp > 2) { 
    805809                PJ_LOG(1,(THIS_FILE, "Invalid value for --use-srtp option")); 
    806810                return -1; 
    807811            } 
    808             app_config.cfg.use_srtp = use_srtp; 
    809             break; 
     812            break; 
     813#endif 
    810814 
    811815        case OPT_RTP_PORT: 
     
    10391043    for (i=0; i<cfg->acc_cnt; ++i) { 
    10401044        pjsua_acc_config *acfg = &cfg->acc_cfg[i]; 
    1041  
    1042         acfg->use_srtp = (pjmedia_srtp_use) use_srtp; 
    10431045 
    10441046        if (acfg->cred_info[acfg->cred_count].username.slen) 
     
    11261128    } 
    11271129 
     1130#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    11281131    /* SRTP */ 
    11291132    if (acc_cfg->use_srtp) { 
     
    11321135        pj_strcat2(result, line); 
    11331136    } 
     1137#endif 
    11341138 
    11351139    /* Proxy */ 
  • pjproject/branches/users/nanang/pjsip-apps/src/samples/streamutil.c

    r1718 r1723  
    5656 "  --send-only           Set stream direction to send only             \n" 
    5757 "  --recv-only           Set stream direction to recv only (default)   \n" 
     58 
     59#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    5860 "  --use-srtp[=NAME]     Enable SRTP with crypto suite NAME            \n" 
    5961 "                        e.g: AES_CM_128_HMAC_SHA1_80 (default),       \n" 
     
    6365 "  --srtp-tx-key         SRTP key for transmiting                      \n" 
    6466 "  --srtp-rx-key         SRTP key for receiving                        \n" 
     67#endif 
     68 
    6569 "\n" 
    6670; 
     
    133137                                  pj_uint16_t local_port, 
    134138                                  const pj_sockaddr_in *rem_addr, 
     139#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    135140                                  pj_bool_t use_srtp, 
    136141                                  const pj_str_t *crypto_suite, 
    137142                                  const pj_str_t *srtp_tx_key, 
    138143                                  const pj_str_t *srtp_rx_key, 
     144#endif 
    139145                                  pjmedia_stream **p_stream ) 
    140146{ 
    141147    pjmedia_stream_info info; 
    142148    pjmedia_transport *transport = NULL; 
     149    pj_status_t status; 
     150#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    143151    pjmedia_transport *srtp_tp = NULL; 
    144     pj_status_t status; 
     152#endif 
    145153 
    146154 
     
    174182        return status; 
    175183 
     184#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    176185    /* Check if SRTP enabled */ 
    177186    if (use_srtp) { 
     
    194203        if (status != PJ_SUCCESS) 
    195204            return status; 
    196     } 
     205 
     206        transport = srtp_tp; 
     207    } 
     208#endif 
    197209 
    198210    /* Now that the stream info is initialized, we can create the  
     
    201213 
    202214    status = pjmedia_stream_create( med_endpt, pool, &info,  
    203                                     (use_srtp?srtp_tp:transport),  
     215                                    transport,  
    204216                                    NULL, p_stream); 
    205217 
     
    239251    pj_status_t status;  
    240252 
     253#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    241254    /* SRTP variables */ 
    242255    pj_bool_t use_srtp = PJ_FALSE; 
     
    247260    pj_str_t  srtp_crypto_suite = {NULL, 0}; 
    248261    int tmp_key_len; 
     262#endif 
    249263 
    250264    /* Default values */ 
     
    266280        OPT_SEND_ONLY   = 's', 
    267281        OPT_RECV_ONLY   = 'i', 
     282#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    268283        OPT_USE_SRTP    = 'S', 
     284#endif 
    269285        OPT_SRTP_TX_KEY = 'x', 
    270286        OPT_SRTP_RX_KEY = 'y', 
     
    281297        { "send-only",      0, 0, OPT_SEND_ONLY }, 
    282298        { "recv-only",      0, 0, OPT_RECV_ONLY }, 
     299#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    283300        { "use-srtp",       2, 0, OPT_USE_SRTP }, 
    284301        { "srtp-tx-key",    1, 0, OPT_SRTP_TX_KEY }, 
    285302        { "srtp-rx-key",    1, 0, OPT_SRTP_RX_KEY }, 
     303#endif 
    286304        { "help",           0, 0, OPT_HELP }, 
    287305        { NULL, 0, 0, 0 }, 
     
    350368            break; 
    351369 
     370#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    352371        case OPT_USE_SRTP: 
    353372            use_srtp = PJ_TRUE; 
     
    368387            pj_strset(&srtp_rx_key, tmp_rx_key, tmp_key_len/2); 
    369388            break; 
     389#endif 
    370390 
    371391        case OPT_HELP: 
     
    394414    } 
    395415 
     416#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
     417    /* SRTP validation */ 
    396418    if (use_srtp) { 
    397         if (((dir & PJMEDIA_DIR_ENCODING) && !srtp_tx_key.slen) || 
    398             ((dir & PJMEDIA_DIR_DECODING) && !srtp_rx_key.slen)) 
     419        if (!srtp_tx_key.slen || !srtp_rx_key.slen) 
    399420        { 
    400421            printf("Error: Key for each SRTP stream direction must be set\n"); 
     
    402423        } 
    403424    } 
     425#endif 
    404426 
    405427    /* Must create a pool factory before we can allocate any memory. */ 
     
    448470    status = create_stream(pool, med_endpt, codec_info, dir, local_port,  
    449471                           &remote_addr,  
     472#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    450473                           use_srtp, &srtp_crypto_suite,  
    451474                           &srtp_tx_key, &srtp_rx_key, 
     475#endif 
    452476                           &stream); 
    453477    if (status != PJ_SUCCESS) 
  • pjproject/branches/users/nanang/pjsip/include/pjsua-lib/pjsua.h

    r1720 r1723  
    404404#endif 
    405405 
    406  
     406#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
     407 
     408/** 
     409 * Default value of SRTP mode usage. Valid values are PJMEDIA_SRTP_DISABLED,  
     410 * PJMEDIA_SRTP_OPTIONAL, and PJMEDIA_SRTP_MANDATORY. 
     411 */ 
     412#ifndef PJSUA_DEFAULT_USE_SRTP 
     413    #define PJSUA_DEFAULT_USE_SRTP  PJMEDIA_SRTP_DISABLED 
     414#endif 
     415 
     416/** 
     417 * Default value of secure signaling requirement for SRTP. 
     418 * Valid values are: 
     419 *      0: SRTP does not require secure signaling 
     420 *      1: SRTP requires secure transport such as TLS 
     421 *      2: SRTP requires secure end-to-end transport (SIPS) 
     422 */ 
     423#ifndef PJSUA_DEFAULT_SRTP_SECURE_SIGNALING 
     424    #define PJSUA_DEFAULT_SRTP_SECURE_SIGNALING 0 
     425#endif 
     426 
     427#endif 
    407428 
    408429/** 
     
    10351056    pj_str_t        user_agent; 
    10361057 
     1058#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    10371059    /** 
    10381060     * Specify default value of secure media transport usage.  
     
    10431065     * configuration (#pjsua_acc_config). 
    10441066     * 
    1045      * Default: 
    1046      *  PJMEDIA_SRTP_DISABLED 
     1067     * Default: #PJSUA_DEFAULT_USE_SRTP 
    10471068     */ 
    10481069    pjmedia_srtp_use    use_srtp; 
     
    10601081     * configuration (#pjsua_acc_config). 
    10611082     * 
    1062      * Default: 0 
     1083     * Default: #PJSUA_DEFAULT_SRTP_SECURE_SIGNALING 
    10631084     */ 
    10641085    int              srtp_secure_signaling; 
     1086#endif 
    10651087 
    10661088} pjsua_config; 
     
    20012023    pj_str_t         ka_data; 
    20022024 
     2025#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    20032026    /** 
    20042027     * Specify whether secure media transport should be used for this account. 
     
    20062029     * PJMEDIA_SRTP_MANDATORY. 
    20072030     * 
    2008      * Default: 
    2009      *  PJMEDIA_SRTP_DISABLED 
     2031     * Default: #PJSUA_DEFAULT_USE_SRTP 
    20102032     */ 
    20112033    pjmedia_srtp_use    use_srtp; 
     
    20202042     *  2: SRTP requires secure end-to-end transport (SIPS) 
    20212043     * 
    2022      * Default: 0 
     2044     * Default: #PJSUA_DEFAULT_SRTP_SECURE_SIGNALING 
    20232045     */ 
    20242046    int              srtp_secure_signaling; 
     2047#endif 
    20252048 
    20262049} pjsua_acc_config; 
  • pjproject/branches/users/nanang/pjsip/src/pjsua-lib/pjsua_call.c

    r1718 r1723  
    627627    acc_id = call->acc_id = pjsua_acc_find_for_incoming(rdata); 
    628628 
     629#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    629630    /* Get signaling security level, only when required by SRTP */ 
    630631    if (pjsua_var.acc[acc_id].cfg.srtp_secure_signaling < 2) { 
    631632        secure_level = PJSIP_TRANSPORT_IS_SECURE(rdata->tp_info.transport)!=0; 
    632     } else { 
     633    } else  
     634#endif 
     635 
     636    { 
    633637        char *uri; 
    634638        int uri_len; 
  • pjproject/branches/users/nanang/pjsip/src/pjsua-lib/pjsua_core.c

    r1720 r1723  
    8888    cfg->thread_cnt = 1; 
    8989    cfg->nat_type_in_sdp = 1; 
     90#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
     91    cfg->use_srtp = PJSUA_DEFAULT_USE_SRTP; 
     92    cfg->srtp_secure_signaling = PJSUA_DEFAULT_SRTP_SECURE_SIGNALING; 
     93#endif 
    9094} 
    9195 
     
    143147    cfg->ka_interval = 15; 
    144148    cfg->ka_data = pj_str("\r\n"); 
     149#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    145150    cfg->use_srtp = pjsua_var.ua_cfg.use_srtp; 
    146151    cfg->srtp_secure_signaling = pjsua_var.ua_cfg.srtp_secure_signaling; 
     152#endif 
    147153} 
    148154 
  • pjproject/branches/users/nanang/pjsip/src/pjsua-lib/pjsua_media.c

    r1720 r1723  
    750750{ 
    751751    pjsua_call *call = &pjsua_var.calls[call_id]; 
     752 
     753#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    752754    pjsua_acc *acc = &pjsua_var.acc[call->acc_id]; 
    753755    pjmedia_srtp_setting srtp_opt; 
    754756    pjmedia_transport *srtp; 
    755757    pj_status_t status; 
     758#endif 
    756759 
    757760    PJ_UNUSED_ARG(role); 
     
    767770    pjmedia_transport_media_stop(call->med_tp); 
    768771 
     772#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) 
    769773    /* Check if SRTP requires secure signaling */ 
    770774    if (acc->cfg.use_srtp != PJMEDIA_SRTP_DISABLED) { 
     
    787791    call->med_orig = call->med_tp; 
    788792    call->med_tp = srtp; 
     793#else 
     794    call->med_orig = call->med_tp; 
     795    PJ_UNUSED_ARG(security_level); 
     796#endif 
    789797 
    790798    return PJ_SUCCESS; 
Note: See TracChangeset for help on using the changeset viewer.