Lines Matching refs:luks

343 qcrypto_block_luks_splitkeylen_sectors(const QCryptoBlockLUKS *luks,  in qcrypto_block_luks_splitkeylen_sectors()  argument
352 size_t splitkeylen = luks->header.master_key_len * stripes; in qcrypto_block_luks_splitkeylen_sectors()
416 const QCryptoBlockLUKS *luks = block->opaque; in qcrypto_block_luks_store_header() local
422 memcpy(hdr_copy, &luks->header, sizeof(QCryptoBlockLUKSHeader)); in qcrypto_block_luks_store_header()
448 QCryptoBlockLUKS *luks = block->opaque; in qcrypto_block_luks_load_header() local
455 (uint8_t *)&luks->header, in qcrypto_block_luks_load_header()
456 sizeof(luks->header), in qcrypto_block_luks_load_header()
463 qcrypto_block_luks_from_disk_endian(&luks->header); in qcrypto_block_luks_load_header()
472 qcrypto_block_luks_check_header(const QCryptoBlockLUKS *luks, in qcrypto_block_luks_check_header() argument
482 if (memcmp(luks->header.magic, qcrypto_block_luks_magic, in qcrypto_block_luks_check_header()
488 if (luks->header.version != QCRYPTO_BLOCK_LUKS_VERSION) { in qcrypto_block_luks_check_header()
490 luks->header.version); in qcrypto_block_luks_check_header()
494 if (!memchr(luks->header.cipher_name, '\0', in qcrypto_block_luks_check_header()
495 sizeof(luks->header.cipher_name))) { in qcrypto_block_luks_check_header()
500 if (!memchr(luks->header.cipher_mode, '\0', in qcrypto_block_luks_check_header()
501 sizeof(luks->header.cipher_mode))) { in qcrypto_block_luks_check_header()
506 if (!memchr(luks->header.hash_spec, '\0', in qcrypto_block_luks_check_header()
507 sizeof(luks->header.hash_spec))) { in qcrypto_block_luks_check_header()
512 if (!detached && luks->header.payload_offset_sector < in qcrypto_block_luks_check_header()
519 if (luks->header.master_key_iterations == 0) { in qcrypto_block_luks_check_header()
527 const QCryptoBlockLUKSKeySlot *slot1 = &luks->header.key_slots[i]; in qcrypto_block_luks_check_header()
530 qcrypto_block_luks_splitkeylen_sectors(luks, in qcrypto_block_luks_check_header()
561 if (!detached && start1 + len1 > luks->header.payload_offset_sector) { in qcrypto_block_luks_check_header()
569 const QCryptoBlockLUKSKeySlot *slot2 = &luks->header.key_slots[j]; in qcrypto_block_luks_check_header()
572 qcrypto_block_luks_splitkeylen_sectors(luks, in qcrypto_block_luks_check_header()
593 qcrypto_block_luks_parse_header(QCryptoBlockLUKS *luks, Error **errp) in qcrypto_block_luks_parse_header() argument
595 g_autofree char *cipher_mode = g_strdup(luks->header.cipher_mode); in qcrypto_block_luks_parse_header()
610 luks->header.cipher_mode); in qcrypto_block_luks_parse_header()
618 luks->ivgen_hash_alg = 0; in qcrypto_block_luks_parse_header()
623 luks->ivgen_hash_alg = qcrypto_block_luks_hash_name_lookup(ivhash_name, in qcrypto_block_luks_parse_header()
631 luks->cipher_mode = qcrypto_block_luks_cipher_mode_lookup(cipher_mode, in qcrypto_block_luks_parse_header()
638 luks->cipher_alg = in qcrypto_block_luks_parse_header()
639 qcrypto_block_luks_cipher_name_lookup(luks->header.cipher_name, in qcrypto_block_luks_parse_header()
640 luks->cipher_mode, in qcrypto_block_luks_parse_header()
641 luks->header.master_key_len, in qcrypto_block_luks_parse_header()
648 luks->hash_alg = in qcrypto_block_luks_parse_header()
649 qcrypto_block_luks_hash_name_lookup(luks->header.hash_spec, in qcrypto_block_luks_parse_header()
656 luks->ivgen_alg = qcrypto_block_luks_ivgen_name_lookup(ivgen_name, in qcrypto_block_luks_parse_header()
663 if (luks->ivgen_alg == QCRYPTO_IVGEN_ALG_ESSIV) { in qcrypto_block_luks_parse_header()
668 luks->ivgen_cipher_alg = in qcrypto_block_luks_parse_header()
669 qcrypto_block_luks_essiv_cipher(luks->cipher_alg, in qcrypto_block_luks_parse_header()
670 luks->ivgen_hash_alg, in qcrypto_block_luks_parse_header()
686 luks->ivgen_cipher_alg = luks->cipher_alg; in qcrypto_block_luks_parse_header()
711 QCryptoBlockLUKS *luks = block->opaque; in qcrypto_block_luks_store_key() local
723 slot = &luks->header.key_slots[slot_idx]; in qcrypto_block_luks_store_key()
724 splitkeylen = luks->header.master_key_len * slot->stripes; in qcrypto_block_luks_store_key()
737 iters = qcrypto_pbkdf2_count_iters(luks->hash_alg, in qcrypto_block_luks_store_key()
741 luks->header.master_key_len, in qcrypto_block_luks_store_key()
773 slotkey = g_new0(uint8_t, luks->header.master_key_len); in qcrypto_block_luks_store_key()
774 if (qcrypto_pbkdf2(luks->hash_alg, in qcrypto_block_luks_store_key()
779 slotkey, luks->header.master_key_len, in qcrypto_block_luks_store_key()
789 cipher = qcrypto_cipher_new(luks->cipher_alg, in qcrypto_block_luks_store_key()
790 luks->cipher_mode, in qcrypto_block_luks_store_key()
791 slotkey, luks->header.master_key_len, in qcrypto_block_luks_store_key()
797 ivgen = qcrypto_ivgen_new(luks->ivgen_alg, in qcrypto_block_luks_store_key()
798 luks->ivgen_cipher_alg, in qcrypto_block_luks_store_key()
799 luks->ivgen_hash_alg, in qcrypto_block_luks_store_key()
800 slotkey, luks->header.master_key_len, in qcrypto_block_luks_store_key()
813 if (qcrypto_afsplit_encode(luks->hash_alg, in qcrypto_block_luks_store_key()
814 luks->header.master_key_len, in qcrypto_block_luks_store_key()
855 memset(slotkey, 0, luks->header.master_key_len); in qcrypto_block_luks_store_key()
883 QCryptoBlockLUKS *luks = block->opaque; in qcrypto_block_luks_load_key() local
895 slot = &luks->header.key_slots[slot_idx]; in qcrypto_block_luks_load_key()
900 splitkeylen = luks->header.master_key_len * slot->stripes; in qcrypto_block_luks_load_key()
902 possiblekey = g_new0(uint8_t, luks->header.master_key_len); in qcrypto_block_luks_load_key()
911 if (qcrypto_pbkdf2(luks->hash_alg, in qcrypto_block_luks_load_key()
915 possiblekey, luks->header.master_key_len, in qcrypto_block_luks_load_key()
939 cipher = qcrypto_cipher_new(luks->cipher_alg, in qcrypto_block_luks_load_key()
940 luks->cipher_mode, in qcrypto_block_luks_load_key()
942 luks->header.master_key_len, in qcrypto_block_luks_load_key()
948 niv = qcrypto_cipher_get_iv_len(luks->cipher_alg, in qcrypto_block_luks_load_key()
949 luks->cipher_mode); in qcrypto_block_luks_load_key()
951 ivgen = qcrypto_ivgen_new(luks->ivgen_alg, in qcrypto_block_luks_load_key()
952 luks->ivgen_cipher_alg, in qcrypto_block_luks_load_key()
953 luks->ivgen_hash_alg, in qcrypto_block_luks_load_key()
955 luks->header.master_key_len, in qcrypto_block_luks_load_key()
984 if (qcrypto_afsplit_decode(luks->hash_alg, in qcrypto_block_luks_load_key()
985 luks->header.master_key_len, in qcrypto_block_luks_load_key()
1002 if (qcrypto_pbkdf2(luks->hash_alg, in qcrypto_block_luks_load_key()
1004 luks->header.master_key_len, in qcrypto_block_luks_load_key()
1005 luks->header.master_key_salt, in qcrypto_block_luks_load_key()
1007 luks->header.master_key_iterations, in qcrypto_block_luks_load_key()
1014 if (memcmp(keydigest, luks->header.master_key_digest, in qcrypto_block_luks_load_key()
1070 qcrypto_block_luks_slot_active(const QCryptoBlockLUKS *luks, in qcrypto_block_luks_slot_active() argument
1076 val = luks->header.key_slots[slot_idx].active; in qcrypto_block_luks_slot_active()
1085 qcrypto_block_luks_count_active_slots(const QCryptoBlockLUKS *luks) in qcrypto_block_luks_count_active_slots() argument
1091 if (qcrypto_block_luks_slot_active(luks, i)) { in qcrypto_block_luks_count_active_slots()
1103 qcrypto_block_luks_find_free_keyslot(const QCryptoBlockLUKS *luks) in qcrypto_block_luks_find_free_keyslot() argument
1108 if (!qcrypto_block_luks_slot_active(luks, i)) { in qcrypto_block_luks_find_free_keyslot()
1129 QCryptoBlockLUKS *luks = block->opaque; in qcrypto_block_luks_erase_key() local
1138 slot = &luks->header.key_slots[slot_idx]; in qcrypto_block_luks_erase_key()
1140 splitkeylen = luks->header.master_key_len * slot->stripes; in qcrypto_block_luks_erase_key()
1195 QCryptoBlockLUKS *luks = NULL; in qcrypto_block_luks_open() local
1200 if (!options->u.luks.key_secret) { in qcrypto_block_luks_open()
1206 options->u.luks.key_secret, errp); in qcrypto_block_luks_open()
1212 luks = g_new0(QCryptoBlockLUKS, 1); in qcrypto_block_luks_open()
1213 block->opaque = luks; in qcrypto_block_luks_open()
1214 luks->secret = g_strdup(options->u.luks.key_secret); in qcrypto_block_luks_open()
1220 if (qcrypto_block_luks_check_header(luks, flags, errp) < 0) { in qcrypto_block_luks_open()
1224 if (qcrypto_block_luks_parse_header(luks, errp) < 0) { in qcrypto_block_luks_open()
1233 masterkey = g_new0(uint8_t, luks->header.master_key_len); in qcrypto_block_luks_open()
1246 block->kdfhash = luks->hash_alg; in qcrypto_block_luks_open()
1247 block->niv = qcrypto_cipher_get_iv_len(luks->cipher_alg, in qcrypto_block_luks_open()
1248 luks->cipher_mode); in qcrypto_block_luks_open()
1250 block->ivgen = qcrypto_ivgen_new(luks->ivgen_alg, in qcrypto_block_luks_open()
1251 luks->ivgen_cipher_alg, in qcrypto_block_luks_open()
1252 luks->ivgen_hash_alg, in qcrypto_block_luks_open()
1254 luks->header.master_key_len, in qcrypto_block_luks_open()
1261 luks->cipher_alg, in qcrypto_block_luks_open()
1262 luks->cipher_mode, in qcrypto_block_luks_open()
1264 luks->header.master_key_len, in qcrypto_block_luks_open()
1271 block->payload_offset = luks->header.payload_offset_sector * in qcrypto_block_luks_open()
1280 g_free(luks->secret); in qcrypto_block_luks_open()
1281 g_free(luks); in qcrypto_block_luks_open()
1303 QCryptoBlockLUKS *luks; in qcrypto_block_luks_create() local
1320 memcpy(&luks_opts, &options->u.luks, sizeof(luks_opts)); in qcrypto_block_luks_create()
1343 luks = g_new0(QCryptoBlockLUKS, 1); in qcrypto_block_luks_create()
1344 block->opaque = luks; in qcrypto_block_luks_create()
1346 luks->cipher_alg = luks_opts.cipher_alg; in qcrypto_block_luks_create()
1347 luks->cipher_mode = luks_opts.cipher_mode; in qcrypto_block_luks_create()
1348 luks->ivgen_alg = luks_opts.ivgen_alg; in qcrypto_block_luks_create()
1349 luks->ivgen_hash_alg = luks_opts.ivgen_hash_alg; in qcrypto_block_luks_create()
1350 luks->hash_alg = luks_opts.hash_alg; in qcrypto_block_luks_create()
1357 if (!options->u.luks.key_secret) { in qcrypto_block_luks_create()
1362 luks->secret = g_strdup(options->u.luks.key_secret); in qcrypto_block_luks_create()
1370 memcpy(luks->header.magic, qcrypto_block_luks_magic, in qcrypto_block_luks_create()
1377 luks->header.version = QCRYPTO_BLOCK_LUKS_VERSION; in qcrypto_block_luks_create()
1378 qcrypto_block_luks_uuid_gen(luks->header.uuid); in qcrypto_block_luks_create()
1415 luks->ivgen_cipher_alg = in qcrypto_block_luks_create()
1424 luks->ivgen_cipher_alg = luks_opts.cipher_alg; in qcrypto_block_luks_create()
1427 strcpy(luks->header.cipher_name, cipher_alg); in qcrypto_block_luks_create()
1428 strcpy(luks->header.cipher_mode, cipher_mode_spec); in qcrypto_block_luks_create()
1429 strcpy(luks->header.hash_spec, hash_alg); in qcrypto_block_luks_create()
1431 luks->header.master_key_len = in qcrypto_block_luks_create()
1435 luks->header.master_key_len *= 2; in qcrypto_block_luks_create()
1441 if (qcrypto_random_bytes(luks->header.master_key_salt, in qcrypto_block_luks_create()
1448 masterkey = g_new0(uint8_t, luks->header.master_key_len); in qcrypto_block_luks_create()
1450 luks->header.master_key_len, errp) < 0) { in qcrypto_block_luks_create()
1458 luks->header.master_key_len, errp) < 0) { in qcrypto_block_luks_create()
1466 luks->ivgen_cipher_alg, in qcrypto_block_luks_create()
1468 masterkey, luks->header.master_key_len, in qcrypto_block_luks_create()
1480 masterkey, luks->header.master_key_len, in qcrypto_block_luks_create()
1481 luks->header.master_key_salt, in qcrypto_block_luks_create()
1512 luks->header.master_key_iterations = iters; in qcrypto_block_luks_create()
1520 masterkey, luks->header.master_key_len, in qcrypto_block_luks_create()
1521 luks->header.master_key_salt, in qcrypto_block_luks_create()
1523 luks->header.master_key_iterations, in qcrypto_block_luks_create()
1524 luks->header.master_key_digest, in qcrypto_block_luks_create()
1535 qcrypto_block_luks_splitkeylen_sectors(luks, in qcrypto_block_luks_create()
1540 QCryptoBlockLUKSKeySlot *slot = &luks->header.key_slots[i]; in qcrypto_block_luks_create()
1552 luks->header.payload_offset_sector = 0; in qcrypto_block_luks_create()
1560 luks->header.payload_offset_sector = header_sectors + in qcrypto_block_luks_create()
1565 block->payload_offset = luks->header.payload_offset_sector * in qcrypto_block_luks_create()
1592 memset(masterkey, 0, luks->header.master_key_len); in qcrypto_block_luks_create()
1598 memset(masterkey, 0, luks->header.master_key_len); in qcrypto_block_luks_create()
1604 g_free(luks->secret); in qcrypto_block_luks_create()
1605 g_free(luks); in qcrypto_block_luks_create()
1618 QCryptoBlockLUKS *luks = block->opaque; in qcrypto_block_luks_amend_add_keyslot() local
1627 char *secret = opts_luks->secret ?: luks->secret; in qcrypto_block_luks_amend_add_keyslot()
1648 keyslot = qcrypto_block_luks_find_free_keyslot(luks); in qcrypto_block_luks_amend_add_keyslot()
1656 if (!force && qcrypto_block_luks_slot_active(luks, keyslot)) { in qcrypto_block_luks_amend_add_keyslot()
1671 master_key = g_new0(uint8_t, luks->header.master_key_len); in qcrypto_block_luks_amend_add_keyslot()
1703 QCryptoBlockLUKS *luks = block->opaque; in qcrypto_block_luks_amend_erase_keyslots() local
1735 tmpkey = g_new0(uint8_t, luks->header.master_key_len); in qcrypto_block_luks_amend_erase_keyslots()
1768 if (!force && !qcrypto_block_luks_slot_active(luks, keyslot)) { in qcrypto_block_luks_amend_erase_keyslots()
1775 if (!force && qcrypto_block_luks_count_active_slots(luks) == 1) { in qcrypto_block_luks_amend_erase_keyslots()
1824 slot_count == qcrypto_block_luks_count_active_slots(luks)) { in qcrypto_block_luks_amend_erase_keyslots()
1861 QCryptoBlockAmendOptionsLUKS *opts_luks = &options->u.luks; in qcrypto_block_luks_amend_options()
1881 QCryptoBlockLUKS *luks = block->opaque; in qcrypto_block_luks_get_info() local
1883 QCryptoBlockInfoLUKSSlotList **tail = &info->u.luks.slots; in qcrypto_block_luks_get_info()
1886 info->u.luks.cipher_alg = luks->cipher_alg; in qcrypto_block_luks_get_info()
1887 info->u.luks.cipher_mode = luks->cipher_mode; in qcrypto_block_luks_get_info()
1888 info->u.luks.ivgen_alg = luks->ivgen_alg; in qcrypto_block_luks_get_info()
1889 if (info->u.luks.ivgen_alg == QCRYPTO_IVGEN_ALG_ESSIV) { in qcrypto_block_luks_get_info()
1890 info->u.luks.has_ivgen_hash_alg = true; in qcrypto_block_luks_get_info()
1891 info->u.luks.ivgen_hash_alg = luks->ivgen_hash_alg; in qcrypto_block_luks_get_info()
1893 info->u.luks.hash_alg = luks->hash_alg; in qcrypto_block_luks_get_info()
1894 info->u.luks.payload_offset = block->payload_offset; in qcrypto_block_luks_get_info()
1895 info->u.luks.master_key_iters = luks->header.master_key_iterations; in qcrypto_block_luks_get_info()
1896 info->u.luks.uuid = g_strndup((const char *)luks->header.uuid, in qcrypto_block_luks_get_info()
1897 sizeof(luks->header.uuid)); in qcrypto_block_luks_get_info()
1898 info->u.luks.detached_header = block->detached_header; in qcrypto_block_luks_get_info()
1902 slot->active = luks->header.key_slots[i].active == in qcrypto_block_luks_get_info()
1904 slot->key_offset = luks->header.key_slots[i].key_offset_sector in qcrypto_block_luks_get_info()
1908 slot->iters = luks->header.key_slots[i].iterations; in qcrypto_block_luks_get_info()
1910 slot->stripes = luks->header.key_slots[i].stripes; in qcrypto_block_luks_get_info()
1922 QCryptoBlockLUKS *luks = block->opaque; in qcrypto_block_luks_cleanup() local
1923 if (luks) { in qcrypto_block_luks_cleanup()
1924 g_free(luks->secret); in qcrypto_block_luks_cleanup()
1925 g_free(luks); in qcrypto_block_luks_cleanup()