您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ EVP_DigestFinal_ex函数代码示例

51自学网 2021-06-01 20:34:58
  C++
这篇教程C++ EVP_DigestFinal_ex函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中EVP_DigestFinal_ex函数的典型用法代码示例。如果您正苦于以下问题:C++ EVP_DigestFinal_ex函数的具体用法?C++ EVP_DigestFinal_ex怎么用?C++ EVP_DigestFinal_ex使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了EVP_DigestFinal_ex函数的27个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: soap_smd_final

/**@fn int soap_smd_final(struct soap *soap, struct soap_smd_data *data, char *buf, int *len)@brief Finalizes (signed) digest computation and returns digest or signature.@param soap context@param[in,out] data smdevp engine context@param[in] buf contains signature for verification (SOAP_SMD_VRFY algorithms)@param[out] buf is populated with the digest or signature@param[in] len points to length of signature to verify (SOAP_SMD_VRFY algorithms)@param[out] len points to length of stored digest or signature (pass NULL if you are not interested in this value)@return SOAP_OK or SOAP_SSL_ERROR*/intsoap_smd_final(struct soap *soap, struct soap_smd_data *data, char *buf, int *len){ unsigned int n = 0;  int ok = 1;  if (!data->ctx)    return soap_set_receiver_error(soap, "soap_smd_final() failed", "No context", SOAP_SSL_ERROR);  if (buf)  { /* finalize the digest or signature computation */    switch (data->alg & SOAP_SMD_ALGO)    { case SOAP_SMD_HMAC:        HMAC_Final((HMAC_CTX*)data->ctx, (unsigned char*)buf, &n);        break;      case SOAP_SMD_DGST:        EVP_DigestFinal_ex((EVP_MD_CTX*)data->ctx, (unsigned char*)buf, &n);        break;      case SOAP_SMD_SIGN:        ok = EVP_SignFinal((EVP_MD_CTX*)data->ctx, (unsigned char*)buf, &n, (EVP_PKEY*)data->key);        break;      case SOAP_SMD_VRFY:        if (len)        { n = (unsigned int)*len;          ok = EVP_VerifyFinal((EVP_MD_CTX*)data->ctx, (unsigned char*)buf, n, (EVP_PKEY*)data->key);        }        else          ok = 0;        break;    }    DBGLOG(TEST, SOAP_MESSAGE(fdebug, "-- SMD Final alg=%x (%p) %d bytes--/n", data->alg, data->ctx, n));    DBGHEX(TEST, buf, n);    DBGLOG(TEST, SOAP_MESSAGE(fdebug, "/n--"));    /* pass back length of digest or signature produced */    if (len)      *len = (int)n;  }  /* cleanup */  if ((data->alg & SOAP_SMD_ALGO) == SOAP_SMD_HMAC)    HMAC_CTX_cleanup((HMAC_CTX*)data->ctx);  else    EVP_MD_CTX_cleanup((EVP_MD_CTX*)data->ctx);  SOAP_FREE(soap, data->ctx);  data->ctx = NULL;  /* check and return */  return soap_smd_check(soap, data, ok, "soap_smd_final() failed");}
开发者ID:allenway,项目名称:onvif,代码行数:55,


示例2: block_in

static int block_in(BIO *b){    BIO_OK_CTX *ctx;    EVP_MD_CTX *md;    unsigned long tl = 0;    unsigned char tmp[EVP_MAX_MD_SIZE];    int md_size;    ctx = BIO_get_data(b);    md = ctx->md;    md_size = EVP_MD_size(EVP_MD_CTX_md(md));    assert(sizeof(tl) >= OK_BLOCK_BLOCK); /* always true */    tl = ctx->buf[0];    tl <<= 8;    tl |= ctx->buf[1];    tl <<= 8;    tl |= ctx->buf[2];    tl <<= 8;    tl |= ctx->buf[3];    if (ctx->buf_len < tl + OK_BLOCK_BLOCK + md_size)        return 1;    if (!EVP_DigestUpdate(md,                          (unsigned char *)&(ctx->buf[OK_BLOCK_BLOCK]), tl))        goto berr;    if (!EVP_DigestFinal_ex(md, tmp, NULL))        goto berr;    if (memcmp(&(ctx->buf[tl + OK_BLOCK_BLOCK]), tmp, md_size) == 0) {        /* there might be parts from next block lurking around ! */        ctx->buf_off_save = tl + OK_BLOCK_BLOCK + md_size;        ctx->buf_len_save = ctx->buf_len;        ctx->buf_off = OK_BLOCK_BLOCK;        ctx->buf_len = tl + OK_BLOCK_BLOCK;        ctx->blockout = 1;    } else {        ctx->cont = 0;    }    return 1; berr:    BIO_clear_retry_flags(b);    return 0;}
开发者ID:Ana06,项目名称:openssl,代码行数:44,


