Lines Matching refs:ctx

149 base32_decode_init(base32_decode_ctx_t *ctx, int length,
152 ctx->digits = 0;
153 ctx->seen_end = ISC_FALSE;
154 ctx->seen_32 = 0;
155 ctx->length = length;
156 ctx->target = target;
157 ctx->base = base;
161 base32_decode_char(base32_decode_ctx_t *ctx, int c) {
165 if (ctx->seen_end)
167 if ((s = strchr(ctx->base, c)) == NULL)
169 last = s - ctx->base;
178 if (last != 32 && ctx->seen_32 != 0)
185 if (last == 32 && ctx->seen_32 == 0)
186 switch (ctx->digits) {
191 if ((ctx->val[1]&0x03) != 0)
193 ctx->seen_32 = 1;
198 if ((ctx->val[3]&0x0f) != 0)
200 ctx->seen_32 = 3;
203 if ((ctx->val[4]&0x01) != 0)
205 ctx->seen_32 = 3;
210 if ((ctx->val[6]&0x07) != 0)
212 ctx->seen_32 = 4;
218 ctx->val[ctx->digits++] = (last == 32) ? 0 : last;
220 if (ctx->digits == 8) {
224 if (ctx->seen_32 != 0) {
225 ctx->seen_end = ISC_TRUE;
226 n = ctx->seen_32;
228 buf[0] = (ctx->val[0]<<3)|(ctx->val[1]>>2);
229 buf[1] = (ctx->val[1]<<6)|(ctx->val[2]<<1)|(ctx->val[3]>>4);
230 buf[2] = (ctx->val[3]<<4)|(ctx->val[4]>>1);
231 buf[3] = (ctx->val[4]<<7)|(ctx->val[5]<<2)|(ctx->val[6]>>3);
232 buf[4] = (ctx->val[6]<<5)|(ctx->val[7]);
233 RETERR(mem_tobuffer(ctx->target, buf, n));
234 if (ctx->length >= 0) {
235 if (n > ctx->length)
238 ctx->length -= n;
240 ctx->digits = 0;
246 base32_decode_finish(base32_decode_ctx_t *ctx) {
247 if (ctx->length > 0)
249 if (ctx->digits != 0)
258 base32_decode_ctx_t ctx;
263 base32_decode_init(&ctx, length, base, target);
265 while (!ctx.seen_end && (ctx.length != 0)) {
278 RETERR(base32_decode_char(&ctx, tr->base[i]));
280 if (ctx.length < 0 && !ctx.seen_end)
282 RETERR(base32_decode_finish(&ctx));
298 base32_decode_ctx_t ctx;
300 base32_decode_init(&ctx, -1, base, target);
307 RETERR(base32_decode_char(&ctx, c));
309 RETERR(base32_decode_finish(&ctx));
325 base32_decode_ctx_t ctx;
327 base32_decode_init(&ctx, -1, base, target);
330 RETERR(base32_decode_char(&ctx, c));
333 RETERR(base32_decode_finish(&ctx));