Lines Matching refs:rctx

66     OCSP_REQ_CTX *rctx = OPENSSL_zalloc(sizeof(*rctx));  in OCSP_REQ_CTX_new()  local
68 if (rctx == NULL) in OCSP_REQ_CTX_new()
70 rctx->state = OHS_ERROR; in OCSP_REQ_CTX_new()
71 rctx->max_resp_len = OCSP_MAX_RESP_LENGTH; in OCSP_REQ_CTX_new()
72 rctx->mem = BIO_new(BIO_s_mem()); in OCSP_REQ_CTX_new()
73 rctx->io = io; in OCSP_REQ_CTX_new()
75 rctx->iobuflen = maxline; in OCSP_REQ_CTX_new()
77 rctx->iobuflen = OCSP_MAX_LINE_LEN; in OCSP_REQ_CTX_new()
78 rctx->iobuf = OPENSSL_malloc(rctx->iobuflen); in OCSP_REQ_CTX_new()
79 if (rctx->iobuf == NULL || rctx->mem == NULL) { in OCSP_REQ_CTX_new()
80 OCSP_REQ_CTX_free(rctx); in OCSP_REQ_CTX_new()
83 return rctx; in OCSP_REQ_CTX_new()
86 void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx) in OCSP_REQ_CTX_free() argument
88 if (!rctx) in OCSP_REQ_CTX_free()
90 BIO_free(rctx->mem); in OCSP_REQ_CTX_free()
91 OPENSSL_free(rctx->iobuf); in OCSP_REQ_CTX_free()
92 OPENSSL_free(rctx); in OCSP_REQ_CTX_free()
95 BIO *OCSP_REQ_CTX_get0_mem_bio(OCSP_REQ_CTX *rctx) in OCSP_REQ_CTX_get0_mem_bio() argument
97 return rctx->mem; in OCSP_REQ_CTX_get0_mem_bio()
100 void OCSP_set_max_response_length(OCSP_REQ_CTX *rctx, unsigned long len) in OCSP_set_max_response_length() argument
103 rctx->max_resp_len = OCSP_MAX_RESP_LENGTH; in OCSP_set_max_response_length()
105 rctx->max_resp_len = len; in OCSP_set_max_response_length()
108 int OCSP_REQ_CTX_i2d(OCSP_REQ_CTX *rctx, const ASN1_ITEM *it, ASN1_VALUE *val) in OCSP_REQ_CTX_i2d() argument
114 if (BIO_printf(rctx->mem, req_hdr, reqlen) <= 0) in OCSP_REQ_CTX_i2d()
116 if (ASN1_item_i2d_bio(it, rctx->mem, val) <= 0) in OCSP_REQ_CTX_i2d()
118 rctx->state = OHS_ASN1_WRITE_INIT; in OCSP_REQ_CTX_i2d()
122 int OCSP_REQ_CTX_nbio_d2i(OCSP_REQ_CTX *rctx, in OCSP_REQ_CTX_nbio_d2i() argument
128 rv = OCSP_REQ_CTX_nbio(rctx); in OCSP_REQ_CTX_nbio_d2i()
132 len = BIO_get_mem_data(rctx->mem, &p); in OCSP_REQ_CTX_nbio_d2i()
135 rctx->state = OHS_ERROR; in OCSP_REQ_CTX_nbio_d2i()
141 int OCSP_REQ_CTX_http(OCSP_REQ_CTX *rctx, const char *op, const char *path) in OCSP_REQ_CTX_http() argument
148 if (BIO_printf(rctx->mem, http_hdr, op, path) <= 0) in OCSP_REQ_CTX_http()
150 rctx->state = OHS_HTTP_HEADER; in OCSP_REQ_CTX_http()
154 int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req) in OCSP_REQ_CTX_set1_req() argument
156 return OCSP_REQ_CTX_i2d(rctx, ASN1_ITEM_rptr(OCSP_REQUEST), in OCSP_REQ_CTX_set1_req()
160 int OCSP_REQ_CTX_add1_header(OCSP_REQ_CTX *rctx, in OCSP_REQ_CTX_add1_header() argument
165 if (BIO_puts(rctx->mem, name) <= 0) in OCSP_REQ_CTX_add1_header()
168 if (BIO_write(rctx->mem, ": ", 2) != 2) in OCSP_REQ_CTX_add1_header()
170 if (BIO_puts(rctx->mem, value) <= 0) in OCSP_REQ_CTX_add1_header()
173 if (BIO_write(rctx->mem, "\r\n", 2) != 2) in OCSP_REQ_CTX_add1_header()
175 rctx->state = OHS_HTTP_HEADER; in OCSP_REQ_CTX_add1_header()
183 OCSP_REQ_CTX *rctx = NULL; in OCSP_sendreq_new() local
184 rctx = OCSP_REQ_CTX_new(io, maxline); in OCSP_sendreq_new()
185 if (rctx == NULL) in OCSP_sendreq_new()
188 if (!OCSP_REQ_CTX_http(rctx, "POST", path)) in OCSP_sendreq_new()
191 if (req && !OCSP_REQ_CTX_set1_req(rctx, req)) in OCSP_sendreq_new()
194 return rctx; in OCSP_sendreq_new()
197 OCSP_REQ_CTX_free(rctx); in OCSP_sendreq_new()
272 int OCSP_REQ_CTX_nbio(OCSP_REQ_CTX *rctx) in OCSP_REQ_CTX_nbio() argument
277 if (!(rctx->state & OHS_NOREAD)) { in OCSP_REQ_CTX_nbio()
278 n = BIO_read(rctx->io, rctx->iobuf, rctx->iobuflen); in OCSP_REQ_CTX_nbio()
281 if (BIO_should_retry(rctx->io)) in OCSP_REQ_CTX_nbio()
288 if (BIO_write(rctx->mem, rctx->iobuf, n) != n) in OCSP_REQ_CTX_nbio()
292 switch (rctx->state) { in OCSP_REQ_CTX_nbio()
295 if (BIO_write(rctx->mem, "\r\n", 2) != 2) { in OCSP_REQ_CTX_nbio()
296 rctx->state = OHS_ERROR; in OCSP_REQ_CTX_nbio()
299 rctx->state = OHS_ASN1_WRITE_INIT; in OCSP_REQ_CTX_nbio()
303 rctx->asn1_len = BIO_get_mem_data(rctx->mem, NULL); in OCSP_REQ_CTX_nbio()
304 rctx->state = OHS_ASN1_WRITE; in OCSP_REQ_CTX_nbio()
308 n = BIO_get_mem_data(rctx->mem, &p); in OCSP_REQ_CTX_nbio()
310 i = BIO_write(rctx->io, p + (n - rctx->asn1_len), rctx->asn1_len); in OCSP_REQ_CTX_nbio()
313 if (BIO_should_retry(rctx->io)) in OCSP_REQ_CTX_nbio()
315 rctx->state = OHS_ERROR; in OCSP_REQ_CTX_nbio()
319 rctx->asn1_len -= i; in OCSP_REQ_CTX_nbio()
321 if (rctx->asn1_len > 0) in OCSP_REQ_CTX_nbio()
324 rctx->state = OHS_ASN1_FLUSH; in OCSP_REQ_CTX_nbio()
326 (void)BIO_reset(rctx->mem); in OCSP_REQ_CTX_nbio()
331 i = BIO_flush(rctx->io); in OCSP_REQ_CTX_nbio()
334 rctx->state = OHS_FIRSTLINE; in OCSP_REQ_CTX_nbio()
338 if (BIO_should_retry(rctx->io)) in OCSP_REQ_CTX_nbio()
341 rctx->state = OHS_ERROR; in OCSP_REQ_CTX_nbio()
358 n = BIO_get_mem_data(rctx->mem, &p); in OCSP_REQ_CTX_nbio()
360 if (n >= rctx->iobuflen) { in OCSP_REQ_CTX_nbio()
361 rctx->state = OHS_ERROR; in OCSP_REQ_CTX_nbio()
366 n = BIO_gets(rctx->mem, (char *)rctx->iobuf, rctx->iobuflen); in OCSP_REQ_CTX_nbio()
369 if (BIO_should_retry(rctx->mem)) in OCSP_REQ_CTX_nbio()
371 rctx->state = OHS_ERROR; in OCSP_REQ_CTX_nbio()
376 if (n == rctx->iobuflen) { in OCSP_REQ_CTX_nbio()
377 rctx->state = OHS_ERROR; in OCSP_REQ_CTX_nbio()
382 if (rctx->state == OHS_FIRSTLINE) { in OCSP_REQ_CTX_nbio()
383 if (parse_http_line1((char *)rctx->iobuf)) { in OCSP_REQ_CTX_nbio()
384 rctx->state = OHS_HEADERS; in OCSP_REQ_CTX_nbio()
387 rctx->state = OHS_ERROR; in OCSP_REQ_CTX_nbio()
392 for (p = rctx->iobuf; *p; p++) { in OCSP_REQ_CTX_nbio()
399 rctx->state = OHS_ASN1_HEADER; in OCSP_REQ_CTX_nbio()
411 n = BIO_get_mem_data(rctx->mem, &p); in OCSP_REQ_CTX_nbio()
417 rctx->state = OHS_ERROR; in OCSP_REQ_CTX_nbio()
432 rctx->state = OHS_ERROR; in OCSP_REQ_CTX_nbio()
436 rctx->asn1_len = 0; in OCSP_REQ_CTX_nbio()
438 rctx->asn1_len <<= 8; in OCSP_REQ_CTX_nbio()
439 rctx->asn1_len |= *p++; in OCSP_REQ_CTX_nbio()
442 if (rctx->asn1_len > rctx->max_resp_len) { in OCSP_REQ_CTX_nbio()
443 rctx->state = OHS_ERROR; in OCSP_REQ_CTX_nbio()
447 rctx->asn1_len += n + 2; in OCSP_REQ_CTX_nbio()
449 rctx->asn1_len = *p + 2; in OCSP_REQ_CTX_nbio()
451 rctx->state = OHS_ASN1_CONTENT; in OCSP_REQ_CTX_nbio()
456 n = BIO_get_mem_data(rctx->mem, NULL); in OCSP_REQ_CTX_nbio()
457 if (n < (int)rctx->asn1_len) in OCSP_REQ_CTX_nbio()
460 rctx->state = OHS_DONE; in OCSP_REQ_CTX_nbio()
472 int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx) in OCSP_sendreq_nbio() argument
474 return OCSP_REQ_CTX_nbio_d2i(rctx, in OCSP_sendreq_nbio()