示例3: ssl3_final_finish_mac

size_t ssl3_final_finish_mac(SSL *s, const char *sender, size_t len,                             unsigned char *p){    int ret;    EVP_MD_CTX *ctx = NULL;    if (!ssl3_digest_cached_records(s, 0))        return 0;    if (EVP_MD_CTX_type(s->s3->handshake_dgst) != NID_md5_sha1) {        SSLerr(SSL_F_SSL3_FINAL_FINISH_MAC, SSL_R_NO_REQUIRED_DIGEST);        return 0;    }    ctx = EVP_MD_CTX_new();    if (ctx == NULL) {        SSLerr(SSL_F_SSL3_FINAL_FINISH_MAC, ERR_R_MALLOC_FAILURE);        return 0;    }    if (!EVP_MD_CTX_copy_ex(ctx, s->s3->handshake_dgst)) {        SSLerr(SSL_F_SSL3_FINAL_FINISH_MAC, ERR_R_INTERNAL_ERROR);        return 0;    }    ret = EVP_MD_CTX_size(ctx);    if (ret < 0) {        EVP_MD_CTX_reset(ctx);        return 0;    }    if ((sender != NULL && EVP_DigestUpdate(ctx, sender, len) <= 0)        || EVP_MD_CTX_ctrl(ctx, EVP_CTRL_SSL3_MASTER_SECRET,                           (int)s->session->master_key_length,                           s->session->master_key) <= 0        || EVP_DigestFinal_ex(ctx, p, NULL) <= 0) {        SSLerr(SSL_F_SSL3_FINAL_FINISH_MAC, ERR_R_INTERNAL_ERROR);        ret = 0;    }    EVP_MD_CTX_free(ctx);    return ret;}
开发者ID:FdaSilvaYY,项目名称:openssl,代码行数:43,


示例4: hash_string

/**   * Return the SHA-512 based hash.  */char * hash_string(char *inbytes, size_t inLen, size_t *wroteBytes) {	unsigned char md_value[EVP_MAX_MD_SIZE];	unsigned int md_len;	mdctx = EVP_MD_CTX_create();		EVP_DigestInit_ex(mdctx, md,NULL);	EVP_DigestUpdate(mdctx,inbytes,inLen);	EVP_DigestFinal_ex(mdctx, md_value, &md_len);		char *outputBuffer = (char *)malloc(sizeof(char) * 64);	for(int i=0; i<SHA512_DIGEST_LENGTH; i++) {		outputBuffer[i] = md_value[i];	}	if (wroteBytes != NULL) {		*wroteBytes = 512;	}	EVP_MD_CTX_destroy(mdctx);	return outputBuffer;	}
开发者ID:nplanel,项目名称:cchs-security-frontend,代码行数:22,


示例5: tc_sha1_digest_one

int tc_sha1_digest_one(unsigned char *dest, unsigned int dest_len,         const unsigned char *seed, unsigned int seed_len){    unsigned int  sha1_value_len;    unsigned char sha1_value[EVP_MAX_MD_SIZE];    if (!sha1_init) {        return 0;    }    EVP_DigestInit_ex(&sha1_ctx, md, NULL);    EVP_DigestUpdate(&sha1_ctx, seed, seed_len);    EVP_DigestFinal_ex(&sha1_ctx, sha1_value, &sha1_value_len);    tc_tailor(dest, dest_len, sha1_value, sha1_value_len);    return 1;}
开发者ID:CandySunPlus,项目名称:tcpcopy,代码行数:19,


