本文整理汇总了C++中crypto_hash_init函数的典型用法代码示例。如果您正苦于以下问题:C++ crypto_hash_init函数的具体用法?C++ crypto_hash_init怎么用?C++ crypto_hash_init使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了crypto_hash_init函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: tls_key_x_server_params_hash
int tls_key_x_server_params_hash(u16 tls_version, const u8 *client_random,
const u8 *server_random,
const u8 *server_params,
size_t server_params_len, u8 *hash)
{
u8 *hpos;
size_t hlen;
struct crypto_hash *ctx;
hpos = hash;
ctx = crypto_hash_init(CRYPTO_HASH_ALG_MD5, NULL, 0);
if (ctx == NULL)
return -1;
crypto_hash_update(ctx, client_random, TLS_RANDOM_LEN);
crypto_hash_update(ctx, server_random, TLS_RANDOM_LEN);
crypto_hash_update(ctx, server_params, server_params_len);
hlen = MD5_MAC_LEN;
if (crypto_hash_finish(ctx, hash, &hlen) < 0)
return -1;
hpos += hlen;
ctx = crypto_hash_init(CRYPTO_HASH_ALG_SHA1, NULL, 0);
if (ctx == NULL)
return -1;
crypto_hash_update(ctx, client_random, TLS_RANDOM_LEN);
crypto_hash_update(ctx, server_random, TLS_RANDOM_LEN);
crypto_hash_update(ctx, server_params, server_params_len);
hlen = hash + sizeof(hash) - hpos;
if (crypto_hash_finish(ctx, hpos, &hlen) < 0)
return -1;
hpos += hlen;
return hpos - hash;
}
开发者ID:9A9A,项目名称:wpa_supplicant-fork,代码行数:34,代码来源:tlsv1_common.c
示例2: tls_verify_hash_init
int tls_verify_hash_init(struct tls_verify_hash *verify)
{
tls_verify_hash_free(verify);
verify->md5_client = crypto_hash_init(CRYPTO_HASH_ALG_MD5, NULL, 0);
verify->md5_server = crypto_hash_init(CRYPTO_HASH_ALG_MD5, NULL, 0);
verify->md5_cert = crypto_hash_init(CRYPTO_HASH_ALG_MD5, NULL, 0);
verify->sha1_client = crypto_hash_init(CRYPTO_HASH_ALG_SHA1, NULL, 0);
verify->sha1_server = crypto_hash_init(CRYPTO_HASH_ALG_SHA1, NULL, 0);
verify->sha1_cert = crypto_hash_init(CRYPTO_HASH_ALG_SHA1, NULL, 0);
if (verify->md5_client == NULL || verify->md5_server == NULL ||
verify->md5_cert == NULL || verify->sha1_client == NULL ||
verify->sha1_server == NULL || verify->sha1_cert == NULL) {
tls_verify_hash_free(verify);
return -1;
}
#ifdef CONFIG_TLSV12
verify->sha256_client = crypto_hash_init(CRYPTO_HASH_ALG_SHA256, NULL,
0);
verify->sha256_server = crypto_hash_init(CRYPTO_HASH_ALG_SHA256, NULL,
0);
verify->sha256_cert = crypto_hash_init(CRYPTO_HASH_ALG_SHA256, NULL,
0);
if (verify->sha256_client == NULL || verify->sha256_server == NULL ||
verify->sha256_cert == NULL) {
tls_verify_hash_free(verify);
return -1;
}
#endif /* CONFIG_TLSV12 */
return 0;
}
开发者ID:0x000000FF,项目名称:wpa_supplicant_for_edison,代码行数:30,代码来源:tlsv1_common.c
示例3: init_hash
static int
init_hash (struct hash_desc * desc)
{
struct crypto_hash * tfm = NULL;
int ret = -1;
/* Same as build time */
const unsigned char * key = "The quick brown fox jumps over the lazy dog";
tfm = crypto_alloc_hash ("hmac(sha256)", 0, 0);
if (IS_ERR(tfm)) {
printk(KERN_ERR "FIPS(%s): integ failed to allocate tfm %ld", __FUNCTION__, PTR_ERR(tfm));
return -1;
}
ret = crypto_hash_setkey (tfm, key, strlen(key));
if (ret) {
printk(KERN_ERR "FIPS(%s): fail at crypto_hash_setkey", __FUNCTION__);
return -1;
}
desc->tfm = tfm;
desc->flags = 0;
ret = crypto_hash_init (desc);
if (ret) {
printk(KERN_ERR "FIPS(%s): fail at crypto_hash_init", __FUNCTION__);
return -1;
}
return 0;
}
开发者ID:1paul1,项目名称:dynamite,代码行数:35,代码来源:fips_integrity.c
示例4: sha1_init
static int __init sha1_init(void)
{
struct scatterlist sg;
struct crypto_hash *tfm;
struct hash_desc desc;
unsigned char output[SHA1_LENGTH];
unsigned char buf[10];
int i;
printk(KERN_INFO "sha1: %s\n", __FUNCTION__);
memset(buf, 'A', 10);
memset(output, 0x00, SHA1_LENGTH);
tfm = crypto_alloc_hash("sha1", 0, CRYPTO_ALG_ASYNC);
desc.tfm = tfm;
desc.flags = 0;
sg_init_one(&sg, buf, 10);
crypto_hash_init(&desc);
crypto_hash_update(&desc, &sg, 10);
crypto_hash_final(&desc, output);
for (i = 0; i < 20; i++) {
printk(KERN_ERR "%d-%d\n", output[i], i);
}
crypto_free_hash(tfm);
return 0;
}
开发者ID:chengyi818,项目名称:kata,代码行数:33,代码来源:sha1.c
示例5: key_to_hash
unsigned char * key_to_hash(unsigned char *key)
{
struct scatterlist sg;
struct crypto_hash *tfm;
struct hash_desc desc;
unsigned char *digest= NULL;
digest=kmalloc(16,GFP_KERNEL);
if(IS_ERR(digest)){
printk("Error in allocating memory to Hash Key\n ");
return NULL;
}
tfm = crypto_alloc_hash("md5", 0, 0);
desc.tfm = tfm;
desc.flags = 0;
sg_init_one(&sg, key, 16);
crypto_hash_init(&desc);
crypto_hash_update(&desc, &sg, 16);
crypto_hash_final(&desc, digest);
crypto_free_hash(tfm);
if(!digest){
printk("Error in hashing userland key\n");
return NULL;
}
return digest;
}
开发者ID:shubhi28,项目名称:Encryption-Decryption-System-call,代码行数:32,代码来源:sys_xcrypt.c
示例6: eap_pwd_h_init
/* The random function H(x) = HMAC-SHA256(0^32, x) */
struct crypto_hash * eap_pwd_h_init(void)
{
u8 allzero[SHA256_MAC_LEN];
os_memset(allzero, 0, SHA256_MAC_LEN);
return crypto_hash_init(CRYPTO_HASH_ALG_HMAC_SHA256, allzero,
SHA256_MAC_LEN);
}
开发者ID:0x000000FF,项目名称:wpa_supplicant_for_edison,代码行数:8,代码来源:eap_pwd_common.c
示例7: tee_hash_createdigest
TEE_Result tee_hash_createdigest(uint32_t algo, const uint8_t *data,
size_t datalen, uint8_t *digest,
size_t digestlen)
{
TEE_Result res;
void *ctx = NULL;
res = crypto_hash_alloc_ctx(&ctx, algo);
if (res)
return res;
res = crypto_hash_init(ctx, algo);
if (res)
goto out;
if (datalen != 0) {
res = crypto_hash_update(ctx, algo, data, datalen);
if (res)
goto out;
}
res = crypto_hash_final(ctx, algo, digest, digestlen);
out:
crypto_hash_free_ctx(ctx, algo);
return res;
}
开发者ID:OP-TEE,项目名称:optee_os,代码行数:27,代码来源:tee_cryp_utl.c
示例8: generate_key
// given a string, generate a 32-bit key
int generate_key(char *pwd, u8 *pkey)
{
int len_pwd = strlen(pwd);
struct scatterlist sg;
struct crypto_hash *tfm;
struct hash_desc desc;
int i;
unsigned char output[SHA1_LENGTH]; // key generated
char *buf = kmalloc(MAX_PWD, GFP_KERNEL); // password buffer
memset(buf, 0, MAX_PWD);
strncpy(buf, pwd, len_pwd);
tfm = crypto_alloc_hash("sha1", 1, CRYPTO_ALG_ASYNC);
desc.tfm = tfm;
desc.flags = 0;
sg_init_one(&sg, buf, len_pwd);
crypto_hash_init(&desc);
crypto_hash_update(&desc, &sg, len_pwd);
crypto_hash_final(&desc, output);
for(i=0; i<16; i++)
pkey[i] = output[i];
for(i=0; i<16; i++)
pkey[i+16] = output[i];
crypto_free_hash(tfm);
kfree(buf);
return 0;
}
开发者ID:finallyjustice,项目名称:linux-module,代码行数:35,代码来源:main.c
示例9: pohmelfs_hash
static int pohmelfs_hash(struct pohmelfs_crypto_thread *tc)
{
struct pohmelfs_crypto_engine *e = &tc->eng;
struct hash_desc *desc = e->data;
unsigned char *dst = tc->trans->iovec.iov_base + sizeof(struct netfs_cmd);
int err;
desc->tfm = e->hash;
desc->flags = 0;
err = crypto_hash_init(desc);
if (err)
return err;
err = pohmelfs_trans_iter(tc->trans, e, pohmelfs_hash_iterator);
if (err)
return err;
err = crypto_hash_final(desc, dst);
if (err)
return err;
{
unsigned int i;
dprintk("%s: ", __func__);
for (i = 0; i < tc->psb->crypto_attached_size; ++i)
dprintka("%02x ", dst[i]);
dprintka("\n");
}
return 0;
}
开发者ID:119-org,项目名称:hi3518-osdrv,代码行数:32,代码来源:crypto.c
示例10: make_checksum
/* checksum the plaintext data and hdrlen bytes of the token header */
s32
make_checksum(char *cksumname, char *header, int hdrlen, struct xdr_buf *body,
int body_offset, struct xdr_netobj *cksum)
{
struct hash_desc desc; /* XXX add to ctx? */
struct scatterlist sg[1];
int err;
desc.tfm = crypto_alloc_hash(cksumname, 0, CRYPTO_ALG_ASYNC);
if (IS_ERR(desc.tfm))
return GSS_S_FAILURE;
cksum->len = crypto_hash_digestsize(desc.tfm);
desc.flags = CRYPTO_TFM_REQ_MAY_SLEEP;
err = crypto_hash_init(&desc);
if (err)
goto out;
sg_set_buf(sg, header, hdrlen);
err = crypto_hash_update(&desc, sg, hdrlen);
if (err)
goto out;
err = xdr_process_buf(body, body_offset, body->len - body_offset,
checksummer, &desc);
if (err)
goto out;
err = crypto_hash_final(&desc, cksum->data);
out:
crypto_free_hash(desc.tfm);
return err ? GSS_S_FAILURE : 0;
}
开发者ID:3sOx,项目名称:asuswrt-merlin,代码行数:32,代码来源:gss_krb5_crypto.c
示例11: sha1_init
void sha1_init(void *c)
{
struct hash_desc *d = c;
if (crypto_hash_init(d))
printk(KERN_INFO "crypto_hash_init()\n");
}
开发者ID:Acidburn0zzz,项目名称:tcpcrypt,代码行数:7,代码来源:main.c
示例12: hash_lbr
int hash_lbr(uint8_t hash[DIGEST_LENGTH],struct lbr_t *lbr) {
struct scatterlist sg;
int i, j;
/* No error checking here. If anything fails, we better go straight home anyway. */
crypto_hash_init(&armor_desc);
armor_desc.flags = 0;
/* Loop over all LBR entries. */
for (i = 0; i < LBR_ENTRIES; i++) {
sg_set_buf(&sg, &lbr->from[(lbr->tos - i) % LBR_ENTRIES], sizeof(uint64_t));
crypto_hash_update(&armor_desc, &sg, sizeof(uint64_t));
sg_set_buf(&sg, &lbr->to [(lbr->tos - i) % LBR_ENTRIES], sizeof(uint64_t));
crypto_hash_update(&armor_desc, &sg, sizeof(uint64_t));
printdj(false, "lbr[%2d], <from: 0x%012llx, to: 0x%012llx>\n", i,
lbr->from[(lbr->tos+LBR_ENTRIES-i) % LBR_ENTRIES],
lbr-> to[(lbr->tos+LBR_ENTRIES-i) % LBR_ENTRIES]);
}
ARMOR_STAT_INC(digests);
crypto_hash_final(&armor_desc, hash);
printdj(false, "hash: ");
for (j = 0; j < DIGEST_LENGTH; j++) printdj(false,"%02x", hash[j]);
printdj(false,"\n");
return 0;
}
开发者ID:aiaxun,项目名称:KernelModule,代码行数:28,代码来源:lbr.c
示例13: tcp_v6_md5_hash_hdr
static int tcp_v6_md5_hash_hdr(char *md5_hash, struct tcp_md5sig_key *key,
const struct in6_addr *daddr, struct in6_addr *saddr,
const struct tcphdr *th)
{
struct tcp_md5sig_pool *hp;
struct hash_desc *desc;
hp = tcp_get_md5sig_pool();
if (!hp)
goto clear_hash_noput;
desc = &hp->md5_desc;
if (crypto_hash_init(desc))
goto clear_hash;
if (tcp_v6_md5_hash_pseudoheader(hp, daddr, saddr, th->doff << 2))
goto clear_hash;
if (tcp_md5_hash_header(hp, th))
goto clear_hash;
if (tcp_md5_hash_key(hp, key))
goto clear_hash;
if (crypto_hash_final(desc, md5_hash))
goto clear_hash;
tcp_put_md5sig_pool();
return 0;
clear_hash:
tcp_put_md5sig_pool();
clear_hash_noput:
memset(md5_hash, 0, 16);
return 1;
}
开发者ID:Leoyzen,项目名称:Charm-Eye,代码行数:32,代码来源:tcp_ipv6.c
示例14: tee_cryp_concat_kdf
TEE_Result tee_cryp_concat_kdf(uint32_t hash_id, const uint8_t *shared_secret,
size_t shared_secret_len,
const uint8_t *other_info,
size_t other_info_len, uint8_t *derived_key,
size_t derived_key_len)
{
TEE_Result res;
size_t hash_len, i, n, sz;
void *ctx = NULL;
uint8_t tmp[TEE_MAX_HASH_SIZE];
uint32_t be_count;
uint8_t *out = derived_key;
uint32_t hash_algo = TEE_ALG_HASH_ALGO(hash_id);
res = crypto_hash_alloc_ctx(&ctx, hash_algo);
if (res != TEE_SUCCESS)
return res;
res = tee_hash_get_digest_size(hash_algo, &hash_len);
if (res != TEE_SUCCESS)
goto out;
n = derived_key_len / hash_len;
sz = hash_len;
for (i = 1; i <= n + 1; i++) {
be_count = TEE_U32_TO_BIG_ENDIAN(i);
res = crypto_hash_init(ctx, hash_algo);
if (res != TEE_SUCCESS)
goto out;
res = crypto_hash_update(ctx, hash_algo, (uint8_t *)&be_count,
sizeof(be_count));
if (res != TEE_SUCCESS)
goto out;
res = crypto_hash_update(ctx, hash_algo, shared_secret,
shared_secret_len);
if (res != TEE_SUCCESS)
goto out;
if (other_info && other_info_len) {
res = crypto_hash_update(ctx, hash_algo, other_info,
other_info_len);
if (res != TEE_SUCCESS)
goto out;
}
res = crypto_hash_final(ctx, hash_algo, tmp, sizeof(tmp));
if (res != TEE_SUCCESS)
goto out;
if (i == n + 1)
sz = derived_key_len % hash_len;
memcpy(out, tmp, sz);
out += sz;
}
res = TEE_SUCCESS;
out:
crypto_hash_free_ctx(ctx, hash_algo);
return res;
}
开发者ID:OP-TEE,项目名称:optee_os,代码行数:58,代码来源:tee_cryp_concat_kdf.c
示例15: cfs_crypto_hash_alloc
static int cfs_crypto_hash_alloc(unsigned char alg_id,
const struct cfs_crypto_hash_type **type,
struct hash_desc *desc, unsigned char *key,
unsigned int key_len)
{
int err = 0;
*type = cfs_crypto_hash_type(alg_id);
if (*type == NULL) {
CWARN("Unsupported hash algorithm id = %d, max id is %d\n",
alg_id, CFS_HASH_ALG_MAX);
return -EINVAL;
}
desc->tfm = crypto_alloc_hash((*type)->cht_name, 0, 0);
if (desc->tfm == NULL)
return -EINVAL;
if (IS_ERR(desc->tfm)) {
CDEBUG(D_INFO, "Failed to alloc crypto hash %s\n",
(*type)->cht_name);
return PTR_ERR(desc->tfm);
}
desc->flags = 0;
/** Shash have different logic for initialization then digest
* shash: crypto_hash_setkey, crypto_hash_init
* digest: crypto_digest_init, crypto_digest_setkey
* Skip this function for digest, because we use shash logic at
* cfs_crypto_hash_alloc.
*/
if (key != NULL) {
err = crypto_hash_setkey(desc->tfm, key, key_len);
} else if ((*type)->cht_key != 0) {
err = crypto_hash_setkey(desc->tfm,
(unsigned char *)&((*type)->cht_key),
(*type)->cht_size);
}
if (err != 0) {
crypto_free_hash(desc->tfm);
return err;
}
CDEBUG(D_INFO, "Using crypto hash: %s (%s) speed %d MB/s\n",
(crypto_hash_tfm(desc->tfm))->__crt_alg->cra_name,
(crypto_hash_tfm(desc->tfm))->__crt_alg->cra_driver_name,
cfs_crypto_hash_speeds[alg_id]);
return crypto_hash_init(desc);
}
开发者ID:Cool-Joe,项目名称:imx23-audio,代码行数:53,代码来源:linux-crypto.c
示例16: __iscsi_segment_init
/*
* Helper function to set up segment buffer
*/
static inline void
__iscsi_segment_init(struct iscsi_segment *segment, size_t size,
iscsi_segment_done_fn_t *done, struct hash_desc *hash)
{
memset(segment, 0, sizeof(*segment));
segment->total_size = size;
segment->done = done;
if (hash) {
segment->hash = hash;
crypto_hash_init(hash);
}
}
开发者ID:kprog,项目名称:linux,代码行数:16,代码来源:libiscsi_tcp.c
示例17: tcp_v6_md5_hash_skb
static int tcp_v6_md5_hash_skb(char *md5_hash, struct tcp_md5sig_key *key,
const struct sock *sk,
const struct request_sock *req,
const struct sk_buff *skb)
{
const struct in6_addr *saddr, *daddr;
struct tcp_md5sig_pool *hp;
struct hash_desc *desc;
const struct tcphdr *th = tcp_hdr(skb);
if (sk) {
saddr = &inet6_sk(sk)->saddr;
daddr = &inet6_sk(sk)->daddr;
} else if (req) {
saddr = &inet6_rsk(req)->loc_addr;
daddr = &inet6_rsk(req)->rmt_addr;
} else {
const struct ipv6hdr *ip6h = ipv6_hdr(skb);
saddr = &ip6h->saddr;
daddr = &ip6h->daddr;
}
hp = tcp_get_md5sig_pool();
if (!hp)
goto clear_hash_noput;
desc = &hp->md5_desc;
if (crypto_hash_init(desc))
goto clear_hash;
if (tcp_v6_md5_hash_pseudoheader(hp, daddr, saddr, skb->len))
goto clear_hash;
if (tcp_md5_hash_header(hp, th))
goto clear_hash;
if (tcp_md5_hash_skb_data(hp, skb, th->doff << 2))
goto clear_hash;
if (tcp_md5_hash_key(hp, key))
goto clear_hash;
if (crypto_hash_final(desc, md5_hash))
goto clear_hash;
tcp_put_md5sig_pool();
return 0;
clear_hash:
tcp_put_md5sig_pool();
clear_hash_noput:
memset(md5_hash, 0, 16);
return 1;
}
开发者ID:Leoyzen,项目名称:Charm-Eye,代码行数:50,代码来源:tcp_ipv6.c
示例18: crypt_init_desc
int crypt_init_desc(struct hash_desc *desc, char *checksum_algorithm) {
int rc;
desc->tfm = crypto_alloc_hash(checksum_algorithm, 0, CRYPTO_ALG_ASYNC);
if (IS_ERR(desc->tfm)) {
pr_info("failed to load %s transform: %ld\n", checksum_algorithm, PTR_ERR(desc->tfm));
rc = PTR_ERR(desc->tfm);
return rc;
}
desc->flags = 0;
rc = crypto_hash_init(desc);
if (rc)
crypto_free_hash(desc->tfm);
return rc;
}
开发者ID:anchalagarwal08,项目名称:Wrapfs-Implementations,代码行数:14,代码来源:computeChecksum.c
示例19: chkpw
int
chkpw(struct gr_arg *entry, unsigned char *salt, unsigned char *sum)
{
char *p;
struct crypto_hash *tfm;
struct hash_desc desc;
struct scatterlist sg;
unsigned char temp_sum[GR_SHA_LEN];
volatile int retval = 0;
volatile int dummy = 0;
unsigned int i;
sg_init_table(&sg, 1);
tfm = crypto_alloc_hash("sha256", 0, CRYPTO_ALG_ASYNC);
if (IS_ERR(tfm)) {
/* should never happen, since sha256 should be built in */
return 1;
}
desc.tfm = tfm;
desc.flags = 0;
crypto_hash_init(&desc);
p = salt;
sg_set_buf(&sg, p, GR_SALT_LEN);
crypto_hash_update(&desc, &sg, sg.length);
p = entry->pw;
sg_set_buf(&sg, p, strlen(p));
crypto_hash_update(&desc, &sg, sg.length);
crypto_hash_final(&desc, temp_sum);
memset(entry->pw, 0, GR_PW_LEN);
for (i = 0; i < GR_SHA_LEN; i++)
if (sum[i] != temp_sum[i])
retval = 1;
else
dummy = 1; // waste a cycle
crypto_free_hash(tfm);
return retval;
}
开发者ID:novic,项目名称:AniDroid-Hardened-Kernel,代码行数:48,代码来源:grsum.c
示例20: calc_hash
/*
* Calculates block's hash value, to avoid all block compare.
* hash_out must be allocated outside.
*/
int calc_hash(char* data, size_t size, u8* hash_out)
{
struct hash_desc sha256_desc;
struct scatterlist sg;
sha256_desc.tfm = crypto_alloc_hash("sha256", 0, CRYPTO_ALG_ASYNC);
sg_init_one(&sg, data, size);
crypto_hash_init(&sha256_desc);
crypto_hash_update(&sha256_desc, &sg, size);
crypto_hash_final(&sha256_desc, hash_out);
crypto_free_hash(sha256_desc.tfm);
return 0;
}
开发者ID:davidsaOpenu,项目名称:dedup,代码行数:20,代码来源:dedup_sysfs.c
注:本文中的crypto_hash_init函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论