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

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

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

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

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

示例1: FIPS_des3_test

static int FIPS_des3_test(void){    int ret = 0;    unsigned char pltmp[8];    unsigned char citmp[8];    unsigned char key[] =    {   1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,        19, 20, 21, 22, 23, 24    };    unsigned char plaintext[] = { 'e', 't', 'a', 'o', 'n', 'r', 'i', 's' };    EVP_CIPHER_CTX ctx;    EVP_CIPHER_CTX_init(&ctx);    if (EVP_CipherInit_ex(&ctx, EVP_des_ede3_ecb(), NULL, key, NULL, 1) <= 0)        goto err;    EVP_Cipher(&ctx, citmp, plaintext, 8);    if (EVP_CipherInit_ex(&ctx, EVP_des_ede3_ecb(), NULL, key, NULL, 0) <= 0)        goto err;    EVP_Cipher(&ctx, pltmp, citmp, 8);    if (memcmp(pltmp, plaintext, 8))        goto err;    ret = 1;err:    EVP_CIPHER_CTX_cleanup(&ctx);    return ret;}
开发者ID:davidlt,项目名称:openssl-fedora,代码行数:25,


示例2: aes_gcm_openssl_decrypt

/* * This function decrypts a buffer using AES GCM mode * * Parameters: *	c	Crypto context *	buf	data to encrypt *	enc_len	length of encrypt buffer */err_status_t aes_gcm_openssl_decrypt (aes_gcm_ctx_t *c, unsigned char *buf, 	                              unsigned int *enc_len){    if (c->dir != direction_encrypt && c->dir != direction_decrypt) {        return (err_status_bad_param);    }    /*     * Set the tag before decrypting     */    EVP_CIPHER_CTX_ctrl(&c->ctx, EVP_CTRL_GCM_SET_TAG, c->tag_len, 	                buf + (*enc_len - c->tag_len));    EVP_Cipher(&c->ctx, buf, buf, *enc_len - c->tag_len);    /*     * Check the tag     */    if (EVP_Cipher(&c->ctx, NULL, NULL, 0)) {        return (err_status_auth_fail);    }    /*     * Reduce the buffer size by the tag length since the tag     * is not part of the original payload     */    *enc_len -= c->tag_len;    return (err_status_ok);}
开发者ID:InteractiviteVideoEtSystemes,项目名称:patchedLibSRTP,代码行数:37,


示例3: test_cipher

static inttest_cipher(int i, const EVP_CIPHER *c, struct tests *t){    EVP_CIPHER_CTX ectx;    EVP_CIPHER_CTX dctx;    void *d;    if (c == NULL) {	printf("%s not supported/n", t->name);	return 0;    }    EVP_CIPHER_CTX_init(&ectx);    EVP_CIPHER_CTX_init(&dctx);    if (EVP_CipherInit_ex(&ectx, c, NULL, NULL, NULL, 1) != 1)	errx(1, "%s: %d EVP_CipherInit_ex einit", t->name, i);    if (EVP_CipherInit_ex(&dctx, c, NULL, NULL, NULL, 0) != 1)	errx(1, "%s: %d EVP_CipherInit_ex dinit", t->name, i);    EVP_CIPHER_CTX_set_key_length(&ectx, t->keysize);    EVP_CIPHER_CTX_set_key_length(&dctx, t->keysize);    if (EVP_CipherInit_ex(&ectx, NULL, NULL, t->key, t->iv, 1) != 1)	errx(1, "%s: %d EVP_CipherInit_ex encrypt", t->name, i);    if (EVP_CipherInit_ex(&dctx, NULL, NULL, t->key, t->iv, 0) != 1)	errx(1, "%s: %d EVP_CipherInit_ex decrypt", t->name, i);    d = emalloc(t->datasize);    if (!EVP_Cipher(&ectx, d, t->indata, t->datasize))	errx(1, "%s: %d EVP_Cipher encrypt failed", t->name, i);    if (memcmp(d, t->outdata, t->datasize) != 0) {	char *s, *s2;	hex_encode(d, t->datasize, &s);	hex_encode(t->outdata, t->datasize, &s2);	errx(1, "%s: %d encrypt not the same: %s != %s", t->name, i, s, s2);    }    if (!EVP_Cipher(&dctx, d, d, t->datasize))	errx(1, "%s: %d EVP_Cipher decrypt failed", t->name, i);    if (memcmp(d, t->indata, t->datasize) != 0) {	char *s;	hex_encode(d, t->datasize, &s);	errx(1, "%s: %d decrypt not the same: %s", t->name, i, s);    }    if (t->outiv)	/* XXXX check  */;    EVP_CIPHER_CTX_cleanup(&ectx);    EVP_CIPHER_CTX_cleanup(&dctx);    free(d);    return 0;}
开发者ID:DavidMulder,项目名称:heimdal,代码行数:57,


示例4: _krb5_evp_encrypt_iov