示例6: block_out

static void block_out(BIO* b){    BIO_OK_CTX *ctx;    EVP_MD_CTX *md;    unsigned long tl;    ctx=(BIO_OK_CTX *)b->ptr;    md=&ctx->md;    tl= ctx->buf_len- OK_BLOCK_BLOCK;    ctx->buf[0]=(unsigned char)(tl>>24);    ctx->buf[1]=(unsigned char)(tl>>16);    ctx->buf[2]=(unsigned char)(tl>>8);    ctx->buf[3]=(unsigned char)(tl);    EVP_DigestUpdate(md, (unsigned char*) &(ctx->buf[OK_BLOCK_BLOCK]), tl);    EVP_DigestFinal_ex(md, &(ctx->buf[ctx->buf_len]), NULL);    ctx->buf_len+= md->digest->md_size;    ctx->blockout= 1;}
开发者ID:aura1213,项目名称:netmf-interpreter,代码行数:19,


示例7: BN_num_bytes

BIGNUM *SRP_Calc_u(BIGNUM *A, BIGNUM *B, BIGNUM *N){    /* k = SHA1(PAD(A) || PAD(B) ) -- tls-srp draft 8 */    BIGNUM *u = NULL;    unsigned char cu[SHA_DIGEST_LENGTH];    unsigned char *cAB = NULL;    EVP_MD_CTX *ctxt = NULL;    int longN;    if ((A == NULL) || (B == NULL) || (N == NULL))        return NULL;    if (BN_ucmp(A, N) >= 0 || BN_ucmp(B, N) >= 0)        return NULL;    longN = BN_num_bytes(N);    ctxt = EVP_MD_CTX_new();    if (ctxt == NULL)        return NULL;    if ((cAB = OPENSSL_malloc(2 * longN)) == NULL)        goto err;    memset(cAB, 0, longN);    EVP_DigestInit_ex(ctxt, EVP_sha1(), NULL);    EVP_DigestUpdate(ctxt, cAB + BN_bn2bin(A, cAB + longN), longN);    EVP_DigestUpdate(ctxt, cAB + BN_bn2bin(B, cAB + longN), longN);    OPENSSL_free(cAB);    EVP_DigestFinal_ex(ctxt, cu, NULL);    if ((u = BN_bin2bn(cu, sizeof(cu), NULL)) == NULL)        goto err;    if (BN_is_zero(u)) {        BN_free(u);        u = NULL;    } err:    EVP_MD_CTX_free(ctxt);    return u;}
开发者ID:AndreV84,项目名称:openssl,代码行数:42,


示例8: digest_fdigest

static int digest_fdigest(lua_State *L){  const char *type_name = luaL_checkstring(L, 2);  const EVP_MD *type = EVP_get_digestbyname(type_name);  const char *s = luaL_checkstring(L, 3);  unsigned char digest[EVP_MAX_MD_SIZE];  unsigned int written = 0;  EVP_MD_CTX *c;  if (type == NULL) {    luaL_argerror(L, 1, "invalid digest type");    return 0;  }  c = EVP_MD_CTX_create();  if (!EVP_DigestInit_ex(c, type, NULL)) {    EVP_MD_CTX_destroy(c);    return crypto_error(L);  }  if (!EVP_DigestUpdate(c, s, lua_strlen(L, 3))) {    EVP_MD_CTX_destroy(c);    return crypto_error(L);  }  if (!EVP_DigestFinal_ex(c, digest, &written)) {    EVP_MD_CTX_destroy(c);    return crypto_error(L);  }  EVP_MD_CTX_destroy(c);  if (lua_toboolean(L, 4))    lua_pushlstring(L, (char *)digest, written);  else {    char *hex = (char*)calloc(sizeof(char), written*2 + 1);    unsigned int i;    for (i = 0; i < written; i++)      sprintf(hex + 2*i, "%02x", digest[i]);    lua_pushlstring(L, hex, written*2);    free(hex);  }  return 1;}
开发者ID:dtiedy,项目名称:luaplus51-all,代码行数:42,


示例9: EVP_DigestSignFinal

