| 844 | } |
| 845 | |
| 846 | static char *ssl_var_lookup_ssl_cipher(apr_pool_t *p, SSLConnRec *sslconn, char *var) |
| 847 | { |
| 848 | char *result; |
| 849 | BOOL resdup; |
| 850 | int usekeysize, algkeysize; |
| 851 | SSL *ssl; |
| 852 | |
| 853 | result = NULL; |
| 854 | resdup = TRUE; |
| 855 | |
| 856 | ssl = sslconn->ssl; |
| 857 | ssl_var_lookup_ssl_cipher_bits(ssl, &usekeysize, &algkeysize); |
| 858 | |
| 859 | if (ssl && strEQ(var, "")) { |
| 860 | MODSSL_SSL_CIPHER_CONST SSL_CIPHER *cipher = SSL_get_current_cipher(ssl); |
| 861 | result = (cipher != NULL ? (char *)SSL_CIPHER_get_name(cipher) : NULL); |
| 862 | } |
| 863 | else if (strcEQ(var, "_EXPORT")) |
| 864 | result = (usekeysize < 56 ? "true" : "false"); |
| 865 | else if (strcEQ(var, "_USEKEYSIZE")) { |
| 866 | result = apr_itoa(p, usekeysize); |
| 867 | resdup = FALSE; |
| 868 | } |
| 869 | else if (strcEQ(var, "_ALGKEYSIZE")) { |
| 870 | result = apr_itoa(p, algkeysize); |
| 871 | resdup = FALSE; |
| 872 | } |
| 873 | |
| 874 | if (result != NULL && resdup) |
| 875 | result = apr_pstrdup(p, result); |
| 876 | return result; |
| 877 | } |
| 878 | |
| 879 | static void ssl_var_lookup_ssl_cipher_bits(SSL *ssl, int *usekeysize, int *algkeysize) |
| 880 | { |
no test coverage detected