int_krb5_evp_encrypt_iov(krb5_context context,		      struct _krb5_key_data *key,		      struct krb5_crypto_iov *iov,		      int niov,		      krb5_boolean encryptp,		      int usage,		      void *ivec){    size_t blocksize, blockmask, wholeblocks;    struct _krb5_evp_schedule *ctx = key->schedule->data;    unsigned char tmp[EVP_MAX_BLOCK_LENGTH];    EVP_CIPHER_CTX *c;    struct _krb5_evp_iov_cursor cursor;    c = encryptp ? &ctx->ectx : &ctx->dctx;    blocksize = EVP_CIPHER_CTX_block_size(c);    blockmask = ~(blocksize - 1);    if (ivec)	EVP_CipherInit_ex(c, NULL, NULL, NULL, ivec, -1);    else	EVP_CipherInit_ex(c, NULL, NULL, NULL, zero_ivec, -1);    _krb5_evp_iov_cursor_init(&cursor, iov, niov);    while (!_krb5_evp_iov_cursor_done(&cursor)) {	/* Number of bytes of data in this iovec that are in whole blocks */        wholeblocks = cursor.current.length & ~blockmask;        if (wholeblocks != 0) {            EVP_Cipher(c, cursor.current.data,                       cursor.current.data, wholeblocks);            _krb5_evp_iov_cursor_advance(&cursor, wholeblocks);        }        /* If there's a partial block of data remaining in the current         * iovec, steal enough from subsequent iovecs to form a whole block */        if (cursor.current.length > 0 && cursor.current.length < blocksize) {	    /* Build up a block's worth of data in tmp, leaving the cursor	     * pointing at where we started */            _krb5_evp_iov_cursor_fillbuf(&cursor, tmp, blocksize, NULL);            EVP_Cipher(c, tmp, tmp, blocksize);            /* Copy the data in tmp back into the iovecs that it came from,             * advancing the cursor */            _krb5_evp_iov_cursor_fillvec(&cursor, tmp, blocksize);        }    }    return 0;}
开发者ID:DavidMulder,项目名称:heimdal,代码行数:56,


示例5: cipher_crypt