int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, size_t *siglen)	{	int sctx, r = 0;	if (ctx->pctx->pmeth->signctx)		sctx = 1;	else		sctx = 0;	if (sigret)		{		EVP_MD_CTX tmp_ctx;		unsigned char md[EVP_MAX_MD_SIZE];		unsigned int mdlen;		EVP_MD_CTX_init(&tmp_ctx);		if (!EVP_MD_CTX_copy_ex(&tmp_ctx,ctx))		     	return 0;		if (sctx)			r = tmp_ctx.pctx->pmeth->signctx(tmp_ctx.pctx,					sigret, siglen, &tmp_ctx);		else			r = EVP_DigestFinal_ex(&tmp_ctx,md,&mdlen);		EVP_MD_CTX_cleanup(&tmp_ctx);		if (sctx || !r)			return r;		if (EVP_PKEY_sign(ctx->pctx, sigret, siglen, md, mdlen) <= 0)			return 0;		}	else		{		if (sctx)			{			if (ctx->pctx->pmeth->signctx(ctx->pctx, sigret, siglen, ctx) <= 0)				return 0;			}		else			{			int s = EVP_MD_size(ctx->digest);			if (s < 0 || EVP_PKEY_sign(ctx->pctx, sigret, siglen, NULL, s) <= 0)				return 0;			}		}	return 1;	}
开发者ID:EddieGarmon,项目名称:netduino-netmf,代码行数:42,


示例10: cms_DigestedData_do_final

intcms_DigestedData_do_final(CMS_ContentInfo *cms, BIO *chain, int verify){	EVP_MD_CTX mctx;	unsigned char md[EVP_MAX_MD_SIZE];	unsigned int mdlen;	int r = 0;	CMS_DigestedData *dd;	EVP_MD_CTX_init(&mctx);	dd = cms->d.digestedData;	if (!cms_DigestAlgorithm_find_ctx(&mctx, chain, dd->digestAlgorithm))		goto err;	if (EVP_DigestFinal_ex(&mctx, md, &mdlen) <= 0)		goto err;	if (verify) {		if (mdlen != (unsigned int)dd->digest->length) {			CMSerr(CMS_F_CMS_DIGESTEDDATA_DO_FINAL,			    CMS_R_MESSAGEDIGEST_WRONG_LENGTH);			goto err;		}		if (memcmp(md, dd->digest->data, mdlen))			CMSerr(CMS_F_CMS_DIGESTEDDATA_DO_FINAL,			    CMS_R_VERIFICATION_FAILURE);		else			r = 1;	} else {		if (!ASN1_STRING_set(dd->digest, md, mdlen))			goto err;		r = 1;	}err:	EVP_MD_CTX_cleanup(&mctx);	return r;}
开发者ID:randombit,项目名称:hacrypto,代码行数:42,


示例11: openssl_evp_digest

void openssl_evp_digest(){	EVP_MD_CTX mdctx;	unsigned int md_len, i;	char author[] = "beike";	char msg[] = "openssl digest";	unsigned char md_value[EVP_MAX_MD_SIZE];	OpenSSL_add_all_algorithms();	EVP_MD_CTX_init(&mdctx);	EVP_DigestInit_ex(&mdctx, EVP_md5(), NULL);	EVP_DigestUpdate(&mdctx, msg, strlen(msg));	EVP_DigestUpdate(&mdctx, author, strlen(author));	EVP_DigestFinal_ex(&mdctx, md_value, &md_len);	printf("/nEVP_Digest(%s, %s) = ", msg, author);	for (i = 0; i < md_len; i++)		printf("0x%02x ", md_value[i]);	printf("/n");	EVP_MD_CTX_cleanup(&mdctx);}
开发者ID:beike2020,项目名称:source,代码行数:20,


示例12: digest_MD5_util

intdigest_MD5_util(char * input, char * output_t) {	EVP_MD_CTX mdctx;    const EVP_MD *md;    int output_len;    unsigned char output[EVP_MAX_MD_SIZE];	OpenSSL_add_all_digests();    md = EVP_get_digestbyname("MD5");    EVP_MD_CTX_init(&mdctx);    EVP_DigestInit_ex(&mdctx, md, NULL);    EVP_DigestUpdate(&mdctx, input, strlen(input));    EVP_DigestFinal_ex(&mdctx, output, &output_len);    EVP_MD_CTX_cleanup(&mdctx);    strncpy(output_t, output, output_len);    output_t[output_len + 1] = 0;    return output_len;}
开发者ID:lukkm,项目名称:Cripto-2014,代码行数:20,


