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

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

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

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

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

示例1: snmp_passwd_to_keys

/* [RFC 3414] - A.2. Password to Key Algorithm */enum snmp_codesnmp_passwd_to_keys(struct snmp_user *user, char *passwd){	int err, loop, i, pwdlen;	uint32_t  keylen, olen;	const EVP_MD *dtype;	EVP_MD_CTX ctx;	uint8_t authbuf[SNMP_AUTH_BUF_SIZE];	if (passwd == NULL || user == NULL)		return (SNMP_CODE_FAILED);	err = snmp_digest_init(user, &ctx, &dtype, &keylen);	if (err < 0)		return (SNMP_CODE_BADDIGEST);	else if (err == 0)		return (SNMP_CODE_OK);	memset(user->auth_key, 0, sizeof(user->auth_key));	pwdlen = strlen(passwd);	for (loop = 0; loop < SNMP_AUTH_KEY_LOOPCNT; loop += i) {		for (i = 0; i < SNMP_EXTENDED_KEY_SIZ; i++)			authbuf[i] = passwd[(loop + i) % pwdlen];		if (EVP_DigestUpdate(&ctx, authbuf, SNMP_EXTENDED_KEY_SIZ) != 1)			goto failed;	}	if (EVP_DigestFinal(&ctx, user->auth_key, &olen) != 1)		goto failed;	EVP_MD_CTX_cleanup(&ctx);	return (SNMP_CODE_OK);failed:	EVP_MD_CTX_cleanup(&ctx);	return (SNMP_CODE_BADDIGEST);}
开发者ID:MattDooner,项目名称:freebsd-west,代码行数:39,


示例2: snmp_get_local_keys

/* [RFC 3414] - 2.6. Key Localization Algorithm */enum snmp_codesnmp_get_local_keys(struct snmp_user *user, uint8_t *eid, uint32_t elen){	int err;	uint32_t  keylen, olen;	const EVP_MD *dtype;	EVP_MD_CTX ctx;	uint8_t authbuf[SNMP_AUTH_BUF_SIZE];	if (user == NULL || eid == NULL || elen > SNMP_ENGINE_ID_SIZ)		return (SNMP_CODE_FAILED);	memset(user->priv_key, 0, sizeof(user->priv_key));	memset(authbuf, 0, sizeof(authbuf));	err = snmp_digest_init(user, &ctx, &dtype, &keylen);	if (err < 0)		return (SNMP_CODE_BADDIGEST);	else if (err == 0)		return (SNMP_CODE_OK);	memcpy(authbuf, user->auth_key, keylen);	memcpy(authbuf + keylen, eid, elen);	memcpy(authbuf + keylen + elen, user->auth_key, keylen);	if (EVP_DigestUpdate(&ctx, authbuf, 2 * keylen + elen) != 1 ||	    EVP_DigestFinal(&ctx, user->auth_key, &olen) != 1) {		EVP_MD_CTX_cleanup(&ctx);		return (SNMP_CODE_BADDIGEST);	}	EVP_MD_CTX_cleanup(&ctx);	if (user->priv_proto != SNMP_PRIV_NOPRIV)		memcpy(user->priv_key, user->auth_key, sizeof(user->priv_key));	return (SNMP_CODE_OK);}
开发者ID:2014-class,项目名称:freerouter,代码行数:38,


示例3: return

//Copied from aegis-crypto0 bin/accli.cint PackageUtils::computeDigest(int ih, unsigned char* digest, ssize_t maxdigestlen){    EVP_MD_CTX mdctx;    unsigned int mdlen;    unsigned char data[512];    int rc;    ssize_t len;    if (maxdigestlen < DIGESTLEN)        return(-EINVAL);    rc = EVP_DigestInit(&mdctx, DIGESTTYP());    if (EVPOK != rc) {        qDebug()<<"EVP_DigestInit returns "<< rc;        return 0;    }    while (0 < (len = read(ih, data, sizeof(data)))) {        rc = EVP_DigestUpdate(&mdctx, data, len);        if (EVPOK != rc) {            qDebug()<<"EVP_DigestUpdate returns:"<<rc<<Q_FUNC_INFO;            return 0;        }        if (len < sizeof(data))           break;    }    rc = EVP_DigestFinal(&mdctx, digest, &mdlen);    if (rc != EVPOK) {        qDebug()<<"EVP_DigestUpdate returns:"<<rc<<Q_FUNC_INFO;        return(0);    }    EVP_MD_CTX_cleanup(&mdctx);    return mdlen;}
开发者ID:vivekgalatage,项目名称:widgetmanager,代码行数:38,


