comparison src/event/ngx_event_openssl.c @ 2123:9697407e9ecb

*) ssl_verify_client ask *) test ssl_client_certificate for ssl_verify_client *) $ssl_client_cert adds TAB before each line except first one *) $ssl_client_raw_cert contains certificate as is
author Igor Sysoev <igor@sysoev.ru>
date Tue, 29 Jul 2008 14:29:02 +0000
parents b4085596a7e6
children 05e8de8fcfbb
comparison
equal deleted inserted replaced
2122:d090fa684433 2123:9697407e9ecb
1882 return NGX_OK; 1882 return NGX_OK;
1883 } 1883 }
1884 1884
1885 1885
1886 ngx_int_t 1886 ngx_int_t
1887 ngx_ssl_get_certificate(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s) 1887 ngx_ssl_get_raw_certificate(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
1888 { 1888 {
1889 size_t len; 1889 size_t len;
1890 BIO *bio; 1890 BIO *bio;
1891 X509 *cert; 1891 X509 *cert;
1892 1892
1928 1928
1929 BIO_free(bio); 1929 BIO_free(bio);
1930 X509_free(cert); 1930 X509_free(cert);
1931 1931
1932 return NGX_ERROR; 1932 return NGX_ERROR;
1933 }
1934
1935
1936 ngx_int_t
1937 ngx_ssl_get_certificate(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
1938 {
1939 u_char *p;
1940 size_t len;
1941 ngx_uint_t i;
1942 ngx_str_t cert;
1943
1944 if (ngx_ssl_get_raw_certificate(c, pool, &cert) != NGX_OK) {
1945 return NGX_ERROR;
1946 }
1947
1948 if (cert.len == 0) {
1949 s->len = 0;
1950 return NGX_OK;
1951 }
1952
1953 len = cert.len - 1;
1954
1955 for (i = 0; i < cert.len - 1; i++) {
1956 if (cert.data[i] == LF) {
1957 len++;
1958 }
1959 }
1960
1961 s->len = len;
1962 s->data = ngx_pnalloc(pool, len);
1963 if (s->data == NULL) {
1964 return NGX_ERROR;
1965 }
1966
1967 p = s->data;
1968
1969 for (i = 0; i < len; i++) {
1970 *p++ = cert.data[i];
1971 if (cert.data[i] == LF) {
1972 *p++ = '\t';
1973 }
1974 }
1975
1976 return NGX_OK;
1933 } 1977 }
1934 1978
1935 1979
1936 ngx_int_t 1980 ngx_int_t
1937 ngx_ssl_get_subject_dn(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s) 1981 ngx_ssl_get_subject_dn(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)