示例13: Crypto_Digest_Hash

char * Crypto_Digest_Hash (int count, char * algoName, char * data) {  count = count;  EVP_MD_CTX mdctx;  const EVP_MD *md;  unsigned char md_value [EVP_MAX_MD_SIZE];  unsigned int md_len;  OpenSSL_add_all_digests ();  md = EVP_get_digestbyname (algoName);  if (!md) return "";  EVP_MD_CTX_init (&mdctx);  EVP_DigestInit_ex (&mdctx, md, NULL);  EVP_DigestUpdate (&mdctx, data, strlen (data));  EVP_DigestFinal_ex (&mdctx, md_value, &md_len);  EVP_MD_CTX_cleanup (&mdctx);  return Crypto_Digest_MakeHexDigest (md_value, md_len);}
开发者ID:alepharchives,项目名称:fbs-zcall,代码行数:20,


示例14: EVP_DigestSignFinal

int EVP_DigestSignFinal(EVP_MD_CTX *ctx, uint8_t *out_sig,                        size_t *out_sig_len) {  if (out_sig) {    EVP_MD_CTX tmp_ctx;    int ret;    uint8_t md[EVP_MAX_MD_SIZE];    unsigned int mdlen;    EVP_MD_CTX_init(&tmp_ctx);    ret = EVP_MD_CTX_copy_ex(&tmp_ctx, ctx) &&          EVP_DigestFinal_ex(&tmp_ctx, md, &mdlen) &&          EVP_PKEY_sign(ctx->pctx, out_sig, out_sig_len, md, mdlen);    EVP_MD_CTX_cleanup(&tmp_ctx);    return ret;  } else {    size_t s = EVP_MD_size(ctx->digest);    return EVP_PKEY_sign(ctx->pctx, out_sig, out_sig_len, NULL, s);  }}
开发者ID:Crawping,项目名称:chromium_extract,代码行数:20,


示例15: getHash

/*****************get the Hash value with sha256****************************/void getHash(char *msg, int len, char *hash) {    EVP_MD_CTX *mdctx;    const EVP_MD *md;    size_t md_len, i;    unsigned char md_value[EVP_MAX_MD_SIZE];    char hashname[] = "sha256";     OpenSSL_add_all_digests();    md = EVP_get_digestbyname(hashname);    if(!md) {   	 printf("Unknown message digest %s/n", hashname);   	 exit(1);    }    mdctx = EVP_MD_CTX_create();    EVP_DigestInit_ex(mdctx, md, NULL);    EVP_DigestUpdate(mdctx, msg, len);    EVP_DigestFinal_ex(mdctx, md_value, &md_len);    EVP_MD_CTX_destroy(mdctx);    memcpy(hash, md_value, HASHLEN);}
开发者ID:jeffjee617,项目名称:secureVPN,代码行数:21,


示例16: sha_finalize

nyx_error_t sha_finalize(char *dest, int *destlen){	if (running_mdctx == NULL)	{		return NYX_ERROR_INVALID_VALUE;	}	if (EVP_DigestFinal_ex(running_mdctx, (unsigned char *)dest,	                       (unsigned int *)destlen) != 1)	{		return NYX_ERROR_GENERIC;	}	EVP_MD_CTX_cleanup(running_mdctx);	EVP_MD_CTX_destroy(running_mdctx);	running_mdctx = NULL;	return NYX_ERROR_NONE;}
开发者ID:ctbrowser,项目名称:nyx-modules,代码行数:20,


示例17: X509_NAME_hash_old

