MCPcopy Create free account
hub / github.com/apache/httpd / ssl_var_lookup_ssl

Function ssl_var_lookup_ssl

modules/ssl/ssl_engine_vars.c:346–444  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

344}
345
346static char *ssl_var_lookup_ssl(apr_pool_t *p, SSLConnRec *sslconn,
347 request_rec *r, char *var)
348{
349 char *result;
350 X509 *xs;
351 STACK_OF(X509) *sk;
352 SSL *ssl;
353
354 result = NULL;
355
356 ssl = sslconn->ssl;
357 if (strlen(var) > 8 && strcEQn(var, "VERSION_", 8)) {
358 result = ssl_var_lookup_ssl_version(p, var+8);
359 }
360 else if (ssl != NULL && strcEQ(var, "PROTOCOL")) {
361 result = (char *)SSL_get_version(ssl);
362 }
363 else if (ssl != NULL && strcEQ(var, "SESSION_ID")) {
364 char buf[MODSSL_SESSION_ID_STRING_LEN];
365 SSL_SESSION *pSession = SSL_get_session(ssl);
366 if (pSession) {
367 IDCONST unsigned char *id;
368 unsigned int idlen;
369
370#ifdef OPENSSL_NO_SSL_INTERN
371 id = (unsigned char *)SSL_SESSION_get_id(pSession, &idlen);
372#else
373 id = pSession->session_id;
374 idlen = pSession->session_id_length;
375#endif
376
377 result = apr_pstrdup(p, modssl_SSL_SESSION_id2sz(id, idlen,
378 buf, sizeof(buf)));
379 }
380 }
381 else if(ssl != NULL && strcEQ(var, "SESSION_RESUMED")) {
382 if (SSL_session_reused(ssl) == 1)
383 result = "Resumed";
384 else
385 result = "Initial";
386 }
387 else if (ssl != NULL && strlen(var) >= 6 && strcEQn(var, "CIPHER", 6)) {
388 result = ssl_var_lookup_ssl_cipher(p, sslconn, var+6);
389 }
390 else if (ssl != NULL && strlen(var) > 18 && strcEQn(var, "CLIENT_CERT_CHAIN_", 18)) {
391 sk = SSL_get_peer_cert_chain(ssl);
392 result = ssl_var_lookup_ssl_cert_chain(p, sk, var+18);
393 }
394 else if (ssl != NULL && strcEQ(var, "CLIENT_CERT_RFC4523_CEA")) {
395 result = ssl_var_lookup_ssl_cert_rfc4523_cea(p, ssl);
396 }
397 else if (ssl != NULL && strcEQ(var, "CLIENT_VERIFY")) {
398 result = ssl_var_lookup_ssl_cert_verify(p, sslconn);
399 }
400 else if (ssl != NULL && strlen(var) > 7 && strcEQn(var, "CLIENT_", 7)) {
401 if ((xs = SSL_get_peer_certificate(ssl)) != NULL) {
402 result = ssl_var_lookup_ssl_cert(p, r, xs, var+7);
403 X509_free(xs);

Callers 2

expr_var_fnFunction · 0.85
ssl_var_lookupFunction · 0.85

Tested by

no test coverage detected