Home | History | Annotate | Download | only in evp

Lines Matching refs:ctx

121 void EVP_MD_CTX_init(EVP_MD_CTX *ctx)
123 memset(ctx,'\0',sizeof *ctx);
128 EVP_MD_CTX *ctx=OPENSSL_malloc(sizeof *ctx);
130 if (ctx)
131 EVP_MD_CTX_init(ctx);
133 return ctx;
136 int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type)
138 EVP_MD_CTX_init(ctx);
139 return EVP_DigestInit_ex(ctx, type, NULL);
148 static int bad_init(EVP_MD_CTX *ctx)
151 static int bad_update(EVP_MD_CTX *ctx,const void *data,size_t count)
154 static int bad_final(EVP_MD_CTX *ctx,unsigned char *md)
180 static int do_evp_md_engine_null(EVP_MD_CTX *ctx,
191 (EVP_MD_CTX *ctx, const EVP_MD **ptype, ENGINE *impl)
198 (EVP_MD_CTX *ctx, const EVP_MD **ptype, ENGINE *impl))
210 static int do_evp_md_engine(EVP_MD_CTX *ctx, const EVP_MD **ptype, ENGINE *impl)
217 if(ctx->engine)
218 ENGINE_finish(ctx->engine);
245 ctx->engine = impl;
248 ctx->engine = NULL;
251 if(!ctx->digest)
263 int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl)
265 M_EVP_MD_CTX_clear_flags(ctx,EVP_MD_CTX_FLAG_CLEANED);
270 ctx->digest = &bad_md;
279 if (ctx->engine && ctx->digest && (!type ||
280 (type && (type->type == ctx->digest->type))))
282 if (!do_evp_md_engine(ctx, &type, impl))
285 if (ctx->digest != type)
291 && !(ctx->flags & EVP_MD_CTX_FLAG_NON_FIPS_ALLOW))
294 ctx->digest = &bad_md;
299 if (ctx->digest && ctx->digest->ctx_size)
300 OPENSSL_free(ctx->md_data);
301 ctx->digest=type;
304 ctx->md_data=OPENSSL_malloc(type->ctx_size);
305 if (!ctx->md_data)
315 return ctx->digest->init(ctx);
318 int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *data,
324 return ctx->digest->update(ctx,data,count);
328 int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *size)
331 ret = EVP_DigestFinal_ex(ctx, md, size);
332 EVP_MD_CTX_cleanup(ctx);
337 int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *size)
344 OPENSSL_assert(ctx->digest->md_size <= EVP_MAX_MD_SIZE);
345 ret=ctx->digest->final(ctx,md);
347 *size=ctx->digest->md_size;
348 if (ctx->digest->cleanup)
350 ctx->digest->cleanup(ctx);
351 M_EVP_MD_CTX_set_flags(ctx,EVP_MD_CTX_FLAG_CLEANED);
353 memset(ctx->md_data,0,ctx->digest->ctx_size);
414 EVP_MD_CTX ctx;
417 EVP_MD_CTX_init(&ctx);
418 M_EVP_MD_CTX_set_flags(&ctx,EVP_MD_CTX_FLAG_ONESHOT);
419 ret=EVP_DigestInit_ex(&ctx, type, impl)
420 && EVP_DigestUpdate(&ctx, data, count)
421 && EVP_DigestFinal_ex(&ctx, md, size);
422 EVP_MD_CTX_cleanup(&ctx);
427 void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx)
429 EVP_MD_CTX_cleanup(ctx);
430 OPENSSL_free(ctx);
434 int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx)
436 /* Don't assume ctx->md_data was cleaned in EVP_Digest_Final,
439 if (ctx->digest && ctx->digest->cleanup
440 && !M_EVP_MD_CTX_test_flags(ctx,EVP_MD_CTX_FLAG_CLEANED))
441 ctx->digest->cleanup(ctx);
442 if (ctx->digest && ctx->digest->ctx_size && ctx->md_data
443 && !M_EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_REUSE))
445 OPENSSL_cleanse(ctx->md_data,ctx->digest->ctx_size);
446 OPENSSL_free(ctx->md_data);
449 if(ctx->engine)
452 do_engine_finish(ctx->engine);
454 memset(ctx,'\0',sizeof *ctx);