unsigned long X509_NAME_hash_old(X509_NAME *x){    EVP_MD_CTX md_ctx;    unsigned long ret = 0;    unsigned char md[16];    /* Make sure X509_NAME structure contains valid cached encoding */    i2d_X509_NAME(x, NULL);    EVP_MD_CTX_init(&md_ctx);    EVP_MD_CTX_set_flags(&md_ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);    if (EVP_DigestInit_ex(&md_ctx, EVP_md5(), NULL)        && EVP_DigestUpdate(&md_ctx, x->bytes->data, x->bytes->length)        && EVP_DigestFinal_ex(&md_ctx, md, NULL))        ret = (((unsigned long)md[0]) | ((unsigned long)md[1] << 8L) |               ((unsigned long)md[2] << 16L) | ((unsigned long)md[3] << 24L)            ) & 0xffffffffL;    EVP_MD_CTX_cleanup(&md_ctx);    return (ret);}
开发者ID:rachellearussell12,项目名称:openssl,代码行数:20,


示例18: evp_md_xlat

static ssize_t evp_md_xlat(UNUSED void *instance, UNUSED REQUEST *request,			   char const *fmt, char *out, size_t outlen, EVP_MD const *md){	uint8_t digest[EVP_MAX_MD_SIZE];	unsigned int digestlen, i, len;	ssize_t inlen;	uint8_t const *p;	EVP_MD_CTX *ctx;	/*	 *      We need room for at least one octet of output.	 */	if (outlen < 3) {		*out = '/0';		return 0;	}	inlen = xlat_fmt_to_ref(&p, request, fmt);	if (inlen < 0) {		return -1;	}	ctx = EVP_MD_CTX_create();	EVP_DigestInit_ex(ctx, md, NULL);	EVP_DigestUpdate(ctx, p, inlen);	EVP_DigestFinal_ex(ctx, digest, &digestlen);	EVP_MD_CTX_destroy(ctx);	/*	 *      Each digest octet takes two hex digits, plus one for	 *      the terminating NUL.	 */	len = (outlen / 2) - 1;	if (len > digestlen) len = digestlen;	for (i = 0; i < len; i++) {		snprintf(out + i * 2, 3, "%02x", digest[i]);	}	return strlen(out);}
开发者ID:amirdaly,项目名称:freeradius-server,代码行数:41,


示例19: sig_in

static int sig_in(BIO *b){    BIO_OK_CTX *ctx;    EVP_MD_CTX *md;    unsigned char tmp[EVP_MAX_MD_SIZE];    int ret = 0;    ctx = b->ptr;    md = &ctx->md;    if ((int)(ctx->buf_len - ctx->buf_off) < 2 * md->digest->md_size)        return 1;    if (!EVP_DigestInit_ex(md, md->digest, NULL))        goto berr;    memcpy(md->md_data, &(ctx->buf[ctx->buf_off]), md->digest->md_size);    longswap(md->md_data, md->digest->md_size);    ctx->buf_off += md->digest->md_size;    if (!EVP_DigestUpdate(md, WELLKNOWN, strlen(WELLKNOWN)))        goto berr;    if (!EVP_DigestFinal_ex(md, tmp, NULL))        goto berr;    ret = memcmp(&(ctx->buf[ctx->buf_off]), tmp, md->digest->md_size) == 0;    ctx->buf_off += md->digest->md_size;    if (ret == 1) {        ctx->sigio = 0;        if (ctx->buf_len != ctx->buf_off) {            memmove(ctx->buf, &(ctx->buf[ctx->buf_off]),                    ctx->buf_len - ctx->buf_off);        }        ctx->buf_len -= ctx->buf_off;        ctx->buf_off = 0;    } else {        ctx->cont = 0;    }    return 1; berr:    BIO_clear_retry_flags(b);    return 0;}
开发者ID:1Project,项目名称:SafeBoardMessenger,代码行数:41,


示例20: sig_out