示例4: gfs_digest_calculate_local

/* * Not really public interface, * but common routine called from both client and server. */intgfs_digest_calculate_local(int fd, char *buffer, size_t buffer_size,	const EVP_MD *md_type, EVP_MD_CTX *md_ctx,	size_t *md_lenp, unsigned char *md_value,	file_offset_t *filesizep){	int size;	file_offset_t off = 0;	unsigned int len;	if (lseek(fd, (off_t)0, 0) == -1)		return (errno);	EVP_DigestInit(md_ctx, md_type);	while ((size = read(fd, buffer, buffer_size)) > 0) {		EVP_DigestUpdate(md_ctx, buffer, size);		off += size;	}	EVP_DigestFinal(md_ctx, md_value, &len);	*md_lenp = len;	*filesizep = off;	return (size == -1 ? errno : 0);}
开发者ID:krichter722,项目名称:gfarm,代码行数:28,


示例5: EVP_hexdigest

static PyObject *EVP_hexdigest(EVPobject *self, PyObject *unused){    unsigned char digest[EVP_MAX_MD_SIZE];    EVP_MD_CTX *temp_ctx;    unsigned int digest_size;    temp_ctx = EVP_MD_CTX_new();    if (temp_ctx == NULL) {        PyErr_NoMemory();        return NULL;    }    /* Get the raw (binary) digest value */    if (!locked_EVP_MD_CTX_copy(temp_ctx, self)) {        return _setException(PyExc_ValueError);    }    digest_size = EVP_MD_CTX_size(temp_ctx);    EVP_DigestFinal(temp_ctx, digest, NULL);    EVP_MD_CTX_free(temp_ctx);    return _Py_strhex((const char *)digest, digest_size);}
开发者ID:3lnc,项目名称:cpython,代码行数:24,


示例6: gfs_digest_calculate_local

/* * Not really public interface, * but common routine called from both client and server. */intgfs_digest_calculate_local(int fd, char *buffer, size_t buffer_size,	const EVP_MD *md_type, EVP_MD_CTX *md_ctx,	size_t *md_lenp, unsigned char *md_value,	gfarm_off_t *filesizep){	int size, save_errno;	gfarm_off_t off = 0;	unsigned int len;	if (lseek(fd, (off_t)0, 0) == -1) {		save_errno = errno;		gflog_debug(GFARM_MSG_1001020, "lseek() failed: %s",			strerror(save_errno));		return (save_errno);	}	EVP_DigestInit(md_ctx, md_type);	while ((size = read(fd, buffer, buffer_size)) > 0) {		EVP_DigestUpdate(md_ctx, buffer, size);		off += size;	}	EVP_DigestFinal(md_ctx, md_value, &len);	*md_lenp = len;	*filesizep = off;	if (size == -1) {		save_errno = errno;		gflog_debug(GFARM_MSG_1001021, "read() failed: %s",			strerror(save_errno));		return (save_errno);	}	return (0);}
开发者ID:ddk50,项目名称:gfarm_v2,代码行数:40,


示例7: EVP_digest

static PyObject *EVP_digest(EVPobject *self, PyObject *unused){    unsigned char digest[EVP_MAX_MD_SIZE];    EVP_MD_CTX *temp_ctx;    PyObject *retval;    unsigned int digest_size;    temp_ctx = EVP_MD_CTX_new();    if (temp_ctx == NULL) {        PyErr_NoMemory();        return NULL;    }    if (!locked_EVP_MD_CTX_copy(temp_ctx, self)) {        return _setException(PyExc_ValueError);    }    digest_size = EVP_MD_CTX_size(temp_ctx);    EVP_DigestFinal(temp_ctx, digest, NULL);    retval = PyBytes_FromStringAndSize((const char *)digest, digest_size);    EVP_MD_CTX_free(temp_ctx);    return retval;}
开发者ID:3lnc,项目名称:cpython,代码行数:24,


