Home | History | Annotate | Download | only in bn

Lines Matching refs:ctx

156 static void ctxdbg(BN_CTX *ctx)
159 BN_POOL_ITEM *item = ctx->pool.head;
160 BN_STACK *stack = &ctx->stack;
161 fprintf(stderr,"(%08x): ", (unsigned int)ctx);
162 while(bnidx < ctx->used)
181 #define CTXDBG_ENTRY(str, ctx) do { \
184 ctxdbg(ctx); \
186 #define CTXDBG_EXIT(ctx) do { \
188 ctxdbg(ctx); \
190 #define CTXDBG_RET(ctx,ret)
192 #define CTXDBG_ENTRY(str, ctx)
193 #define CTXDBG_EXIT(ctx)
194 #define CTXDBG_RET(ctx,ret)
200 void BN_CTX_init(BN_CTX *ctx)
206 BN_POOL_reset(&ctx->pool);
207 BN_STACK_reset(&ctx->stack);
208 ctx->used = 0;
209 ctx->err_stack = 0;
210 ctx->too_many = 0;
231 void BN_CTX_free(BN_CTX *ctx)
233 if (ctx == NULL)
237 BN_POOL_ITEM *pool = ctx->pool.head;
239 ctx->stack.size, ctx->pool.size);
250 BN_STACK_finish(&ctx->stack);
251 BN_POOL_finish(&ctx->pool);
252 OPENSSL_free(ctx);
255 void BN_CTX_start(BN_CTX *ctx)
257 CTXDBG_ENTRY("BN_CTX_start", ctx);
259 if(ctx->err_stack || ctx->too_many)
260 ctx->err_stack++;
262 else if(!BN_STACK_push(&ctx->stack, ctx->used))
265 ctx->err_stack++;
267 CTXDBG_EXIT(ctx);
270 void BN_CTX_end(BN_CTX *ctx)
272 CTXDBG_ENTRY("BN_CTX_end", ctx);
273 if(ctx->err_stack)
274 ctx->err_stack--;
277 unsigned int fp = BN_STACK_pop(&ctx->stack);
279 if(fp < ctx->used)
280 BN_POOL_release(&ctx->pool, ctx->used - fp);
281 ctx->used = fp;
283 ctx->too_many = 0;
285 CTXDBG_EXIT(ctx);
288 BIGNUM *BN_CTX_get(BN_CTX *ctx)
291 CTXDBG_ENTRY("BN_CTX_get", ctx);
292 if(ctx->err_stack || ctx->too_many) return NULL;
293 if((ret = BN_POOL_get(&ctx->pool)) == NULL)
297 ctx->too_many = 1;
303 ctx->used++;
304 CTXDBG_RET(ctx, ret);