voidcipher_crypt(CipherContext *cc, u_char *dest, const u_char *src, u_int len){	if (len % cc->cipher->block_size)		fatal("cipher_encrypt: bad plaintext length %d", len);#ifdef SSH_OLD_EVP	EVP_Cipher(&cc->evp, dest, (u_char *)src, len);#else	if (EVP_Cipher(&cc->evp, dest, (u_char *)src, len) == 0)		fatal("evp_crypt: EVP_Cipher failed");#endif}
开发者ID:andreiw,项目名称:polaris,代码行数:12,


示例6: ssh1_3des_cbc

static intssh1_3des_cbc(EVP_CIPHER_CTX *ctx, u_char *dest, const u_char *src, size_t len){	struct ssh1_3des_ctx *c;	if ((c = EVP_CIPHER_CTX_get_app_data(ctx)) == NULL)		return 0;	if (EVP_Cipher(&c->k1, dest, __UNCONST(src), len) == 0 ||	    EVP_Cipher(&c->k2, dest, dest, len) == 0 ||	    EVP_Cipher(&c->k3, dest, dest, len) == 0)		return 0;	return 1;}
开发者ID:knakahara,项目名称:netbsd-src,代码行数:13,


示例7: ssh1_3des_cbc

static intssh1_3des_cbc(EVP_CIPHER_CTX *ctx, u_char *dest, const u_char *src, size_t len){	struct ssh1_3des_ctx *c;	if ((c = EVP_CIPHER_CTX_get_app_data(ctx)) == NULL) {		error("ssh1_3des_cbc: no context");		return (0);	}	if (EVP_Cipher(&c->k1, dest, (u_char *)src, len) == 0 ||	    EVP_Cipher(&c->k2, dest, dest, len) == 0 ||	    EVP_Cipher(&c->k3, dest, dest, len) == 0)		return (0);	return (1);}
开发者ID:UNGLinux,项目名称:Obase,代码行数:15,


示例8: test_bulk_cipher

static inttest_bulk_cipher(const char *cname, const EVP_CIPHER *c){    static unsigned char key[16];    static unsigned char iv[16];    int i;    int64_t M = 0;    for (i = 0; i < loops; i++) {        EVP_CIPHER_CTX ectx;        EVP_CIPHER_CTX dctx;        STATS_START(M)        EVP_CIPHER_CTX_init(&ectx);        EVP_CIPHER_CTX_init(&dctx);        if (EVP_CipherInit_ex(&ectx, c, NULL, NULL, NULL, 1) != 1)	    errx(1, "can't init encrypt");        if (EVP_CipherInit_ex(&dctx, c, NULL, NULL, NULL, 0) != 1)	    errx(1, "can't init decrypt");        EVP_CIPHER_CTX_set_key_length(&ectx, sizeof(key));        EVP_CIPHER_CTX_set_key_length(&dctx, sizeof(key));        if (EVP_CipherInit_ex(&ectx, NULL, NULL, key, iv, 1) != 1)	    errx(1, "can't init encrypt");        if (EVP_CipherInit_ex(&dctx, NULL, NULL, key, iv, 0) != 1)	    errx(1, "can't init decrypt");        if (!EVP_Cipher(&ectx, d, d, len))	    errx(1, "can't encrypt");        if (!EVP_Cipher(&dctx, d, d, len))	    errx(1, "can't decrypt");        EVP_CIPHER_CTX_cleanup(&ectx);        EVP_CIPHER_CTX_cleanup(&dctx);        STATS_END(M);	if (d[0] != 0x00 || d[len - 1] != ((len - 1) & 0xff))	    errx(1, "encrypt/decrypt inconsistent");    }    printf("%s: mean time %llu usec%s/n", cname, M, (M == 1) ? "" : "s");    return 0;}
开发者ID:Sp1l,项目名称:heimdal,代码行数:48,


示例9: cipher_crypt

/* * cipher_crypt() operates as following: * Copy 'aadlen' bytes (without en/decryption) from 'src' to 'dest'. * Theses bytes are treated as additional authenticated data for * authenticated encryption modes. * En/Decrypt 'len' bytes at offset 'aadlen' from 'src' to 'dest'. * Use 'authlen' bytes at offset 'len'+'aadlen' as the authentication tag. * This tag is written on encryption and verified on decryption. * Both 'aadlen' and 'authlen' can be set to 0. * cipher_crypt() returns 0 on success and -1 if the decryption integrity * check fails. */intcipher_crypt(CipherContext *cc, u_int seqnr, u_char *dest, const u_char *src,    u_int len, u_int aadlen, u_int authlen){	if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0)		return chachapoly_crypt(&cc->cp_ctx, seqnr, dest, src, len,		    aadlen, authlen, cc->encrypt);	if (authlen) {		u_char lastiv[1];		if (authlen != cipher_authlen(cc->cipher))			fatal("%s: authlen mismatch %d", __func__, authlen);		/* increment IV */		if (!EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_IV_GEN,		    1, lastiv))			fatal("%s: EVP_CTRL_GCM_IV_GEN", __func__);		/* set tag on decyption */		if (!cc->encrypt &&		    !EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_SET_TAG,		    authlen, (u_char *)src + aadlen + len))			fatal("%s: EVP_CTRL_GCM_SET_TAG", __func__);	}	if (aadlen) {		if (authlen &&		    EVP_Cipher(&cc->evp, NULL, (u_char *)src, aadlen) < 0)			fatal("%s: EVP_Cipher(aad) failed", __func__);		memcpy(dest, src, aadlen);	}	if (len % cc->cipher->block_size)		fatal("%s: bad plaintext length %d", __func__, len);	if (EVP_Cipher(&cc->evp, dest + aadlen, (u_char *)src + aadlen,	    len) < 0)		fatal("%s: EVP_Cipher failed", __func__);	if (authlen) {		/* compute tag (on encrypt) or verify tag (on decrypt) */		if (EVP_Cipher(&cc->evp, NULL, NULL, 0) < 0) {			if (cc->encrypt)				fatal("%s: EVP_Cipher(final) failed", __func__);			else				return -1;		}		if (cc->encrypt &&		    !EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_GET_TAG,		    authlen, dest + aadlen + len))			fatal("%s: EVP_CTRL_GCM_GET_TAG", __func__);	}	return 0;}
开发者ID:CTSRD-SOAAP,项目名称:openssh,代码行数:60,


示例10: _krb5_evp_encrypt

krb5_error_code_krb5_evp_encrypt(krb5_context context,		struct _krb5_key_data *key,		void *data,		size_t len,		krb5_boolean encryptp,		int usage,		void *ivec){    struct _krb5_evp_schedule *ctx = key->schedule->data;    EVP_CIPHER_CTX *c;    c = encryptp ? &ctx->ectx : &ctx->dctx;    if (ivec == NULL) {	/* alloca ? */	size_t len2 = EVP_CIPHER_CTX_iv_length(c);	void *loiv = malloc(len2);	if (loiv == NULL)	    return krb5_enomem(context);	memset(loiv, 0, len2);	EVP_CipherInit_ex(c, NULL, NULL, NULL, loiv, -1);	free(loiv);    } else	EVP_CipherInit_ex(c, NULL, NULL, NULL, ivec, -1);    EVP_Cipher(c, data, data, len);    return 0;}
开发者ID:DavidMulder,项目名称:heimdal,代码行数:26,


示例11: tls_process_record_data

