Ignore:
Timestamp:
Jun 3, 2017 9:22:34 AM (7 years ago)
Author:
nanang
Message:

Re #2018: Initial version of DTLS-SRTP implementation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/include/pjmedia/transport_srtp.h

    r5412 r5597  
    131131 
    132132/** 
     133 * This enumeration specifies SRTP keying methods. 
     134 */ 
     135typedef enum pjmedia_srtp_keying_method 
     136{ 
     137    /** 
     138     * Session Description (SDES). 
     139     */ 
     140    PJMEDIA_SRTP_KEYING_SDES, 
     141 
     142    /** 
     143     * DTLS-SRTP. 
     144     */ 
     145    PJMEDIA_SRTP_KEYING_DTLS_SRTP, 
     146 
     147    /** 
     148     * Number of keying method. 
     149     */ 
     150    PJMEDIA_SRTP_KEYINGS_COUNT 
     151 
     152} pjmedia_srtp_keying_method; 
     153 
     154 
     155/** 
     156 * Structure containing callbacks to receive SRTP notifications. 
     157 */ 
     158typedef struct pjmedia_srtp_cb 
     159{ 
     160    /** 
     161     * This callback will be called when SRTP negotiation completes. This 
     162     * callback will be invoked when the negotiation is done outside of 
     163     * the SDP signalling, such as in DTLS-SRTP. 
     164     * 
     165     * @param tp        PJMEDIA SRTP transport. 
     166     * @param status    Operation status. 
     167     */ 
     168    void    (*on_srtp_nego_complete)(pjmedia_transport *tp, 
     169                                     pj_status_t status); 
     170 
     171} pjmedia_srtp_cb; 
     172 
     173 
     174/** 
    133175 * Settings to be given when creating SRTP transport. Application should call 
    134176 * #pjmedia_srtp_setting_default() to initialize this structure with its  
     
    140182     * Specify the usage policy. Default is PJMEDIA_SRTP_OPTIONAL. 
    141183     */ 
    142     pjmedia_srtp_use            use; 
     184    pjmedia_srtp_use             use; 
    143185 
    144186    /** 
     
    146188     * when it is destroyed. Default: PJ_TRUE. 
    147189     */ 
    148     pj_bool_t                   close_member_tp; 
     190    pj_bool_t                    close_member_tp; 
    149191 
    150192    /** 
    151193     * Specify the number of crypto suite settings. 
    152194     */ 
    153     unsigned                    crypto_count; 
     195    unsigned                     crypto_count; 
    154196 
    155197    /** 
    156198     * Specify individual crypto suite setting. 
    157      */ 
    158     pjmedia_srtp_crypto         crypto[PJMEDIA_SRTP_MAX_CRYPTOS]; 
     199     * Notes for DTLS-SRTP keying: 
     200     *  - Currently only supports these cryptos: AES_CM_128_HMAC_SHA1_80, 
     201     *    AES_CM_128_HMAC_SHA1_32, AEAD_AES_256_GCM, and AEAD_AES_128_GCM. 
     202     *  - SRTP key is not configurable. 
     203     */ 
     204    pjmedia_srtp_crypto          crypto[PJMEDIA_SRTP_MAX_CRYPTOS]; 
     205 
     206    /** 
     207     * Specify the number of enabled keying methods. 
     208     * Default is PJMEDIA_SRTP_MAX_KEYINGS (all enabled). 
     209     */ 
     210    unsigned                     keying_count; 
     211 
     212    /** 
     213     * Specify enabled keying methods and its priority order. Keying method 
     214     * with higher priority will be given earlier chance to process the SDP, 
     215     * for example as currently only one keying is supported in the SDP offer, 
     216     * keying with first priority will be likely used in the SDP offer. 
     217     * 
     218     * Default is that all supported keying methods (i.e: currently SDES and 
     219     * DTLS-SRTP) will be enabled and with priority order: SDES, DTLS-SRTP. 
     220     */ 
     221    pjmedia_srtp_keying_method   keying[PJMEDIA_SRTP_KEYINGS_COUNT]; 
     222 
     223    /** 
     224     * Specify SRTP callback. 
     225     */ 
     226    pjmedia_srtp_cb              cb; 
     227 
     228    /** 
     229     * Specify SRTP transport user data. 
     230     */ 
     231    void                        *user_data; 
    159232 
    160233} pjmedia_srtp_setting; 
Note: See TracChangeset for help on using the changeset viewer.