Lines Matching refs:bc
131 sr_crypto_create(struct sr_discipline *sd, struct bioc_createraid *bc, in sr_crypto_create() argument
144 rv = sr_crypto_meta_create(sd, &sd->mds.mdd_crypto, bc); in sr_crypto_create()
154 struct bioc_createraid *bc) in sr_crypto_meta_create() argument
179 if (bc->bc_key_disk != NODEV) { in sr_crypto_meta_create()
182 if (sr_crypto_get_kdf(bc, sd, mdd_crypto)) in sr_crypto_meta_create()
185 sr_crypto_create_key_disk(sd, mdd_crypto, bc->bc_key_disk); in sr_crypto_meta_create()
190 } else if (bc->bc_opaque_flags & BIOC_SOOUT) { in sr_crypto_meta_create()
193 bc->bc_opaque_status = BIOC_SOINOUT_FAILED; in sr_crypto_meta_create()
197 } else if (sr_crypto_get_kdf(bc, sd, mdd_crypto)) in sr_crypto_meta_create()
201 if (!(bc->bc_flags & BIOC_SCNOAUTOASSEMBLE) && bc->bc_key_disk == NODEV) in sr_crypto_meta_create()
213 struct bioc_createraid *bc, int no_chunk, void *data) in sr_crypto_set_key() argument
227 } else if (bc->bc_key_disk != NODEV) { in sr_crypto_set_key()
230 sr_crypto_read_key_disk(sd, mdd_crypto, bc->bc_key_disk); in sr_crypto_set_key()
233 } else if (bc->bc_opaque_flags & BIOC_SOOUT) { in sr_crypto_set_key()
235 if (bc->bc_opaque == NULL) in sr_crypto_set_key()
239 bc->bc_opaque_size) in sr_crypto_set_key()
243 bc->bc_opaque, bc->bc_opaque_size)) in sr_crypto_set_key()
247 bc->bc_opaque_status = BIOC_SOINOUT_OK; in sr_crypto_set_key()
250 } else if (bc->bc_opaque_flags & BIOC_SOIN) { in sr_crypto_set_key()
252 if (sr_crypto_get_kdf(bc, sd, mdd_crypto)) in sr_crypto_set_key()
265 struct bioc_createraid *bc, int no_chunk, void *data) in sr_crypto_assemble() argument
269 rv = sr_crypto_set_key(sd, &sd->mds.mdd_crypto, bc, no_chunk, data); in sr_crypto_assemble()
343 sr_crypto_get_kdf(struct bioc_createraid *bc, struct sr_discipline *sd, in sr_crypto_get_kdf() argument
349 if (!(bc->bc_opaque_flags & BIOC_SOIN)) in sr_crypto_get_kdf()
351 if (bc->bc_opaque == NULL) in sr_crypto_get_kdf()
353 if (bc->bc_opaque_size != sizeof(*kdfinfo)) in sr_crypto_get_kdf()
356 kdfinfo = malloc(bc->bc_opaque_size, M_DEVBUF, M_WAITOK | M_ZERO); in sr_crypto_get_kdf()
357 if (copyin(bc->bc_opaque, kdfinfo, bc->bc_opaque_size)) in sr_crypto_get_kdf()
360 if (kdfinfo->len != bc->bc_opaque_size) in sr_crypto_get_kdf()
380 bc->bc_opaque_status = BIOC_SOINOUT_OK; in sr_crypto_get_kdf()
383 explicit_bzero(kdfinfo, bc->bc_opaque_size); in sr_crypto_get_kdf()
384 free(kdfinfo, M_DEVBUF, bc->bc_opaque_size); in sr_crypto_get_kdf()