inttls_process_record_data(struct SSLConnection *conn, const opaque *fragment, const int len,                        uint8_t **out, uint32_t *outl){    EVP_CIPHER_CTX *evp;    unsigned char pad;    unsigned char *decoded;    uint32_t dlen;    if (conn->direction == 0) {        evp = &conn->client_cipher_ctx;    } else {        evp = &conn->server_cipher_ctx;    }    decoded = sng_malloc(len);    EVP_Cipher(evp, decoded, (unsigned char *) fragment, len);    // Get padding counter and remove from data    pad = decoded[len - 1];    dlen = (len - (pad + 1) - /* Trailing MAC */20);    if ((int32_t)dlen > 0 && dlen <= *outl) {        memcpy(*out, decoded, dlen);        *outl = dlen;    }    // Clenaup decoded memory    sng_free(decoded);    return *outl;}
开发者ID:cukupupas,项目名称:sngrep,代码行数:31,


示例12: _krb5_des_checksum

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL_krb5_des_checksum(krb5_context context,		   const EVP_MD *evp_md,		   struct _krb5_key_data *key,		   const void *data,		   size_t len,		   Checksum *cksum){    struct _krb5_evp_schedule *ctx = key->schedule->data;    EVP_MD_CTX *m;    DES_cblock ivec;    unsigned char *p = cksum->checksum.data;    krb5_generate_random_block(p, 8);    m = EVP_MD_CTX_create();    if (m == NULL)	return krb5_enomem(context);    EVP_DigestInit_ex(m, evp_md, NULL);    EVP_DigestUpdate(m, p, 8);    EVP_DigestUpdate(m, data, len);    EVP_DigestFinal_ex (m, p + 8, NULL);    EVP_MD_CTX_destroy(m);    memset (&ivec, 0, sizeof(ivec));    EVP_CipherInit_ex(&ctx->ectx, NULL, NULL, NULL, (void *)&ivec, -1);    EVP_Cipher(&ctx->ectx, p, p, 24);    return 0;}
开发者ID:InvLim,项目名称:heimdal,代码行数:30,


示例13: CMAC_Init

int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen, 			const EVP_CIPHER *cipher, ENGINE *impl)	{	static unsigned char zero_iv[EVP_MAX_BLOCK_LENGTH];#ifdef OPENSSL_FIPS	if (FIPS_mode())		{		/* If we have an ENGINE need to allow non FIPS */		if ((impl || ctx->cctx.engine)			&& !(ctx->cctx.flags & EVP_CIPH_FLAG_NON_FIPS_ALLOW))			{			EVPerr(EVP_F_CMAC_INIT, EVP_R_DISABLED_FOR_FIPS);			return 0;			}		/* Other algorithm blocking will be done in FIPS_cmac_init,		 * via FIPS_cipherinit().		 */		if (!impl && !ctx->cctx.engine)			return FIPS_cmac_init(ctx, key, keylen, cipher, NULL);		}#endif	/* All zeros means restart */	if (!key && !cipher && !impl && keylen == 0)		{		/* Not initialised */		if (ctx->nlast_block == -1)			return 0;		if (!EVP_EncryptInit_ex(&ctx->cctx, NULL, NULL, NULL, zero_iv))			return 0;		return 1;		}	/* Initialiase context */	if (cipher && !EVP_EncryptInit_ex(&ctx->cctx, cipher, impl, NULL, NULL))		return 0;	/* Non-NULL key means initialisation complete */	if (key)		{		int bl;		if (!EVP_CIPHER_CTX_cipher(&ctx->cctx))			return 0;		if (!EVP_CIPHER_CTX_set_key_length(&ctx->cctx, keylen))			return 0;		if (!EVP_EncryptInit_ex(&ctx->cctx, NULL, NULL, key, zero_iv))			return 0;		bl = EVP_CIPHER_CTX_block_size(&ctx->cctx);		if (!EVP_Cipher(&ctx->cctx, ctx->tbl, zero_iv, bl))			return 0;		make_kn(ctx->k1, ctx->tbl, bl);		make_kn(ctx->k2, ctx->k1, bl);		OPENSSL_cleanse(ctx->tbl, bl);		/* Reset context again ready for first data block */		if (!EVP_EncryptInit_ex(&ctx->cctx, NULL, NULL, NULL, zero_iv))			return 0;		/* Zero tbl so resume works */		memset(ctx->tbl, 0, bl);		ctx->nlast_block = 0;		}	return 1;	}
开发者ID:AndyPanda95,项目名称:python-for-android,代码行数:60,


示例14: srtp_aes_gcm_openssl_set_aad

/* * This function processes the AAD * * Parameters: *	c	Crypto context *	aad	Additional data to process for AEAD cipher suites *	aad_len	length of aad buffer */static srtp_err_status_t srtp_aes_gcm_openssl_set_aad(void *cv,                                                      const uint8_t *aad,                                                      uint32_t aad_len){    srtp_aes_gcm_ctx_t *c = (srtp_aes_gcm_ctx_t *)cv;    int rv;    /*     * Set dummy tag, OpenSSL requires the Tag to be set before     * processing AAD     */    /*     * OpenSSL never write to address pointed by the last parameter of     * EVP_CIPHER_CTX_ctrl while EVP_CTRL_GCM_SET_TAG (in reality,     * OpenSSL copy its content to the context), so we can make     * aad read-only in this function and all its wrappers.     */    unsigned char dummy_tag[GCM_AUTH_TAG_LEN];    memset(dummy_tag, 0x0, GCM_AUTH_TAG_LEN);    EVP_CIPHER_CTX_ctrl(c->ctx, EVP_CTRL_GCM_SET_TAG, c->tag_len, &dummy_tag);    rv = EVP_Cipher(c->ctx, NULL, aad, aad_len);    if (rv != aad_len) {        return (srtp_err_status_algo_fail);    } else {        return (srtp_err_status_ok);    }}
开发者ID:wolfviking0,项目名称:webcl-webkit,代码行数:37,


示例15: _krb5_des_checksum

krb5_error_code_krb5_des_checksum(krb5_context context,		   CCDigestAlg alg,		   struct _krb5_key_data *key,		   const void *data,		   size_t len,		   Checksum *cksum){    struct _krb5_evp_schedule *ctx = key->schedule->data;    CCDigestRef m;    unsigned char ivec[8];    unsigned char *p = cksum->checksum.data;    krb5_generate_random_block(p, 8);    m = CCDigestCreate(alg);    if (m == NULL) {	krb5_set_error_message(context, ENOMEM, N_("malloc: out of memory", ""));	return ENOMEM;    }    CCDigestUpdate(m, p, 8);    CCDigestUpdate(m, data, len);    CCDigestFinal(m, p + 8);    CCDigestDestroy(m);    memset (&ivec, 0, sizeof(ivec));    EVP_CipherInit_ex(&ctx->ectx, NULL, NULL, NULL, (void *)ivec, -1);    EVP_Cipher(&ctx->ectx, p, p, 24);    return 0;}
开发者ID:alfintatorkace,项目名称:osx-10.9-opensource,代码行数:31,


示例16: CMAC_Final

int CMAC_Final(CMAC_CTX *ctx, unsigned char *out, size_t *poutlen)	{	int i, bl, lb;#ifdef OPENSSL_FIPS	if (FIPS_mode() && !ctx->cctx.engine)		return FIPS_cmac_final(ctx, out, poutlen);#endif	if (ctx->nlast_block == -1)		return 0;	bl = EVP_CIPHER_CTX_block_size(&ctx->cctx);	*poutlen = (size_t)bl;	if (!out)		return 1;	lb = ctx->nlast_block;	/* Is last block complete? */	if (lb == bl)		{		for (i = 0; i < bl; i++)			out[i] = ctx->last_block[i] ^ ctx->k1[i];		}	else		{		ctx->last_block[lb] = 0x80;		if (bl - lb > 1)			memset(ctx->last_block + lb + 1, 0, bl - lb - 1);		for (i = 0; i < bl; i++)			out[i] = ctx->last_block[i] ^ ctx->k2[i];		}	if (!EVP_Cipher(&ctx->cctx, out, out, bl))		{		OPENSSL_cleanse(out, bl);			return 0;		}	return 1;	}
开发者ID:AndyPanda95,项目名称:python-for-android,代码行数:35,


示例17: ssl2_enc

/* read/writes from s->s2->mac_data using length for encrypt and  * decrypt.  It sets s->s2->padding and s->[rw]length * if we are encrypting */void ssl2_enc(SSL *s, int send)	{	EVP_CIPHER_CTX *ds;	unsigned long l;	int bs;	if (send)		{		ds=s->enc_write_ctx;		l=s->s2->wlength;		}	else		{		ds=s->enc_read_ctx;		l=s->s2->rlength;		}	/* check for NULL cipher */	if (ds == NULL) return;	bs=ds->cipher->block_size;	/* This should be using (bs-1) and bs instead of 7 and 8, but	 * what the hell. */	if (bs == 8)		l=(l+7)/8*8;	EVP_Cipher(ds,s->s2->mac_data,s->s2->mac_data,l);	}
开发者ID:EddieGarmon,项目名称:netduino-netmf,代码行数:32,


示例18: test_cipher

static inttest_cipher(struct tests *t){    const EVP_CIPHER *c = t->cipher();    EVP_CIPHER_CTX ectx;    EVP_CIPHER_CTX dctx;    void *d;    EVP_CIPHER_CTX_init(&ectx);    EVP_CIPHER_CTX_init(&dctx);    if (EVP_CipherInit_ex(&ectx, c, NULL, NULL, NULL, 1) != 1)	errx(1, "%s: EVP_CipherInit_ex einit", t->name);    if (EVP_CipherInit_ex(&dctx, c, NULL, NULL, NULL, 0) != 1)	errx(1, "%s: EVP_CipherInit_ex dinit", t->name);    EVP_CIPHER_CTX_set_key_length(&ectx, t->keysize);    EVP_CIPHER_CTX_set_key_length(&dctx, t->keysize);    if (EVP_CipherInit_ex(&ectx, NULL, NULL, t->key, t->iv, 1) != 1)	errx(1, "%s: EVP_CipherInit_ex encrypt", t->name);    if (EVP_CipherInit_ex(&dctx, NULL, NULL, t->key, t->iv, 0) != 1)	errx(1, "%s: EVP_CipherInit_ex decrypt", t->name);    d = emalloc(t->datasize);    if (!EVP_Cipher(&ectx, d, t->indata, t->datasize))	return 1;    if (memcmp(d, t->outdata, t->datasize) != 0)	errx(1, "%s: encrypt not the same", t->name);    if (!EVP_Cipher(&dctx, d, d, t->datasize))	return 1;    if (memcmp(d, t->indata, t->datasize) != 0)	errx(1, "%s: decrypt not the same", t->name);    if (t->outiv)	/* XXXX check  */;    EVP_CIPHER_CTX_cleanup(&ectx);    EVP_CIPHER_CTX_cleanup(&dctx);    free(d);    return 0;}
开发者ID:Kendra123,项目名称:heimdal,代码行数:47,


示例19: cipher_crypt

voidcipher_crypt(CipherContext *cc, u_char *dest, const u_char *src, u_int len){	if (len % cc->cipher->block_size)		fatal("cipher_encrypt: bad plaintext length %d", len);	if (EVP_Cipher(&cc->evp, dest, __UNCONST(src), len) == 0)		fatal("evp_crypt: EVP_Cipher failed");}
开发者ID:gosudream,项目名称:netbsd-src,代码行数:8,


示例20: cipher_init

voidcipher_init(CipherContext *cc, Cipher *cipher,    const u_char *key, u_int keylen, const u_char *iv, u_int ivlen,    int do_encrypt){	static int dowarn = 1;	const EVP_CIPHER *type;	int klen;	u_char *junk, *discard;	if (cipher->number == SSH_CIPHER_DES) {		if (dowarn) {			error("Warning: use of DES is strongly discouraged "			    "due to cryptographic weaknesses");			dowarn = 0;		}		if (keylen > 8)			keylen = 8;	}	cc->plaintext = (cipher->number == SSH_CIPHER_NONE);	if (keylen < cipher->key_len)		fatal("cipher_init: key length %d is insufficient for %s.",		    keylen, cipher->name);	if (iv != NULL && ivlen < cipher->block_size)		fatal("cipher_init: iv length %d is insufficient for %s.",		    ivlen, cipher->name);	cc->cipher = cipher;	type = (*cipher->evptype)();	EVP_CIPHER_CTX_init(&cc->evp);	if (EVP_CipherInit(&cc->evp, type, NULL, __UNCONST(iv),	    (do_encrypt == CIPHER_ENCRYPT)) == 0)		fatal("cipher_init: EVP_CipherInit failed for %s",		    cipher->name);	klen = EVP_CIPHER_CTX_key_length(&cc->evp);	if (klen > 0 && keylen != (u_int)klen) {		debug2("cipher_init: set keylen (%d -> %d)", klen, keylen);		if (EVP_CIPHER_CTX_set_key_length(&cc->evp, keylen) == 0)			fatal("cipher_init: set keylen failed (%d -> %d)",			    klen, keylen);	}	if (EVP_CipherInit(&cc->evp, NULL, __UNCONST(key), NULL, -1) == 0)		fatal("cipher_init: EVP_CipherInit: set key failed for %s",		    cipher->name);	if (cipher->discard_len > 0) {		junk = xmalloc(cipher->discard_len);		discard = xmalloc(cipher->discard_len);		if (EVP_Cipher(&cc->evp, discard, junk,		    cipher->discard_len) == 0)			fatal("evp_crypt: EVP_Cipher failed during discard");		memset(discard, 0, cipher->discard_len);		xfree(junk);		xfree(discard);	}}
开发者ID:gosudream,项目名称:netbsd-src,代码行数:58,


示例21: CMAC_Update

int CMAC_Update(CMAC_CTX *ctx, const void *in, size_t dlen)	{	const unsigned char *data = in;	size_t bl;#ifdef OPENSSL_FIPS	if (FIPS_mode() && !ctx->cctx.engine)		return FIPS_cmac_update(ctx, in, dlen);#endif	if (ctx->nlast_block == -1)		return 0;	if (dlen == 0)		return 1;	bl = EVP_CIPHER_CTX_block_size(&ctx->cctx);	/* Copy into partial block if we need to */	if (ctx->nlast_block > 0)		{		size_t nleft;		nleft = bl - ctx->nlast_block;		if (dlen < nleft)			nleft = dlen;		memcpy(ctx->last_block + ctx->nlast_block, data, nleft);		dlen -= nleft;		ctx->nlast_block += nleft;		/* If no more to process return */		if (dlen == 0)			return 1;		data += nleft;		/* Else not final block so encrypt it */		if (!EVP_Cipher(&ctx->cctx, ctx->tbl, ctx->last_block,bl))			return 0;		}	/* Encrypt all but one of the complete blocks left */	while(dlen > bl)		{		if (!EVP_Cipher(&ctx->cctx, ctx->tbl, data, bl))			return 0;		dlen -= bl;		data += bl;		}	/* Copy any data left to last block buffer */	memcpy(ctx->last_block, data, dlen);	ctx->nlast_block = dlen;	return 1;	}
开发者ID:AndyPanda95,项目名称:python-for-android,代码行数:45,


示例22: cipher_do_cipher

static intcipher_do_cipher(hc_EVP_CIPHER_CTX *ctx, unsigned char *out,                 const unsigned char *in, unsigned int len){    struct ossl_cipher_ctx *ossl_ctx = ctx->cipher_data;    assert(ossl_ctx != NULL);    return EVP_Cipher(ossl_ctx->ossl_cipher_ctx, out, in, len);}
开发者ID:InvLim,项目名称:heimdal,代码行数:9,


示例23: cipher_crypt

/* * cipher_crypt() operates as following: * Copy 'aadlen' bytes (without en/decryption) from 'src' to 'dest'. * Theses bytes are treated as additional authenticated data for * authenticated encryption modes. * En/Decrypt 'len' bytes at offset 'aadlen' from 'src' to 'dest'. * Use 'authlen' bytes at offset 'len'+'aadlen' as the authentication tag. * This tag is written on encryption and verified on decryption. * Both 'aadlen' and 'authlen' can be set to 0. */voidcipher_crypt(CipherContext *cc, u_char *dest, const u_char *src,    u_int len, u_int aadlen, u_int authlen){	if (authlen) {		u_char lastiv[1];		if (authlen != cipher_authlen(cc->cipher))			fatal("%s: authlen mismatch %d", __func__, authlen);		/* increment IV */		if (!EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_IV_GEN,		    1, lastiv))			fatal("%s: EVP_CTRL_GCM_IV_GEN", __func__);		/* set tag on decyption */		if (!cc->encrypt &&		    !EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_SET_TAG,		    authlen, __UNCONST(src + aadlen + len)))			fatal("%s: EVP_CTRL_GCM_SET_TAG", __func__);	}	if (aadlen) {		if (authlen &&		    EVP_Cipher(&cc->evp, NULL, (const u_char *)src, aadlen) < 0)			fatal("%s: EVP_Cipher(aad) failed", __func__);		memcpy(dest, src, aadlen);	}	if (len % cc->cipher->block_size)		fatal("%s: bad plaintext length %d", __func__, len);	if (EVP_Cipher(&cc->evp, dest + aadlen, (const u_char *)src + aadlen,	    len) < 0)		fatal("%s: EVP_Cipher failed", __func__);	if (authlen) {		/* compute tag (on encrypt) or verify tag (on decrypt) */		if (EVP_Cipher(&cc->evp, NULL, NULL, 0) < 0) {			if (cc->encrypt)				fatal("%s: EVP_Cipher(final) failed", __func__);			else				fatal("Decryption integrity check failed");		}		if (cc->encrypt &&		    !EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_GET_TAG,		    authlen, dest + aadlen + len))			fatal("%s: EVP_CTRL_GCM_GET_TAG", __func__);	}}
开发者ID:enukane,项目名称:netbsd-src,代码行数:54,


