Lines Matching +full:avb +full:- +full:algorithm
1 // SPDX-License-Identifier: MIT
24 /* Maximum size of a vbmeta image - 64 KiB. */
70 if (ops->get_preloaded_partition != NULL) { in load_full_partition()
71 io_ret = ops->get_preloaded_partition( in load_full_partition()
96 io_ret = ops->read_from_partition(ops, in load_full_partition()
125 if (ops->read_persistent_value == NULL) { in read_persistent_digest()
134 io_ret = ops->read_persistent_value(ops, in read_persistent_digest()
194 avb_error("Partition name is not valid UTF-8.\n"); in load_and_verify_hash_partition()
251 if (ops->get_size_of_partition == NULL) { in load_and_verify_hash_partition()
258 io_ret = ops->get_size_of_partition(ops, part_name, &image_size); in load_and_verify_hash_partition()
292 avb_errorv(part_name, ": Unsupported hash algorithm.\n", NULL); in load_and_verify_hash_partition()
337 if (slot_data->num_loaded_partitions == MAX_NUMBER_OF_LOADED_PARTITIONS) { in load_and_verify_hash_partition()
343 &slot_data->loaded_partitions[slot_data->num_loaded_partitions++]; in load_and_verify_hash_partition()
344 loaded_partition->partition_name = avb_strdup(found); in load_and_verify_hash_partition()
345 loaded_partition->data_size = image_size; in load_and_verify_hash_partition()
346 loaded_partition->data = image_buf; in load_and_verify_hash_partition()
347 loaded_partition->preloaded = image_preloaded; in load_and_verify_hash_partition()
368 if (ops->get_size_of_partition == NULL) { in load_requested_partitions()
391 io_ret = ops->get_size_of_partition(ops, part_name, &image_size); in load_requested_partitions()
409 if (slot_data->num_loaded_partitions == MAX_NUMBER_OF_LOADED_PARTITIONS) { in load_requested_partitions()
415 &slot_data->loaded_partitions[slot_data->num_loaded_partitions++]; in load_requested_partitions()
416 loaded_partition->partition_name = avb_strdup(requested_partitions[n]); in load_requested_partitions()
417 if (loaded_partition->partition_name == NULL) { in load_requested_partitions()
421 loaded_partition->data_size = image_size; in load_requested_partitions()
422 loaded_partition->data = image_buf; /* Transferring the owner. */ in load_requested_partitions()
423 loaded_partition->preloaded = image_preloaded; in load_requested_partitions()
477 /* Since we allow top-level vbmeta in 'boot', use in load_and_verify_vbmeta()
485 avb_error("Partition name is not valid UTF-8.\n"); in load_and_verify_vbmeta()
519 io_ret = ops->read_from_partition(ops, in load_and_verify_vbmeta()
521 -AVB_FOOTER_SIZE, in load_and_verify_vbmeta()
560 io_ret = ops->read_from_partition(ops, in load_and_verify_vbmeta()
636 ": Error verifying vbmeta image: unsupported AVB version\n", in load_and_verify_vbmeta()
652 ": chained vbmeta image has non-zero flags\n", in load_and_verify_vbmeta()
686 io_ret = ops->validate_vbmeta_public_key( in load_and_verify_vbmeta()
711 io_ret = ops->read_rollback_index( in load_and_verify_vbmeta()
736 avb_assert(slot_data->num_vbmeta_images == 0); in load_and_verify_vbmeta()
738 avb_assert(slot_data->num_vbmeta_images > 0); in load_and_verify_vbmeta()
740 if (slot_data->num_vbmeta_images == MAX_NUMBER_OF_VBMETA_IMAGES) { in load_and_verify_vbmeta()
745 vbmeta_image_data = &slot_data->vbmeta_images[slot_data->num_vbmeta_images++]; in load_and_verify_vbmeta()
746 vbmeta_image_data->partition_name = avb_strdup(partition_name); in load_and_verify_vbmeta()
747 vbmeta_image_data->vbmeta_data = vbmeta_buf; in load_and_verify_vbmeta()
753 vbmeta_image_data->vbmeta_size = in load_and_verify_vbmeta()
757 vbmeta_image_data->verify_result = vbmeta_ret; in load_and_verify_vbmeta()
782 * - hash descriptor: Load data from partition, calculate hash, and in load_and_verify_vbmeta()
785 * - hashtree descriptor: Do nothing since verification happens in load_and_verify_vbmeta()
786 * on-the-fly from within the OS. (Unless the descriptor uses a in load_and_verify_vbmeta()
789 * - chained partition descriptor: Load the footer, load the vbmeta in load_and_verify_vbmeta()
901 ": Kernel cmdline is not valid UTF-8.\n", in load_and_verify_vbmeta()
907 /* Compare the flags for top-level VBMeta struct with flags in in load_and_verify_vbmeta()
908 * the command-line descriptor so command-line snippets only in load_and_verify_vbmeta()
909 * intended for a certain mode (dm-verity enabled/disabled) in load_and_verify_vbmeta()
926 if (slot_data->cmdline == NULL) { in load_and_verify_vbmeta()
927 slot_data->cmdline = in load_and_verify_vbmeta()
929 if (slot_data->cmdline == NULL) { in load_and_verify_vbmeta()
933 avb_memcpy(slot_data->cmdline, in load_and_verify_vbmeta()
938 size_t orig_size = avb_strlen(slot_data->cmdline); in load_and_verify_vbmeta()
946 avb_memcpy(new_cmdline, slot_data->cmdline, orig_size); in load_and_verify_vbmeta()
951 avb_free(slot_data->cmdline); in load_and_verify_vbmeta()
952 slot_data->cmdline = new_cmdline; in load_and_verify_vbmeta()
981 avb_error("Partition name is not valid UTF-8.\n"); in load_and_verify_vbmeta()
1006 /* Determine the expected digest size from the hash algorithm. */ in load_and_verify_vbmeta()
1017 avb_errorv(part_name, ": Unsupported hash algorithm.\n", NULL); in load_and_verify_vbmeta()
1053 slot_data->rollback_indexes[rollback_index_location] = in load_and_verify_vbmeta()
1095 avb_assert(ops->read_is_device_unlocked != NULL); in avb_slot_verify()
1096 avb_assert(ops->read_from_partition != NULL); in avb_slot_verify()
1097 avb_assert(ops->validate_vbmeta_public_key != NULL); in avb_slot_verify()
1098 avb_assert(ops->read_rollback_index != NULL); in avb_slot_verify()
1099 avb_assert(ops->get_unique_guid_for_partition != NULL); in avb_slot_verify()
1105 /* Allowing dm-verity errors defeats the purpose of verified boot so in avb_slot_verify()
1120 slot_data->vbmeta_images = in avb_slot_verify()
1122 if (slot_data->vbmeta_images == NULL) { in avb_slot_verify()
1126 slot_data->loaded_partitions = in avb_slot_verify()
1128 if (slot_data->loaded_partitions == NULL) { in avb_slot_verify()
1156 /* If things check out, mangle the kernel command-line as needed. */ in avb_slot_verify()
1158 if (avb_strcmp(slot_data->vbmeta_images[0].partition_name, "vbmeta") != 0) { in avb_slot_verify()
1160 avb_strcmp(slot_data->vbmeta_images[0].partition_name, "boot") == 0); in avb_slot_verify()
1164 /* Byteswap top-level vbmeta header since we'll need it below. */ in avb_slot_verify()
1166 (const AvbVBMetaImageHeader*)slot_data->vbmeta_images[0].vbmeta_data, in avb_slot_verify()
1170 slot_data->ab_suffix = avb_strdup(ab_suffix); in avb_slot_verify()
1171 if (slot_data->ab_suffix == NULL) { in avb_slot_verify()
1185 avb_assert(slot_data->cmdline == NULL); in avb_slot_verify()
1186 slot_data->cmdline = in avb_slot_verify()
1188 if (slot_data->cmdline == NULL) { in avb_slot_verify()
1193 /* Add options - any failure in avb_append_options() is either an in avb_slot_verify()
1208 if (slot_data->cmdline != NULL) { in avb_slot_verify()
1211 slot_data->cmdline, in avb_slot_verify()
1215 if (new_cmdline != slot_data->cmdline) { in avb_slot_verify()
1220 avb_free(slot_data->cmdline); in avb_slot_verify()
1221 slot_data->cmdline = new_cmdline; in avb_slot_verify()
1252 if (data->ab_suffix != NULL) { in avb_slot_verify_data_free()
1253 avb_free(data->ab_suffix); in avb_slot_verify_data_free()
1255 if (data->cmdline != NULL) { in avb_slot_verify_data_free()
1256 avb_free(data->cmdline); in avb_slot_verify_data_free()
1258 if (data->vbmeta_images != NULL) { in avb_slot_verify_data_free()
1260 for (n = 0; n < data->num_vbmeta_images; n++) { in avb_slot_verify_data_free()
1261 AvbVBMetaData* vbmeta_image = &data->vbmeta_images[n]; in avb_slot_verify_data_free()
1262 if (vbmeta_image->partition_name != NULL) { in avb_slot_verify_data_free()
1263 avb_free(vbmeta_image->partition_name); in avb_slot_verify_data_free()
1265 if (vbmeta_image->vbmeta_data != NULL) { in avb_slot_verify_data_free()
1266 avb_free(vbmeta_image->vbmeta_data); in avb_slot_verify_data_free()
1269 avb_free(data->vbmeta_images); in avb_slot_verify_data_free()
1271 if (data->loaded_partitions != NULL) { in avb_slot_verify_data_free()
1273 for (n = 0; n < data->num_loaded_partitions; n++) { in avb_slot_verify_data_free()
1274 AvbPartitionData* loaded_partition = &data->loaded_partitions[n]; in avb_slot_verify_data_free()
1275 if (loaded_partition->partition_name != NULL) { in avb_slot_verify_data_free()
1276 avb_free(loaded_partition->partition_name); in avb_slot_verify_data_free()
1278 if (loaded_partition->data != NULL && !loaded_partition->preloaded) { in avb_slot_verify_data_free()
1279 avb_free(loaded_partition->data); in avb_slot_verify_data_free()
1282 avb_free(data->loaded_partitions); in avb_slot_verify_data_free()
1318 /* Do not add a 'default:' case here because of -Wswitch. */ in avb_slot_verify_result_to_string()
1339 for (n = 0; n < data->num_vbmeta_images; n++) { in avb_slot_verify_data_calculate_vbmeta_digest()
1341 data->vbmeta_images[n].vbmeta_data, in avb_slot_verify_data_calculate_vbmeta_digest()
1342 data->vbmeta_images[n].vbmeta_size); in avb_slot_verify_data_calculate_vbmeta_digest()
1351 for (n = 0; n < data->num_vbmeta_images; n++) { in avb_slot_verify_data_calculate_vbmeta_digest()
1353 data->vbmeta_images[n].vbmeta_data, in avb_slot_verify_data_calculate_vbmeta_digest()
1354 data->vbmeta_images[n].vbmeta_size); in avb_slot_verify_data_calculate_vbmeta_digest()
1360 /* Do not add a 'default:' case here because of -Wswitch. */ in avb_slot_verify_data_calculate_vbmeta_digest()