示例8: sl_digest

static void sl_digest (void){  SLang_BString_Type* data; /* we will give a slang string */  unsigned char output[EVP_MAX_MD_SIZE];  const EVP_MD *md;  EVP_MD_CTX ctx;  char* dtype;  int dlen, hashlen;  SLang_BString_Type *out;    if (SLang_Num_Function_Args != 2 ||      SLang_pop_slstring(&dtype) == -1 ){    return;}  md = EVP_get_digestbyname(dtype);  if (!md){    SLang_verror(SL_UNDEFINED_NAME,"could not find digest %s",dtype);    SLang_free_slstring(dtype);    return;  }    if (SLang_pop_bstring(&data) == -1 ){    return;  }  unsigned char* idata = SLbstring_get_pointer (data,&dlen);  EVP_MD_CTX_init(&ctx);  EVP_DigestInit_ex(&ctx, md, NULL);  EVP_DigestUpdate(&ctx, idata, dlen);  EVP_DigestFinal(&ctx, output, &hashlen);  out = SLbstring_create (output, hashlen);  SLang_push_bstring(out);  SLbstring_free(data);  SLbstring_free(out);}
开发者ID:amitschang,项目名称:slcrypto,代码行数:36,


示例9: ssh_dss_verify

int ssh_dss_verify(DSA *key,                   u_char *signature, u_int signaturelen,                   u_char *data, u_int datalen){	DSA_SIG *sig;	const EVP_MD *evp_md = EVP_sha1();	EVP_MD_CTX md;	unsigned char digest[EVP_MAX_MD_SIZE], *sigblob;	unsigned int len, dlen;	int ret;	char *ptr;	OpenSSL_add_all_digests();	if (key == NULL) {		return -2;	}	ptr = signature;	// step1	if (signaturelen == 0x28) {		// workaround for SSH-2.0-2.0* and SSH-2.0-2.1* (2006.11.18 maya)		ptr -= 4;	}	else {		len = get_uint32_MSBfirst(ptr);		ptr += 4;		if (strncmp("ssh-dss", ptr, len) != 0) {			return -3;		}		ptr += len;	}	// step2	len = get_uint32_MSBfirst(ptr);	ptr += 4;	sigblob = ptr;	ptr += len;	if (len != SIGBLOB_LEN) {		return -4;	}	/* parse signature */	if ((sig = DSA_SIG_new()) == NULL)		return -5;	if ((sig->r = BN_new()) == NULL)		return -6;	if ((sig->s = BN_new()) == NULL)		return -7;	BN_bin2bn(sigblob, INTBLOB_LEN, sig->r);	BN_bin2bn(sigblob+ INTBLOB_LEN, INTBLOB_LEN, sig->s);	/* sha1 the data */	EVP_DigestInit(&md, evp_md);	EVP_DigestUpdate(&md, data, datalen);	EVP_DigestFinal(&md, digest, &dlen);	ret = DSA_do_verify(digest, dlen, sig, key);	memset(digest, 'd', sizeof(digest));	DSA_SIG_free(sig);	return ret;}
开发者ID:pakls,项目名称:teraterm-ttssh2,代码行数:66,


示例10: ssh_ecdsa_verify

int ssh_ecdsa_verify(EC_KEY *key, ssh_keytype keytype,                     u_char *signature, u_int signaturelen,                     u_char *data, u_int datalen){	ECDSA_SIG *sig;	const EVP_MD *evp_md;	EVP_MD_CTX md;	unsigned char digest[EVP_MAX_MD_SIZE], *sigblob;	unsigned int len, dlen;	int ret, nid = NID_undef;	char *ptr;	OpenSSL_add_all_digests();	if (key == NULL) {		return -2;	}	ptr = signature;	len = get_uint32_MSBfirst(ptr);	ptr += 4;	if (strncmp(get_ssh_keytype_name(keytype), ptr, len) != 0) {		return -3;	}	ptr += len;	len = get_uint32_MSBfirst(ptr);	ptr += 4;	sigblob = ptr;	ptr += len;	/* parse signature */	if ((sig = ECDSA_SIG_new()) == NULL)		return -4;	if ((sig->r = BN_new()) == NULL)		return -5;	if ((sig->s = BN_new()) == NULL)		return -6;	buffer_get_bignum2(&sigblob, sig->r);	buffer_get_bignum2(&sigblob, sig->s);	if (sigblob != ptr) {		return -7;	}	/* hash the data */	nid = keytype_to_hash_nid(keytype);	if ((evp_md = EVP_get_digestbynid(nid)) == NULL) {		return -8;	}	EVP_DigestInit(&md, evp_md);	EVP_DigestUpdate(&md, data, datalen);	EVP_DigestFinal(&md, digest, &dlen);	ret = ECDSA_do_verify(digest, dlen, sig, key);	memset(digest, 'd', sizeof(digest));	ECDSA_SIG_free(sig);	return ret;}
开发者ID:pakls,项目名称:teraterm-ttssh2,代码行数:62,


示例11: ssh_rsa_verify

int ssh_rsa_verify(RSA *key,                   u_char *signature, u_int signaturelen,                   u_char *data, u_int datalen){	const EVP_MD *evp_md;	EVP_MD_CTX md;	//	char *ktype;	u_char digest[EVP_MAX_MD_SIZE], *sigblob;	u_int len, dlen, modlen;//	int rlen, ret, nid;	int ret, nid;	char *ptr;	OpenSSL_add_all_digests();	if (key == NULL) {		return -2;	}	if (BN_num_bits(key->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) {		return -3;	}	//debug_print(41, signature, signaturelen);	ptr = signature;	// step1	len = get_uint32_MSBfirst(ptr);	ptr += 4;	if (strncmp("ssh-rsa", ptr, len) != 0) {		return -4;	}	ptr += len;	// step2	len = get_uint32_MSBfirst(ptr);	ptr += 4;	sigblob = ptr;	ptr += len;#if 0	rlen = get_uint32_MSBfirst(ptr);	if (rlen != 0) {		return -1;	}#endif	/* RSA_verify expects a signature of RSA_size */	modlen = RSA_size(key);	if (len > modlen) {		return -5;	} else if (len < modlen) {		u_int diff = modlen - len;		sigblob = realloc(sigblob, modlen);		memmove(sigblob + diff, sigblob, len);		memset(sigblob, 0, diff);		len = modlen;	}		/* sha1 the data */	//	nid = (datafellows & SSH_BUG_RSASIGMD5) ? NID_md5 : NID_sha1;	nid = NID_sha1;	if ((evp_md = EVP_get_digestbynid(nid)) == NULL) {		//error("ssh_rsa_verify: EVP_get_digestbynid %d failed", nid);		return -6;	}	EVP_DigestInit(&md, evp_md);	EVP_DigestUpdate(&md, data, datalen);	EVP_DigestFinal(&md, digest, &dlen);	ret = openssh_RSA_verify(nid, digest, dlen, sigblob, len, key);	memset(digest, 'd', sizeof(digest));	memset(sigblob, 's', len);	//free(sigblob);	//debug("ssh_rsa_verify: signature %scorrect", (ret==0) ? "in" : "");	return ret;}
开发者ID:pakls,项目名称:teraterm-ttssh2,代码行数:77,


示例12: generate_SSH2_keysign

BOOL generate_SSH2_keysign(Key *keypair, char **sigptr, int *siglen, char *data, int datalen){	buffer_t *msg = NULL;	char *s;	int ret;	msg = buffer_init();	if (msg == NULL) {		// TODO: error check		return FALSE;	}	switch (keypair->type) {	case KEY_RSA: // RSA	{		const EVP_MD *evp_md = EVP_sha1();		EVP_MD_CTX md;		u_char digest[EVP_MAX_MD_SIZE], *sig;		u_int slen, dlen, len;		int ok, nid = NID_sha1;		// ダイジェスト
C++ EVP_DigestFinal_ex函数代码示例
C++ EVP_Digest函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。