示例24: sftp_cipher_write_data

int sftp_cipher_write_data(struct ssh2_packet *pkt, unsigned char *buf,    size_t *buflen) {  struct sftp_cipher *cipher;  EVP_CIPHER_CTX *cipher_ctx;  cipher = &(write_ciphers[write_cipher_idx]);  cipher_ctx = write_ctxs[write_cipher_idx];  if (cipher->key) {    int res;    unsigned char *data, *ptr;    uint32_t datalen, datasz = sizeof(uint32_t) + pkt->packet_len;    datalen = datasz;    ptr = data = palloc(pkt->pool, datasz);    sftp_msg_write_int(&data, &datalen, pkt->packet_len);    sftp_msg_write_byte(&data, &datalen, pkt->padding_len);    sftp_msg_write_data(&data, &datalen, pkt->payload, pkt->payload_len, FALSE);    sftp_msg_write_data(&data, &datalen, pkt->padding, pkt->padding_len, FALSE);    res = EVP_Cipher(cipher_ctx, buf, ptr, (datasz - datalen));    if (res != 1) {      (void) pr_log_writefile(sftp_logfd, MOD_SFTP_VERSION,        "error encrypting %s data for client: %s", cipher->algo,        sftp_crypto_get_errors());      errno = EIO;      return -1;    }    *buflen = (datasz - datalen);#ifdef SFTP_DEBUG_PACKET{  unsigned int i;  (void) pr_log_writefile(sftp_logfd, MOD_SFTP_VERSION,    "encrypted packet data (len %lu):", (unsigned long) *buflen);  for (i = 0; i < *buflen;) {    (void) pr_log_writefile(sftp_logfd, MOD_SFTP_VERSION,      "  %02x%02x %02x%02x %02x%02x %02x%02x",      ((unsigned char *) buf)[i], ((unsigned char *) buf)[i+1],      ((unsigned char *) buf)[i+2], ((unsigned char *) buf)[i+3],      ((unsigned char *) buf)[i+4], ((unsigned char *) buf)[i+5],      ((unsigned char *) buf)[i+6], ((unsigned char *) buf)[i+7]);    i += 8;  }}#endif    return 0;  }  *buflen = 0;  return 0;}
开发者ID:proftpd,项目名称:proftpd,代码行数:56,


示例25: cipher_crypt

intcipher_crypt(struct sshcipher_ctx *cc, u_char *dest,    const u_char *src, u_int len){	if (len % cc->cipher->block_size)		return SSH_ERR_INVALID_ARGUMENT;	if (EVP_Cipher(&cc->evp, dest, (u_char *)src, len) == 0)		return SSH_ERR_LIBCRYPTO_ERROR;	return 0;}
开发者ID:mpitzl,项目名称:libopenssh,代码行数:10,


示例26: AES_PRF

static krb5_error_codeAES_PRF(krb5_context context,	krb5_crypto crypto,	const krb5_data *in,	krb5_data *out){    struct _krb5_checksum_type *ct = crypto->et->checksum;    krb5_error_code ret;    Checksum result;    krb5_keyblock *derived;    result.cksumtype = ct->type;    ret = krb5_data_alloc(&result.checksum, ct->checksumsize);    if (ret) {	krb5_set_error_message(context, ret, N_("malloc: out memory", ""));	return ret;    }    ret = (*ct->checksum)(context, NULL, in->data, in->length, 0, &result);    if (ret) {	krb5_data_free(&result.checksum);	return ret;    }    if (result.checksum.length < crypto->et->blocksize)	krb5_abortx(context, "internal prf error");    derived = NULL;    ret = krb5_derive_key(context, crypto->key.key,			  crypto->et->type, "prf", 3, &derived);    if (ret)	krb5_abortx(context, "krb5_derive_key");    ret = krb5_data_alloc(out, crypto->et->blocksize);    if (ret)	krb5_abortx(context, "malloc failed");    {	const EVP_CIPHER *c = (*crypto->et->keytype->evp)();	EVP_CIPHER_CTX *ctx;	ctx = EVP_CIPHER_CTX_new(); /* ivec all zero */	if (ctx == NULL)	    krb5_abortx(context, "malloc failed");	EVP_CipherInit_ex(ctx, c, NULL, derived->keyvalue.data, NULL, 1);	EVP_Cipher(ctx, out->data, result.checksum.data,		   crypto->et->blocksize);	EVP_CIPHER_CTX_free(ctx);    }    krb5_data_free(&result.checksum);    krb5_free_keyblock(context, derived);    return ret;}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:55,


示例27: _libssh2_cipher_crypt

int_libssh2_cipher_crypt(_libssh2_cipher_ctx * ctx,                      _libssh2_cipher_type(algo),                      int encrypt, unsigned char *block, size_t blocksize){    unsigned char buf[EVP_MAX_BLOCK_LENGTH];    int ret;    (void) algo;    (void) encrypt;#ifdef HAVE_OPAQUE_STRUCTS    ret = EVP_Cipher(*ctx, buf, block, blocksize);#else    ret = EVP_Cipher(ctx, buf, block, blocksize);#endif    if(ret == 1) {        memcpy(block, buf, blocksize);    }    return ret == 1 ? 0 : 1;}
开发者ID:stinb,项目名称:libssh2,代码行数:20,


示例28: FIPS_aes_test

/* AES: encrypt and decrypt known plaintext, verify result matches original plaintext*/static int FIPS_aes_test(void)	{	int ret = 0;	unsigned char pltmp[16];	unsigned char citmp[16];	unsigned char key[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};	unsigned char plaintext[16] = "etaonrishdlcu";	EVP_CIPHER_CTX ctx;	EVP_CIPHER_CTX_init(&ctx);	if (EVP_CipherInit_ex(&ctx, EVP_aes_128_ecb(),NULL, key, NULL, 1) <= 0)		goto err;	EVP_Cipher(&ctx, citmp, plaintext, 16);	if (EVP_CipherInit_ex(&ctx, EVP_aes_128_ecb(),NULL, key, NULL, 0) <= 0)		goto err;	EVP_Cipher(&ctx, pltmp, citmp, 16);	if (memcmp(pltmp, plaintext, 16))		goto err;	ret = 1;	err:	EVP_CIPHER_CTX_cleanup(&ctx);	return ret;	}
开发者ID:peterlingoal,项目名称:openssl,代码行数:24,


示例29: srtp_aes_gcm_openssl_encrypt

/* * This function encrypts a buffer using AES GCM mode * * Parameters: *	c	Crypto context *	buf	data to encrypt *	enc_len	length of encrypt buffer */static srtp_err_status_t srtp_aes_gcm_openssl_encrypt (srtp_aes_gcm_ctx_t *c, unsigned char *buf, unsigned int *enc_len){    if (c->dir != direction_encrypt && c->dir != direction_decrypt) {        return (srtp_err_status_bad_param);    }    /*     * Encrypt the data     */    EVP_Cipher(&c->ctx, buf, buf, *enc_len);    return (srtp_err_status_ok);}
开发者ID:Harut42,项目名称:libsrtp,代码行数:21,



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


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