这篇教程C++ EVP_CIPHER_CTX_block_size函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中EVP_CIPHER_CTX_block_size函数的典型用法代码示例。如果您正苦于以下问题:C++ EVP_CIPHER_CTX_block_size函数的具体用法?C++ EVP_CIPHER_CTX_block_size怎么用?C++ EVP_CIPHER_CTX_block_size使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了EVP_CIPHER_CTX_block_size函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: encrypt_bufvoid encrypt_buf(struct encryption_ctx *ctx, char *buf, int *len) { if (_method == EncryptionTable) { table_encrypt(buf, *len); } else { if (ctx->status == STATUS_EMPTY) { int iv_len = encryption_iv_len[_method]; unsigned char iv[EVP_MAX_IV_LENGTH]; memset(iv, 0, iv_len); RAND_bytes(iv, iv_len); init_cipher(ctx, iv, iv_len, 1); int out_len = *len + EVP_CIPHER_CTX_block_size(ctx->ctx); unsigned char *cipher_text = malloc(out_len); EVP_CipherUpdate(ctx->ctx, cipher_text, &out_len, buf, *len); memcpy(buf, iv, iv_len); memcpy(buf + iv_len, cipher_text, out_len); *len = iv_len + out_len; free(cipher_text); } else { int out_len = *len + EVP_CIPHER_CTX_block_size(ctx->ctx); unsigned char *cipher_text = malloc(out_len); EVP_CipherUpdate(ctx->ctx, cipher_text, &out_len, buf, *len); memcpy(buf, cipher_text, out_len); *len = out_len; free(cipher_text); } }}
开发者ID:hynnet,项目名称:ShadowWeb,代码行数:27,
示例2: soter_sym_aead_decrypt_updatesoter_status_t soter_sym_aead_decrypt_update(soter_sym_ctx_t *ctx, const void* cipher_data, const size_t cipher_data_length, void* plain_data, size_t* plain_data_length){ if(plain_data==NULL || (*plain_data_length)<(cipher_data_length+EVP_CIPHER_CTX_block_size(&(ctx->evp_sym_ctx))-1)){ (*plain_data_length)=cipher_data_length+EVP_CIPHER_CTX_block_size(&(ctx->evp_sym_ctx))-1; return SOTER_BUFFER_TOO_SMALL; } return soter_sym_ctx_update(ctx, cipher_data, cipher_data_length, plain_data, plain_data_length, false);}
开发者ID:josephwinston,项目名称:themis,代码行数:7,
示例3: CMAC_Initint 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; sgx_memset(ctx->tbl, 0, EVP_CIPHER_CTX_block_size(&ctx->cctx)); ctx->nlast_block = 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 */ sgx_memset(ctx->tbl, 0, bl); ctx->nlast_block = 0; } return 1;}
开发者ID:johnjohnsp1,项目名称:opensgx,代码行数:58,
|