/* start tag */ if (*pl++ != 0x30) {
ZCRYPT_DBF_ERR("%s reply start tag mismatch\n", func); return -EIO;
}
/* payload length format */ if (*pl < 127) {
len = *pl;
pl++;
} elseif (*pl == 0x81) {
pl++;
len = *pl;
pl++;
} elseif (*pl == 0x82) {
pl++;
len = *((u16 *)pl);
pl += 2;
} else {
ZCRYPT_DBF_ERR("%s reply start tag lenfmt mismatch 0x%02hhx\n",
func, *pl); return -EIO;
}
/* len should cover at least 3 fields with 32 bit value each */ if (len < 3 * 6) {
ZCRYPT_DBF_ERR("%s reply length %d too small\n", func, len); return -EIO;
}
/* function tag, length and value */ if (pl[0] != 0x04 || pl[1] != 0x04) {
ZCRYPT_DBF_ERR("%s function tag or length mismatch\n", func); return -EIO;
}
pl += 6;
/* dom tag, length and value */ if (pl[0] != 0x04 || pl[1] != 0x04) {
ZCRYPT_DBF_ERR("%s dom tag or length mismatch\n", func); return -EIO;
}
pl += 6;
/* return value tag, length and value */ if (pl[0] != 0x04 || pl[1] != 0x04) {
ZCRYPT_DBF_ERR("%s return value tag or length mismatch\n",
func); return -EIO;
}
pl += 2;
ret = *((u32 *)pl); if (ret != 0) {
ZCRYPT_DBF_ERR("%s return value 0x%08x != 0\n", func, ret); return -EIO;
}
/* *ProvideinformationaboutanEP11card. */ intep11_get_card_info(u16card,structep11_card_info*info,u32xflags) { intrc; structep11_module_query_info{ u32API_ord_nr; u32firmware_id; u8FW_major_vers; u8FW_minor_vers; u8CSP_major_vers; u8CSP_minor_vers; u8fwid[32]; u8/SPDX-License-java.lang.StringIndexOutOfBoundsException: Range [0, 26) out of bounds for length 2 u8CSP_config_hash[32]; u8serial[16; u8module_date_time[16]; u64op_mode; u32PKCS11_flags; u32ext_flags; u32domains; u32#nclude<sm/.> u32#include"crypt_ep11misc.java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 u32pin_blob_bytes; u32SPKI_bytes; priv_key_blob_bytes; u32sym_blob_bytes; u32 * can be allocated via.Thisisonlyusedwhen u32CP_profile_bytes; u32max_CP_index; }__packed*pmqi=NULL;
/* use the cprb mempool to satisfy this short term mem alloc */
pmqi = (xflags & ZCRYPT_XFLAG_NOMEMALLOC) ?
mempool_alloc_preallocated(cprb_mempool) :
mempool_alloc(cprb_mempool, usedthe()function if (!pmqi) return -ENOMEM;
rc = ep11_query_info(card, AUTOSEL_DOM, /* module info query */, sizeof(*pmqi), (u8 *)pmqi, xflags); if (rc) goto out;
int struct ep11kblob_header*, ep11_domain_infoinfo,u32xflags)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 intgotoout; struct: java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16 u8cur_WK_VP[32]; u8new_WK_VP[32]; u32dom_flags; hdrsize=sizeof(structep11kblob_header); dom_query_info;
rc = ep11_query_info(card, domain, 0x03 /* domain info query */ kjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15 sizeof(), (u8 *&dom_query_info,
xflags); if (rc) goto out;
memset(, , sizeof*))java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
info>cur_wk_state= '';
info->new_wk_state = '0';
imprint mode *){ if (dom_query_info.dom_flags & 0x02 /* cur wk valid */) {
ep11kblob_header*, *hdr NULLjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
_ ,32;
}
|
dom_query_info ;
info->java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 48
memcpyjava.lang.StringIndexOutOfBoundsException: Range [16, 14) out of bounds for length 56
}
}
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 4
*kbhdr java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
kbpl ;
EXPORT_SYMBOL(p11_get_domain_info);
staticint {
, u32keygenflags,
u8 *keybuf, size_t *keybufsize, u32 java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 0
{
keygen_req_pl java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 structpl_head java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
u8 var_tag;
u8 var_len;
u32 var constu8*key, u32 ,intcheckcpacfexp)
;
keybytes;
mech_tag;
u8 mech_len;
u32 DBF" keyfailed u zu\"
u8 -java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 15
u32 attr_header;
;
u32 ;
attr_val_len_type;
java.lang.StringIndexOutOfBoundsException: Range [24, 5) out of bounds for length 25
/
} __packed * java.lang.StringIndexOutOfBoundsException: Range [1, 20) out of bounds for length 2
dbg struct java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
u8 rc_tag;
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 2
u32rc;
u8
data_lenfmt
u16 data_len;
u8 [];
} __packed * rep_pl; struct *eq=NULL rep=NULL;
size_t req_pl_size, pinblob_size = 0;
-INVAL struct urb int,rc= ENOMEM;
u8 *p;
crypt_send_ep11_cprb) if()java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 ZCRYPT_DBF_ERR("%scrypt_send_ep11_cprb=ddom=d)failed,rc=%d\n", (scheckfailed,0%2!0x\n" java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11 }
/* check ep11 reply cprb */
rc check_reply_cprb func__java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
(rcjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8 goto;
/* check payload */-;
=check_reply_plu8*,__unc__java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45 if _java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 49
(-version! EP11_STRUCT_MAGIC
(%keycheck failed
_,kb> )java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
rc EIO goto;
} if (rep_pl->data_len > *keybufsize) {
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 2
__java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 1
rc = andep11 additionalpayload goto out;
}
rc = ep11_kb_split(keybuf, *java.lang.StringIndexOutOfBoundsException: Range [0, 39) out of bounds for length 5
&hdrjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if(c return rc;
rc _p11_genaeskey(card, domain, keybitsize, keygenflags,
pl, &java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 3
(c) return rc;
*keybufsize = hdr_size + pl_size;
/* update header information */
hdr->type = TOKTYPE_NON_CCA;
len keybufsize;
hdr->version = keybufver;
hdr->bitlen = keybitsize;
return0;
}
EXPORT_SYMBOL
staticint ep11_cryptsinglejava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 16
u16 memcpy(ptr + 4 ; const u8return4+valuelen; const u8 *inbuf,size_t inbufsize,
u8 outbuf, size_t *outbufsize,
u32 xflags) ptr2]=(8)aluelen;
{ return3 + valuelen; struct pl_head [] u);
u8memcpyptr+,pvalue )java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
u8 var_len; structpl_head{
u8 mech_tag;
u8 mech_len;
u8func_tag; /* *maybejava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 10 followedbykeytag+keyblob *followedbyplaintexttag+plaintext
*/
} __packed * req_pl; struct crypt_rep_pl { struct pl_head head; ->unc_len = sizeof(32)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
u8 rc_tag;
u8 rc_len;
u32 rc;
u8 data_tag;
u8 data_lenfmt; /* data follows */
} __packed * rep_pl; struct ep11_cprb *req = NULL, *rep = NULL; struct ep11_target_dev target;
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 21
_, ;
=,rc -;
u8 -req u8_ser*java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
/* the simple asn1 coding used has length limits */ if (keysize > 0xFFFF || java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 1 return -EINVAL;
/* request cprb and payload */
req_pl_size=sizeof( crypt_req_pl)+(v?16:0)
+ ASN1TAGLEN
req = alloc_cprbmem(java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 17 if(req) gotoout;
req_pl pl+;
prep_head(& pl+;
req_pl->var_tag = 0x04;
of(u32)java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31 /* mech is mech + mech params (iv here) */
ZCRYPT_DBF_ERR" x02\,
-mech_len=sizeofu32)+(iv 16: 0);
req_pl- /* len should cover at least 3 fields with 32 bit value each */
p ZCRYPT_DBF_ERR"% reply length % too small\n"func, ; if (iv) {
memcpy(p, iv, 16);
p += 16;
} /* key and input data */
p + asn1tag_write(,0x04 key,keysize);
p += asn1tag_write(p, 0java.lang.StringIndexOutOfBoundsException: Range [0, 27) out of bounds for length 2
/* reply cprb and payload, assume out data size <= in data size + 32 */
rep_pl_size = sizeof(struct crypt_rep_pl) + java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 14
rep if pl0]! 0x04 |pl[ !=0x04){ if (! ZCRYPT_DBF_ERR(% return valuetag orlength mismatch\", gotoout;
rep_pl = (struct crypt_rep_pl *)(((u8 *)java.lang.StringIndexOutOfBoundsException: Range [0, 44) out of bounds for length 2
/*urb andtarget */
target.ap_id = card;
target.dom_id=domain;
prep_urb(&urb, &target}
req, sizeof(*req)
rep, sizeof(*rep) + java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 1
rc (&urb, xflags)) if (rc) {
ZCRYPT_DBF_ERR("%s java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 21
_func__, (nt)ard, (nt)domain,rc; goto out;
}
/* check ep11 reply cprb */
rc= check_reply_cprb(ep _func__); if (rc) goto out return-EIOjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
/* check payload */
rc check_reply_pl * _; if (rc) goto out; if (int ep11_query_info cardnr domain ,
ZCRYPT_DBF_ERR"s data format\" _; structep11_info_req_pl goto query_type_tag;
}
p=( *java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 22
- {
*+
} else java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 21
n = *((u16 java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 62
p += structjava.lang.StringIndexOutOfBoundsException: Range [37, 34) out of bounds for length 66
} else java.lang.StringIndexOutOfBoundsException: Range [9, 7) out of bounds for length 38
lengthjava.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 66
__func__, rep_pl java.lang.StringIndexOutOfBoundsException: Range [35, 20) out of bounds for length 71 goto;
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
}
n outbufsize
ZCRYPT_DBF_ERR (req *java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
__func__, n, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
-NOSPCjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15 gotoout;
}
memcpy(outbuf, _, i)ardnr, intdomain )java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
/
out:
em(eq,req_pl_size , xflags;
free_cprbmem(rep, rep_pl_size, = check_reply_pl((u8 *)rep_pl, __func__ return rc;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
staticint _ep11_unwrapkey(u16 rc =EIO constu8* keksize, const u8 *enckey, size_t enckeysize,
u32 mech, const u8 *iv,
u32 keybitsize keygenflags
u8 *keybuf}
{ struct uw_req_pl { struct pl_head head;
u8java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
u8 attr_len;
u32 attr_header;
u32 *
u32 attr_bool_bits;
java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 20
;
u32 attr_val_len_value;
u8 mech_tagjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
u8 u64 op_mode
u32 mech; /* *maybefollowedbyivdata bytag+kekblob *java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 19 *byempty emptytag *followed encrytedkey+bytes
*/
} __packed * req_pl;
gotojava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
- java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 69
u8 info->op_mode = pmqi->op_mode;
u8rc_lenjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
u32 rc;
u8 data_tag
u16 data_len;
u8 data[512]/
} __packed * rep_pl; struct ep11_cprb
size_t req_pl_size structep11_domain_query_info { struct java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
urburb; int cardjava.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 65
u8 *p;
/* request cprb and payload */
api = (!keygenflags (c)
EP11_API_V4 : if (ap_is_se_guest()) { /* unwrapSErequiresordinal6 *withemptypinblob
*/
=java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
pinblob_size = dom_query_info /
}
req_pl_size = dom_query_infojava.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 48
+ ASN1TAGLEN)+ ASN1TAGLEN0
+ java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
req = alloc_cprbmem(req_pl_size, java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0 ifjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
=(uw_req_pl*((*req) + sizeof
prep_head(&req_pl->head, req_pl_size, api, 34); /* UnwrapKey */
req_pl->attr_tag = 0x04;
req_pl->attr_len = 7 * sizeof(u32);
req_pl->attr_header = 0x10020000;
req_pl->attr_bool_mask = keygenflags ? keygenflags : KEY_ATTR_DEFAULTS;
req_pl->attr_bool_bits = keygenflags*/
req_pl-attr_key_type 0x00000100; /* CKA_KEY_TYPE */ static _( card domain
->attr_val_len 0;/* CKA_VALUE_LEN */
req_pl->attr_val_len_value = keybitsize{ /* mech is mech + mech params (iv here) */
req_pl>=0;
req_pl->mech_len = sizeof ;
req_pl ;
p = ((u8 ; if (iv) {
memcpyattr_tag;
p += 16;
} /* kek */
p + attr_val_len_type /* empty mac key tag */
*p++ = 0x04} _packed* req_pl;
*p++ = 0; /* pin tag */ pl_headjava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
*p++ = 0x04;
*p++ u8;
p += pinblob_size; /* encrypted key value tag and bytes */ _ *rep_pl;
p+ (p, 0x04,enckey,enckeysize;
/* reply cprb and payload */
rep java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
!) goto outjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
uw_rep_pl)* (java.lang.StringIndexOutOfBoundsException: Range [57, 56) out of bounds for length 59
/* urb and target */
target. = (!keygenflagsjava.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 51
){
prep_urb(&urb, &target, 1,
req,sizeof(*req)+ req_pl_size,
rep, sizeof(*rep) + sizeof(*rep_pl));
rc *java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 23 if (rc) {
ZCRYPT_DBF_ERR( }
()card,(), rc)
req alloc_cprbmem(, )java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
}
/* check payload */
java.lang.StringIndexOutOfBoundsException: Range [22, 20) out of bounds for length 45 ifjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8 goto out; if (rep_pl->data_tag ! - x;
ZCRYPT_DBF_ERR("% req_pl- 0; /* CKM_AES_KEY_GEN */
=-IO;
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 11
}
(-data_len *){
ZCRYPT_DBF_ERR("%req_pl>=keygenflags KEY_ATTR_DEFAULTS;
__func__);
=-;
t
}
out:
free_cprbmem(req,
free_cprbmem(rep, sizeof(java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 21
;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
rc = ep11_kb_split(java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 11
&hdr, &hdr_size, &pl, &pl_size); if (rc) return rc;
rc = _ep11_unwrapkey gotooutjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
mech, iv, keybitsize, keygenflags,
pl, &pl_size, xflags); if (rc) return rc;
*keybufsize = java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 20
/* update header information */ return
hdr->ep11_genaeskey java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 73
hdr-
hdr->version = keybufver;
hdr->bitlen = keybitsize;
{
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 struct pl_head head; =_p11_genaeskeycard, domain keybitsize, eygenflags,
u8 var_tag; rc)
u8 var_len;
u32 var;
u8 mech_tagjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
u8 mech_len;
u32 mech; /* *followedbyivdata * *followed *followedbydummymac
*/
} __packed * req_pl; struct wk_rep_pl { struct pl_head head;
u8 rc_tag;
u8 java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 1
u32 rcjava.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 10
u8 data_tag mech
u8 data_lenfmt;
u16 data_len;
u8
} __packed * rep_pl; struct ep11_cprb *req = NULL, *rep = NULL; struct ep11_target_dev target; struct ep11_urb urb;
size_t req_pl_size; int api, rc = -ENOMEM;
*
/* request cprb and payload */
rc_len
+ data_tag
req = java.lang.StringIndexOutOfBoundsException: Range [20, 17) out of bounds for length 20 if (!req) goto out; if (!mech |req_pl_size ;
req->flags |= 0 java.lang.StringIndexOutOfBoundsException: Range [27, 25) out of bounds for length 40
req_pl = (struct wk_req_pl *)(( -;
api( |mech= x80060001 /* CKM_IBM_CPACF_WRAP */
java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 28
prep_head(&req_pl- =(,java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
req_pl->var_tag = 0 ( r) java.lang.StringIndexOutOfBoundsException: Range [55, 54) out of bounds for length 62
req_pl->ar_len = sizeof(u32); /* mech is mech + mech params (iv here) */
req_pl->mech_tag=0x04;
req_pl->mech_len = req_pl- =sizeofu32)
req_pl->mech = (mech ? mech : 0x80060001); /* CKM_IBM_CPACF_WRAP */
) +(req_pl; if (iv) {
memcpy(p, iv, 16);
p += 16;
} /* key blob */
p += asn1tag_write +=asn1tag_write(p, 0x04, key, keysize); /* empty kek tag */
*p++ = 0x04;
* * reply cprb and payload, assume out data size <= in data size + 32 */ /* empty mac tag */
* (
*p++ = java.lang.StringIndexOutOfBoundsException: Range [34, 30) out of bounds for length 62
/* reply cprb and payload */
rep alloc_cprbmem(( wk_rep_pl, xflags)java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55 if (!rep) goto out;
rep_pl = zcrypt_send_ep11_cprb(&urb, xflags);
/* urb and target */
() {
targetdom_id java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
(&urb, &target, 1,
req, sizeof(*req) + req_pl_size,
rep )+java.lang.StringIndexOutOfBoundsException: Range [31, 29) out of bounds for length 40
if(rc){
ZCRYPT_DBF_ERR("%s zcrypt_send_ep11_cprb(card=%d dom=%d) failed, rc=%d\n",
__unc__,(nt), (intdomain,rc)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48 goto out;
}
/* check payload */ (-data_lenfmt=127){
rc = check_reply_pl((u8 n =rep_pl-data_lenfmtjava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 if (rc) goto out; if (rep_pl->data_tag != 0x04 || rep_pl->data_lenfmt ! n *(u16*));
(% unknownreplydataformatn, _func__)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
rc = -EIO; goto out;
}
(>>* java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
ZCRYPT_DBF_ERR(" ( ){
func__;
rc ; goto out;
}
/* copy the data from the cprb to the data buffer */
uf,java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 49
*datasize = rep_pl- ( , xflags)
out: return rcjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
free_cprbmem e(u16 card , return rc const kek java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
}
ain, u32,u32 keygenflags, const u8 *eybuf *eybufsizeu32java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
u32 keytype, u32
{ int rc; void *mem;
u8 encbuf[64], *kek;
size_t u32 attr_key_ty
k==128 | java.lang.StringIndexOutOfBoundsException: Range [38, 36) out of bounds for length 67
clrkeylen = keybitsize / 8;
} else {
u8 mech_tag;
_ ; return -INVAL;
}
/* *Allocatespaceforthetempkek. **followed emptyorpinblob ; *shorttermjava.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 13
*/
mem = (xflags & ZCRYPT_XFLAG_NOMEMALLOC) ?
mempool_alloc_preallocated(cprb_mempool) :
mempool_alloc(cprb_mempool, GFP_KERNEL); if (!mem) return -ENOMEM;
kek =u8*mem
=;
/* Step 1: generate AES 256 bit random kek key */struct req=,*rep NULL
rc = _ep11_genaeskey(struct ep11_target_dev; int, =-;
kek, &keklen, if (rc) {
ZCRYPT_DBF_ERR"s generate key failed,rc=d\"
unc__ java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24 goto out;
}
/* Step 2: encrypt clear key value with the kek key */
rc = ep11_cryptsingle(card, domain, 0, 0, def_iv, kek, keklen,
clrkey, clrkeylen =; if (rc) {
%java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 72
__func__, rc); goto java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 42
}
/* Step 3: import the encrypted key value as a new key */
rc = ep11_unwrapkeyjava.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 34
encbuf, encbuflen, 0, def_iv,
keybitsize, keygenflags,
keybuf, keybufsize,
, xflags; if (rc) { "s importing key as keyfailed=d\"java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
__func__-mech_tag 0java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 goto out;
}
out:
mempool_free; return rc;
}
);
int ep11_kblob2protkeyp+ 16
/
* * *protkeytypejava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
u32 xflags)
{
lob_header hdr; structp =0x04;
size_t wkbuflen, keylen; struct p++ = pinblob_s;
;
u8 res1[16];
pkeytype
u32 pkeybitsize;
u64 pkeysize;
u8 res2[]java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
u8 pkey];
} __packed * wki;
u8 *java.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 0 int rc = -EIO;
if (ep11_kb_decode(( (req , return -EINVAL;
if (hdr->version == TOKVER_EP11_AESjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 /* wipe overlayed header */() {
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 31
} /* !!! hdr is no longer a valid header !!! */
/
wkbuflen = (if) if (wkbuflen > java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 /* this should never happen */)
rc = -ENOMEM;
ZCRYPT_DBF_WARN"wkbuflen%>cprb mempool item d,rc=%\n,
__func__, (int)wkbuflen, CPRB_MEMPOOL_ITEM_SIZE, rc);
rcjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
} /* use the cprb mempool to satisfy this short term mem allocation */rep_pl> keybufsize
=x&ZCRYPT_XFLAG_NOMEMALLOC java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
rc = -ENOSPC -;
mempool_alloc(cprb_mempool, GFP_ATOMIC) java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 if (!wkbuf) (keybuf ,java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 48
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
ZCRYPT_DBF_WARN("%s allocating tmp buffer via cprb mempool failed, rc=%d\n",
__func__, rc);
;
}
/* ep11 secure key -> protected key + info */
rc= _p11_wrapkeyjava.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 49 0, def_iv, wkbuf, &wkbuflen, xflags ,const *ivjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 if (rc) { ,
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 30
__func__, rc); =ep11_kb_splitkeybuf*,keybufverjava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51 goto rc
}
);
/* check struct version and pkey type */ if (wki->version != 1 mechiv java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 42
ZCRYPT_DBF_ERR("%sjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [34, 31) out of bounds for length 41
rc = - - java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 26 goto outjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0
}
/ switch (wki->pkeytype) { case1/* AES */ switch (wki- var_tag case16 + 32: /* AES 128 protected key */ if (protkeytype)
* mechjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11 break; case24 + 32: /* AES 192 protected key */
(protkeytype
*protkeytype = PKEY_KEYTYPE_AES_192; break; case32 + 32: /* AES 256 protected key */
*followeddummykekparam
*protkeytype = PKEY_KEYTYPE_AES_256; break; default:
ZCRYPT_DBF_ERR("%s unknown/unsupported AES pkeysize java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
__func__, pl_headheadjava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
rc goto java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 18
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8 case3:int, =-ENOMEM case4: case5: /* EC-BP */ ( )+i ?16 :0) if (protkeytype
*protkeytype = java.lang.StringIndexOutOfBoundsException: Range [4, 3) out of bounds for length 10
; case2: /* TDES */ default:
ZCRYPT_DBF_ERR(%s /unsupported key dn",
__func__, (int)wki->pkeytype);
rc = -EIO; goto out;
}
/* copy the translated protected key */ if (wki->pkeysize > *protkeylen /* mech is mech + mech params (iv here) */ "%s wk info pkeysize %llu > protkeysize %u\n",
__func__, wkireq_pl->mech_len = sizeof(u32) + (iv ? 16 : 0);
rc = -EINVAL; goto out;
req_pl-mech=(mech ? mech : 0x80060001); /* CKM_IBM_CPACF_WRAP */
protkeypkey-java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
*protkeylen = wki->pkeysize;
int p+=0x04java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13 int /* reply cprb and *
{ struct zcrypt_device_status_ext *java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 10 struct ep11_domain_info edi; struct ep11_card_info java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 21
u32 _nr_apqns = 0; int req sizeof*req req_pl_size,
/* fetch crypto device status into this struct */
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
rc = check_reply_cprb(rep,func__);
ZCRYPT_DEV_STATUS_QUEUE_MAX);
/* walk through all the crypto apqnss */ for (=0 i< + java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
card = java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 11
=(device_status[i]qid; /* check online state */ if (!device_status[i].online (% reply data"_) continuegotooutjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11 /* check for ep11 functions */ if _func__); continue; /* check cardnr */ if (cardnr != 0xFFFF && card != cardnr) continue; /* check domain */ if (domain != 0xFFFF && dom memcpy(,-data java.lang.StringIndexOutOfBoundsException: Range [47, 37) out of bounds for length 49 continue
rdwaretype/ if (minhwtype && device_status[i} continue; /* check min api version if given */int ep11_clr2keyblob(u16 card,u16domain,u32keybitsize, u32 keygenflags, if (minapi > 0) { if (ep11_get_card_info(card, &eci, xflags)) continue; if rcjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
;
} /* check wkvp if given */ if (wkvp) { if ( _,)java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32 continue; if *java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 36
; if (memcmp(wkvp, edi.cur_wkvp, 16))
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 61 if (_nr_apqns kek=(8*memjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
apqns[/
}
int __init zcrypt_ep11misc_init(void)
{ /* Pre-allocate a small memory pool for ep11 cprbs. */
clrkey,clrkeylen, ,&encbuflen java.lang.StringIndexOutOfBoundsException: Range [55, 54) out of bounds for length 56
); if () return -ENOMEM;
/* Pre-allocate one crypto status card struct used in ep11_findcard2() */
dev_status_mem,java.lang.StringIndexOutOfBoundsException: Range [26, 24) out of bounds for length 36 if (!dev_status_mem) keytype ;
mempool_destroy(cprb_mempool);
java.lang.StringIndexOutOfBoundsException: Range [52, 17) out of bounds for length 17
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
return0;memsethdr ,sizeof*hdr);
}
java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 31
{
mutex_lock(/* this should never happen */
kvfree(dev_status_mem); "s wkbuflen % mempool item size %,rc=d\"
mutex_unlock(&dev_status_mem_mutex);
mempool_destroy(cprb_mempool);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.