Lines Matching refs:ctx
69 BIO_B64_CTX *ctx;
71 if ((ctx = OPENSSL_zalloc(sizeof(*ctx))) == NULL) {
76 ctx->cont = 1;
77 ctx->start = 1;
78 ctx->base64 = EVP_ENCODE_CTX_new();
79 if (ctx->base64 == NULL) {
80 OPENSSL_free(ctx);
84 BIO_set_data(bi, ctx);
92 BIO_B64_CTX *ctx;
96 ctx = BIO_get_data(a);
97 if (ctx == NULL)
100 EVP_ENCODE_CTX_free(ctx->base64);
101 OPENSSL_free(ctx);
111 BIO_B64_CTX *ctx;
117 ctx = (BIO_B64_CTX *)BIO_get_data(b);
120 if ((ctx == NULL) || (next == NULL))
125 if (ctx->encode != B64_DECODE) {
126 ctx->encode = B64_DECODE;
127 ctx->buf_len = 0;
128 ctx->buf_off = 0;
129 ctx->tmp_len = 0;
130 EVP_DecodeInit(ctx->base64);
134 if (ctx->buf_len > 0) {
135 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
136 i = ctx->buf_len - ctx->buf_off;
139 OPENSSL_assert(ctx->buf_off + i < (int)sizeof(ctx->buf));
140 memcpy(out, &(ctx->buf[ctx->buf_off]), i);
144 ctx->buf_off += i;
145 if (ctx->buf_len == ctx->buf_off) {
146 ctx->buf_len = 0;
147 ctx->buf_off = 0;
158 if (ctx->cont <= 0)
161 i = BIO_read(next, &(ctx->tmp[ctx->tmp_len]),
162 B64_BLOCK_SIZE - ctx->tmp_len);
169 ctx->cont = i;
171 if (ctx->tmp_len == 0)
181 i += ctx->tmp_len;
182 ctx->tmp_len = i;
188 if (ctx->start && (BIO_get_flags(b) & BIO_FLAGS_BASE64_NO_NL)) {
189 /* ctx->start=1; */
190 ctx->tmp_len = 0;
191 } else if (ctx->start) {
192 q = p = (unsigned char *)ctx->tmp;
203 if (ctx->tmp_nl) {
205 ctx->tmp_nl = 0;
209 k = EVP_DecodeUpdate(ctx->base64,
210 (unsigned char *)ctx->buf,
212 if ((k <= 0) && (num == 0) && (ctx->start))
213 EVP_DecodeInit(ctx->base64);
216 &(ctx->tmp[0])) {
218 &(ctx->tmp[0]));
220 ctx->tmp[x] = p[x];
222 EVP_DecodeInit(ctx->base64);
223 ctx->start = 0;
235 if (p == (unsigned char *)&(ctx->tmp[0])) {
238 ctx->tmp_nl = 1;
239 ctx->tmp_len = 0;
244 ctx->tmp[ii] = p[ii];
245 ctx->tmp_len = n;
250 ctx->tmp_len = 0;
252 } else if ((i < B64_BLOCK_SIZE) && (ctx->cont > 0)) {
264 z = EVP_DecodeBlock((unsigned char *)ctx->buf,
265 (unsigned char *)ctx->tmp, jj);
267 if (ctx->tmp[jj - 1] == '=') {
269 if (ctx->tmp[jj - 2] == '=')
277 memmove(ctx->tmp, &ctx->tmp[jj], i - jj);
278 ctx->tmp_len = i - jj;
280 ctx->buf_len = 0;
282 ctx->buf_len = z;
286 i = EVP_DecodeUpdate(ctx->base64,
287 (unsigned char *)ctx->buf, &ctx->buf_len,
288 (unsigned char *)ctx->tmp, i);
289 ctx->tmp_len = 0;
293 * 'ctx->cont <= 0' will prevent b64_read() from reading
297 ctx->cont = i;
299 ctx->buf_off = 0;
302 ctx->buf_len = 0;
306 if (ctx->buf_len <= outl)
307 i = ctx->buf_len;
311 memcpy(out, ctx->buf, i);
313 ctx->buf_off = i;
314 if (ctx->buf_off == ctx->buf_len) {
315 ctx->buf_len = 0;
316 ctx->buf_off = 0;
331 BIO_B64_CTX *ctx;
334 ctx = (BIO_B64_CTX *)BIO_get_data(b);
336 if ((ctx == NULL) || (next == NULL))
341 if (ctx->encode != B64_ENCODE) {
342 ctx->encode = B64_ENCODE;
343 ctx->buf_len = 0;
344 ctx->buf_off = 0;
345 ctx->tmp_len = 0;
346 EVP_EncodeInit(ctx->base64);
349 OPENSSL_assert(ctx->buf_off < (int)sizeof(ctx->buf));
350 OPENSSL_assert(ctx->buf_len <= (int)sizeof(ctx->buf));
351 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
352 n = ctx->buf_len - ctx->buf_off;
354 i = BIO_write(next, &(ctx->buf[ctx->buf_off]), n);
360 ctx->buf_off += i;
361 OPENSSL_assert(ctx->buf_off <= (int)sizeof(ctx->buf));
362 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
366 ctx->buf_off = 0;
367 ctx->buf_len = 0;
376 if (ctx->tmp_len > 0) {
377 OPENSSL_assert(ctx->tmp_len <= 3);
378 n = 3 - ctx->tmp_len;
384 memcpy(&(ctx->tmp[ctx->tmp_len]), in, n);
385 ctx->tmp_len += n;
387 if (ctx->tmp_len < 3)
389 ctx->buf_len =
390 EVP_EncodeBlock((unsigned char *)ctx->buf,
391 (unsigned char *)ctx->tmp, ctx->tmp_len);
392 OPENSSL_assert(ctx->buf_len <= (int)sizeof(ctx->buf));
393 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
398 ctx->tmp_len = 0;
401 memcpy(ctx->tmp, in, n);
402 ctx->tmp_len = n;
407 ctx->buf_len =
408 EVP_EncodeBlock((unsigned char *)ctx->buf,
410 OPENSSL_assert(ctx->buf_len <= (int)sizeof(ctx->buf));
411 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
415 if (!EVP_EncodeUpdate(ctx->base64,
416 (unsigned char *)ctx->buf, &ctx->buf_len,
419 OPENSSL_assert(ctx->buf_len <= (int)sizeof(ctx->buf));
420 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
426 ctx->buf_off = 0;
427 n = ctx->buf_len;
429 i = BIO_write(next, &(ctx->buf[ctx->buf_off]), n);
436 ctx->buf_off += i;
437 OPENSSL_assert(ctx->buf_off <= (int)sizeof(ctx->buf));
438 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
440 ctx->buf_len = 0;
441 ctx->buf_off = 0;
448 BIO_B64_CTX *ctx;
453 ctx = (BIO_B64_CTX *)BIO_get_data(b);
455 if ((ctx == NULL) || (next == NULL))
460 ctx->cont = 1;
461 ctx->start = 1;
462 ctx->encode = B64_NONE;
466 if (ctx->cont <= 0)
472 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
473 ret = ctx->buf_len - ctx->buf_off;
474 if ((ret == 0) && (ctx->encode != B64_NONE)
475 && (EVP_ENCODE_CTX_num(ctx->base64) != 0))
481 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
482 ret = ctx->buf_len - ctx->buf_off;
489 while (ctx->buf_len != ctx->buf_off) {
495 if (ctx->tmp_len != 0) {
496 ctx->buf_len = EVP_EncodeBlock((unsigned char *)ctx->buf,
497 (unsigned char *)ctx->tmp,
498 ctx->tmp_len);
499 ctx->buf_off = 0;
500 ctx->tmp_len = 0;
503 } else if (ctx->encode != B64_NONE
504 && EVP_ENCODE_CTX_num(ctx->base64) != 0) {
505 ctx->buf_off = 0;
506 EVP_EncodeFinal(ctx->base64,
507 (unsigned char *)ctx->buf, &(ctx->buf_len));