static int sig_out(BIO *b){    BIO_OK_CTX *ctx;    EVP_MD_CTX *md;    const EVP_MD *digest;    int md_size;    void *md_data;    ctx = BIO_get_data(b);    md = ctx->md;    digest = EVP_MD_CTX_md(md);    md_size = EVP_MD_size(digest);    md_data = EVP_MD_CTX_md_data(md);    if (ctx->buf_len + 2 * md_size > OK_BLOCK_SIZE)        return 1;    if (!EVP_DigestInit_ex(md, digest, NULL))        goto berr;    /*     * FIXME: there's absolutely no guarantee this makes any sense at all,     * particularly now EVP_MD_CTX has been restructured.     */    if (RAND_bytes(md_data, md_size) <= 0)        goto berr;    memcpy(&(ctx->buf[ctx->buf_len]), md_data, md_size);    longswap(&(ctx->buf[ctx->buf_len]), md_size);    ctx->buf_len += md_size;    if (!EVP_DigestUpdate(md, WELLKNOWN, strlen(WELLKNOWN)))        goto berr;    if (!EVP_DigestFinal_ex(md, &(ctx->buf[ctx->buf_len]), NULL))        goto berr;    ctx->buf_len += md_size;    ctx->blockout = 1;    ctx->sigio = 0;    return 1; berr:    BIO_clear_retry_flags(b);    return 0;}
开发者ID:Ana06,项目名称:openssl,代码行数:41,


示例21: md5_handler

int md5_handler(struct soap *soap, void **context, enum md5_action action, char *buf, size_t len){ EVP_MD_CTX *ctx;  unsigned char hash[EVP_MAX_MD_SIZE];  unsigned int size;  switch (action)  { case MD5_INIT:      soap_ssl_init();      if (!*context)      { *context = (void*)SOAP_MALLOC(soap, sizeof(EVP_MD_CTX));        EVP_MD_CTX_init((EVP_MD_CTX*)*context);      }      ctx = (EVP_MD_CTX*)*context;      DBGLOG(TEST, SOAP_MESSAGE(fdebug, "-- MD5 Init %p/n", ctx));      EVP_DigestInit_ex(ctx, EVP_md5(), NULL);      break;    case MD5_UPDATE:      ctx = (EVP_MD_CTX*)*context;      DBGLOG(TEST, SOAP_MESSAGE(fdebug, "-- MD5 Update %p (%lu) --/n", ctx, (unsigned long)len));      DBGMSG(TEST, buf, len);      DBGLOG(TEST, SOAP_MESSAGE(fdebug, "/n--"));      EVP_DigestUpdate(ctx, (const void*)buf, (unsigned int)len);      break;    case MD5_FINAL:      ctx = (EVP_MD_CTX*)*context;      EVP_DigestFinal_ex(ctx, (unsigned char*)hash, &size);      DBGLOG(TEST, SOAP_MESSAGE(fdebug, "-- MD5 Final %p --/n", ctx));      DBGHEX(TEST, hash, size);      DBGLOG(TEST, SOAP_MESSAGE(fdebug, "/n--"));      soap_memcpy((void*)buf, 16, (const void*)hash, 16);      break;    case MD5_DELETE:      ctx = (EVP_MD_CTX*)*context;      DBGLOG(TEST, SOAP_MESSAGE(fdebug, "-- MD5 Delete %p --/n", ctx));      if (ctx)      { EVP_MD_CTX_cleanup(ctx);        SOAP_FREE(soap, ctx);      }      *context = NULL;  }  return SOAP_OK;}
开发者ID:haohd,项目名称:bananaPiCam,代码行数:41,


示例22: md

