Skip to content

Commit

Permalink
Fixed #1763: Add pj_ssl_cipher_id() API
Browse files Browse the repository at this point in the history
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4829 74dad513-b988-da41-8d7b-12977e46ad98
  • Loading branch information
ming committed Apr 30, 2014
1 parent c8eddde commit 2615136
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 1 deletion.
7 changes: 6 additions & 1 deletion pjlib/include/pj/ssl_sock.h
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,9 @@ PJ_DECL(pj_status_t) pj_ssl_cert_get_verify_status_strings(
*/
typedef enum pj_ssl_cipher {

/* Unsupported cipher */
PJ_TLS_UNKNOWN_CIPHER = -1,

/* NULL */
PJ_TLS_NULL_WITH_NULL_NULL = 0x00000000,

Expand Down Expand Up @@ -353,7 +356,9 @@ PJ_DECL(const char*) pj_ssl_cipher_name(pj_ssl_cipher cipher);


/**
* Get cipher ID from cipher name string.
* Get cipher ID from cipher name string. Note that on different backends
* (e.g. OpenSSL or Symbian implementation), cipher names may not be
* equivalent for the same cipher ID.
*
* @param cipher_name The cipher name string.
*
Expand Down
18 changes: 18 additions & 0 deletions pjlib/src/pj/ssl_sock_ossl.c
Original file line number Diff line number Diff line change
Expand Up @@ -1888,6 +1888,24 @@ PJ_DEF(const char*) pj_ssl_cipher_name(pj_ssl_cipher cipher)
return NULL;
}

/* Get cipher identifier */
PJ_DEF(pj_ssl_cipher) pj_ssl_cipher_id(const char *cipher_name)
{
unsigned i;

if (openssl_cipher_num == 0) {
init_openssl();
shutdown_openssl();
}

for (i = 0; i < openssl_cipher_num; ++i) {
if (!pj_ansi_stricmp(openssl_ciphers[i].name, cipher_name))
return openssl_ciphers[i].id;
}

return PJ_TLS_UNKNOWN_CIPHER;
}

/* Check if the specified cipher is supported by SSL/TLS backend. */
PJ_DEF(pj_bool_t) pj_ssl_cipher_is_supported(pj_ssl_cipher cipher)
{
Expand Down
21 changes: 21 additions & 0 deletions pjlib/src/pj/ssl_sock_symbian.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ typedef struct cipher_name_t {
/* Cipher name constants */
static cipher_name_t cipher_names[] =
{
{PJ_TLS_UNKNOWN_CIPHER, "UNKNOWN"},
{PJ_TLS_NULL_WITH_NULL_NULL, "NULL"},

/* TLS/SSLv3 */
Expand Down Expand Up @@ -759,6 +760,26 @@ PJ_DEF(const char*) pj_ssl_cipher_name(pj_ssl_cipher cipher)
}


/* Get cipher identifier */
PJ_DEF(pj_ssl_cipher) pj_ssl_cipher_id(const char *cipher_name)
{
unsigned i;

if (ciphers_num_ == 0) {
pj_ssl_cipher c[1];
i = 0;
pj_ssl_cipher_get_availables(c, &i);
}

for (i = 0; i < ciphers_num_; ++i) {
if (!pj_ansi_stricmp(ciphers_[i].name, cipher_name))
return ciphers_[i].id;
}

return PJ_TLS_UNKNOWN_CIPHER;
}


/* Check if the specified cipher is supported by SSL/TLS backend. */
PJ_DEF(pj_bool_t) pj_ssl_cipher_is_supported(pj_ssl_cipher cipher)
{
Expand Down

0 comments on commit 2615136

Please sign in to comment.