std::string EnigmaMachine::mdHash(std::string const& input){   const EVP_MD* md(EVP_sha1());   EVP_MD_CTX* mdContext(EVP_MD_CTX_create());   EVP_DigestInit_ex(mdContext, md, NULL);   // The input is hashed twice, with the seed used as salt    // for good measure.   EVP_DigestUpdate(mdContext, input.c_str(), input.size());   EVP_DigestUpdate(mdContext, &m_seed, sizeof(unsigned int));   EVP_DigestUpdate(mdContext, input.c_str(), input.size());   unsigned int mdLength;   BinaryData mdValue[EVP_MAX_MD_SIZE];   EVP_DigestFinal_ex(mdContext, mdValue, &mdLength);   EVP_MD_CTX_destroy(mdContext);   std::string hash;   for (unsigned int i = 0; i < mdLength; ++i)  hash += charToHex(mdValue[i]);   return hash;}
开发者ID:Tyf0n,项目名称:IQmol,代码行数:21,


示例23: fips_dsa_sign

static int fips_dsa_sign(int type, const unsigned char *x, int y,	     unsigned char *sig, unsigned int *siglen, EVP_MD_SVCTX *sv)	{	DSA *dsa = sv->key;	unsigned char dig[EVP_MAX_MD_SIZE];	unsigned int dlen;	DSA_SIG *s;        EVP_DigestFinal_ex(sv->mctx, dig, &dlen);	s=dsa->meth->dsa_do_sign(dig,dlen,dsa);	OPENSSL_cleanse(dig, dlen);	if (s == NULL)		{		*siglen=0;		return 0;		}	*siglen= FIPS_dsa_sig_encode(sig, s);	DSA_SIG_free(s);	if (*siglen < 0)		return 0;	return 1;	}
开发者ID:alisw,项目名称:alice-openssl,代码行数:21,


示例24: fips_dsa_verify

static int fips_dsa_verify(int type, const unsigned char *x, int y,	     const unsigned char *sigbuf, unsigned int siglen, EVP_MD_SVCTX *sv)	{	DSA *dsa = sv->key;	DSA_SIG *s;	int ret=-1;	unsigned char dig[EVP_MAX_MD_SIZE];	unsigned int dlen;	s = DSA_SIG_new();	if (s == NULL)		return ret;	if (!FIPS_dsa_sig_decode(s,sigbuf,siglen))		goto err;        EVP_DigestFinal_ex(sv->mctx, dig, &dlen);	ret=dsa->meth->dsa_do_verify(dig,dlen,s,dsa);	OPENSSL_cleanse(dig, dlen);err:	DSA_SIG_free(s);	return ret;	}
开发者ID:alisw,项目名称:alice-openssl,代码行数:21,


示例25: cmeDigestFinal

int cmeDigestFinal(EVP_MD_CTX **ctx, unsigned char *out, unsigned int *outl){    int result;    result=EVP_DigestFinal_ex(*ctx,out,outl);    cmeFree(*ctx);    if (result==0)  //1= success, 0=failure    {#ifdef ERROR_LOG        fprintf(stderr,"CaumeDSE Error: evpDigestFinal(), EVP_DigestFinal_ex() failure!/n");#endif        return (1);    }    else    {#ifdef DEBUG        fprintf(stdout,"CaumeDSE Debug: evpDigestFinal(), EVP_DigestFinal_ex() success./n");#endif       return (0);    }}
开发者ID:xtremebeing,项目名称:CaumeDSE,代码行数:21,


示例26: getMd5

/** * Compute md5 *  * @param url the char*  * @return a char* representing the md5 of the url * @warning make sure to free resources returned by this function */char* getMd5(char* url){  EVP_MD_CTX md5ctx;  char* fresult=(char*)malloc((EVP_MAX_MD_SIZE+1)*sizeof(char));  unsigned char result[EVP_MAX_MD_SIZE];  unsigned int len;  EVP_DigestInit(&md5ctx, EVP_md5());  EVP_DigestUpdate(&md5ctx, url, strlen(url));  EVP_DigestFinal_ex(&md5ctx,result,&len);  EVP_MD_CTX_cleanup(&md5ctx);  int i;  for(i = 0; i < len; i++){    if(i>0){      char *tmp=strdup(fresult);      sprintf(fresult,"%s%02x", tmp,result[i]);      free(tmp);    }    else      sprintf(fresult,"%02x",result[i]);  }  return fresult;}
开发者ID:OSGeo,项目名称:zoo-project,代码行数:28,


示例27: ossl_digest_finish

/* *  call-seq: *      digest.finish -> aString * */static VALUEossl_digest_finish(int argc, VALUE *argv, VALUE self){    EVP_MD_CTX *ctx;    VALUE str;    rb_scan_args(argc, argv, "01", &str);    GetDigest(self, ctx);    if (NIL_P(str)) {        str = rb_str_new(NULL, EVP_MD_CTX_size(ctx));    } else {        StringValue(str);        rb_str_resize(str, EVP_MD_CTX_size(ctx));    }    EVP_DigestFinal_ex(ctx, (unsigned char *)RSTRING_PTR(str), NULL);    return str;}
开发者ID:padde,项目名称:openssl,代码行数:26,



注:本文中的EVP_DigestFinal_ex函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ EVP_DigestInit函数代码示例
C++ EVP_DigestFinal函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。