Home | History | Annotate | Download | only in include
      1 /* Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
      2  * Use of this source code is governed by a BSD-style license that can be
      3  * found in the LICENSE file.
      4  */
      5 
      6 #ifndef VBOOT_2_RETURN_CODES_H_
      7 #define VBOOT_2_RETURN_CODES_H_
      8 
      9 /*
     10  * Return codes from verified boot functions.
     11  *
     12  * Note that other values may be passed through from vb2ex_*() calls; see
     13  * the comment for VB2_ERROR_EX below.
     14  */
     15 enum vb2_return_code {
     16 	/* Success - no error */
     17 	VB2_SUCCESS = 0,
     18 
     19 	/*
     20 	 * All vboot2 error codes start at a large offset from zero, to reduce
     21 	 * the risk of overlap with other error codes (TPM, etc.).
     22 	 */
     23 	VB2_ERROR_BASE = 0x10000000,
     24 
     25 	/* Unknown / unspecified error */
     26 	VB2_ERROR_UNKNOWN = VB2_ERROR_BASE + 1,
     27 
     28 	/* Mock error for testing */
     29 	VB2_ERROR_MOCK,
     30 
     31         /**********************************************************************
     32 	 * SHA errors
     33 	 */
     34 	VB2_ERROR_SHA = VB2_ERROR_BASE + 0x010000,
     35 
     36 	/* Bad algorithm in vb2_digest_init() */
     37 	VB2_ERROR_SHA_INIT_ALGORITHM,
     38 
     39 	/* Bad algorithm in vb2_digest_extend() */
     40 	VB2_ERROR_SHA_EXTEND_ALGORITHM,
     41 
     42 	/* Bad algorithm in vb2_digest_finalize() */
     43 	VB2_ERROR_SHA_FINALIZE_ALGORITHM,
     44 
     45 	/* Digest size buffer too small in vb2_digest_finalize() */
     46 	VB2_ERROR_SHA_FINALIZE_DIGEST_SIZE,
     47 
     48         /**********************************************************************
     49 	 * RSA errors
     50 	 */
     51 	VB2_ERROR_RSA = VB2_ERROR_BASE + 0x020000,
     52 
     53 	/* Padding mismatch in vb2_check_padding() */
     54 	VB2_ERROR_RSA_PADDING,
     55 
     56 	/* Bad algorithm in vb2_check_padding() */
     57 	VB2_ERROR_RSA_PADDING_ALGORITHM,
     58 
     59 	/* Null param passed to vb2_verify_digest() */
     60 	VB2_ERROR_RSA_VERIFY_PARAM,
     61 
     62 	/* Bad algorithm in vb2_verify_digest() */
     63 	VB2_ERROR_RSA_VERIFY_ALGORITHM,
     64 
     65 	/* Bad signature length in vb2_verify_digest() */
     66 	VB2_ERROR_RSA_VERIFY_SIG_LEN,
     67 
     68 	/* Work buffer too small in vb2_verify_digest() */
     69 	VB2_ERROR_RSA_VERIFY_WORKBUF,
     70 
     71 	/* Digest mismatch in vb2_verify_digest() */
     72 	VB2_ERROR_RSA_VERIFY_DIGEST,
     73 
     74 	/* Bad size calculation in vb2_check_padding() */
     75 	VB2_ERROR_RSA_PADDING_SIZE,
     76 
     77         /**********************************************************************
     78 	 * NV storage errors
     79 	 */
     80 	VB2_ERROR_NV = VB2_ERROR_BASE + 0x030000,
     81 
     82 	/* Bad header in vb2_nv_check_crc() */
     83 	VB2_ERROR_NV_HEADER,
     84 
     85 	/* Bad CRC in vb2_nv_check_crc() */
     86 	VB2_ERROR_NV_CRC,
     87 
     88         /**********************************************************************
     89 	 * Secure data storage errors
     90 	 */
     91 	VB2_ERROR_SECDATA = VB2_ERROR_BASE + 0x040000,
     92 
     93 	/* Bad CRC in vb2_secdata_check_crc() */
     94 	VB2_ERROR_SECDATA_CRC,
     95 
     96 	/* Bad struct version in vb2_secdata_init() */
     97 	VB2_ERROR_SECDATA_VERSION,
     98 
     99 	/* Invalid param in vb2_secdata_get() */
    100 	VB2_ERROR_SECDATA_GET_PARAM,
    101 
    102 	/* Invalid param in vb2_secdata_set() */
    103 	VB2_ERROR_SECDATA_SET_PARAM,
    104 
    105 	/* Invalid flags passed to vb2_secdata_set() */
    106 	VB2_ERROR_SECDATA_SET_FLAGS,
    107 
    108 	/* Called vb2_secdata_get() with uninitialized secdata */
    109 	VB2_ERROR_SECDATA_GET_UNINITIALIZED,
    110 
    111 	/* Called vb2_secdata_set() with uninitialized secdata */
    112 	VB2_ERROR_SECDATA_SET_UNINITIALIZED,
    113 
    114         /**********************************************************************
    115 	 * Common code errors
    116 	 */
    117 	VB2_ERROR_COMMON = VB2_ERROR_BASE + 0x050000,
    118 
    119 	/* Buffer is smaller than alignment offset in vb2_align() */
    120 	VB2_ERROR_ALIGN_BIGGER_THAN_SIZE,
    121 
    122 	/* Buffer is smaller than request in vb2_align() */
    123 	VB2_ERROR_ALIGN_SIZE,
    124 
    125 	/* Parent wraps around in vb2_verify_member_inside() */
    126 	VB2_ERROR_INSIDE_PARENT_WRAPS,
    127 
    128 	/* Member wraps around in vb2_verify_member_inside() */
    129 	VB2_ERROR_INSIDE_MEMBER_WRAPS,
    130 
    131 	/* Member outside parent in vb2_verify_member_inside() */
    132 	VB2_ERROR_INSIDE_MEMBER_OUTSIDE,
    133 
    134 	/* Member data wraps around in vb2_verify_member_inside() */
    135 	VB2_ERROR_INSIDE_DATA_WRAPS,
    136 
    137 	/* Member data outside parent in vb2_verify_member_inside() */
    138 	VB2_ERROR_INSIDE_DATA_OUTSIDE,
    139 
    140 	/* Unsupported signature algorithm in vb2_unpack_key() */
    141 	VB2_ERROR_UNPACK_KEY_SIG_ALGORITHM,                      /* 0x150008 */
    142 
    143 	/* Bad key size in vb2_unpack_key() */
    144 	VB2_ERROR_UNPACK_KEY_SIZE,
    145 
    146 	/* Bad key alignment in vb2_unpack_key() */
    147 	VB2_ERROR_UNPACK_KEY_ALIGN,
    148 
    149 	/* Bad key array size in vb2_unpack_key() */
    150 	VB2_ERROR_UNPACK_KEY_ARRAY_SIZE,
    151 
    152 	/* Bad algorithm in vb2_verify_data() */
    153 	VB2_ERROR_VDATA_ALGORITHM,
    154 
    155 	/* Incorrect signature size for algorithm in vb2_verify_data() */
    156 	VB2_ERROR_VDATA_SIG_SIZE,
    157 
    158 	/* Data smaller than length of signed data in vb2_verify_data() */
    159 	VB2_ERROR_VDATA_NOT_ENOUGH_DATA,
    160 
    161 	/* Not enough work buffer for digest in vb2_verify_data() */
    162 	VB2_ERROR_VDATA_WORKBUF_DIGEST,
    163 
    164 	/* Not enough work buffer for hash temp data in vb2_verify_data() */
    165 	VB2_ERROR_VDATA_WORKBUF_HASHING,                         /* 0x150010 */
    166 
    167 	/*
    168 	 * Bad digest size in vb2_verify_data() - probably because algorithm
    169 	 * is bad.
    170 	 */
    171 	VB2_ERROR_VDATA_DIGEST_SIZE,
    172 
    173 	/* Unsupported hash algorithm in vb2_unpack_key() */
    174 	VB2_ERROR_UNPACK_KEY_HASH_ALGORITHM,
    175 
    176 	/* Member data overlaps member header */
    177 	VB2_ERROR_INSIDE_DATA_OVERLAP,
    178 
    179 	/* Unsupported packed key struct version */
    180 	VB2_ERROR_UNPACK_KEY_STRUCT_VERSION,
    181 
    182 	/*
    183 	 * Buffer too small for total, fixed size, or description reported in
    184 	 * common header, or member data checked via
    185 	 * vb2_verify_common_member().
    186 	 */
    187 	VB2_ERROR_COMMON_TOTAL_SIZE,
    188 	VB2_ERROR_COMMON_FIXED_SIZE,
    189 	VB2_ERROR_COMMON_DESC_SIZE,
    190 	VB2_ERROR_COMMON_MEMBER_SIZE,                            /* 0x150018 */
    191 
    192 	/*
    193 	 * Total, fixed, description, or member offset/size not a multiple of
    194 	 * 32 bits.
    195 	 */
    196 	VB2_ERROR_COMMON_TOTAL_UNALIGNED,
    197 	VB2_ERROR_COMMON_FIXED_UNALIGNED,
    198 	VB2_ERROR_COMMON_DESC_UNALIGNED,
    199 	VB2_ERROR_COMMON_MEMBER_UNALIGNED,
    200 
    201 	/* Common struct description or member data wraps address space */
    202 	VB2_ERROR_COMMON_DESC_WRAPS,
    203 	VB2_ERROR_COMMON_MEMBER_WRAPS,
    204 
    205 	/* Common struct description is not null-terminated */
    206 	VB2_ERROR_COMMON_DESC_TERMINATOR,
    207 
    208 	/* Member data overlaps previous data */
    209 	VB2_ERROR_COMMON_MEMBER_OVERLAP,                         /* 0x150020 */
    210 
    211 	/* Signature bad magic number */
    212 	VB2_ERROR_SIG_MAGIC,
    213 
    214 	/* Signature incompatible version */
    215 	VB2_ERROR_SIG_VERSION,
    216 
    217 	/* Signature header doesn't fit */
    218 	VB2_ERROR_SIG_HEADER_SIZE,
    219 
    220 	/* Signature unsupported algorithm */
    221 	VB2_ERROR_SIG_ALGORITHM,
    222 
    223 	/* Signature bad size for algorithm */
    224 	VB2_ERROR_SIG_SIZE,
    225 
    226 	/* Wrong amount of data signed */
    227 	VB2_ERROR_VDATA_SIZE,
    228 
    229 	/* Digest mismatch */
    230 	VB2_ERROR_VDATA_VERIFY_DIGEST,
    231 
    232 	/* Key algorithm doesn't match signature algorithm */
    233 	VB2_ERROR_VDATA_ALGORITHM_MISMATCH,
    234 
    235 	/* Bad magic number in vb2_unpack_key() */
    236 	VB2_ERROR_UNPACK_KEY_MAGIC,
    237 
    238         /**********************************************************************
    239 	 * Keyblock verification errors (all in vb2_verify_keyblock())
    240 	 */
    241 	VB2_ERROR_KEYBLOCK = VB2_ERROR_BASE + 0x060000,
    242 
    243 	/* Data buffer too small for header */
    244 	VB2_ERROR_KEYBLOCK_TOO_SMALL_FOR_HEADER,
    245 
    246 	/* Magic number not present */
    247 	VB2_ERROR_KEYBLOCK_MAGIC,
    248 
    249 	/* Header version incompatible */
    250 	VB2_ERROR_KEYBLOCK_HEADER_VERSION,
    251 
    252 	/* Data buffer too small for keyblock */
    253 	VB2_ERROR_KEYBLOCK_SIZE,
    254 
    255 	/* Signature data offset outside keyblock */
    256 	VB2_ERROR_KEYBLOCK_SIG_OUTSIDE,
    257 
    258 	/* Signature signed more data than size of keyblock */
    259 	VB2_ERROR_KEYBLOCK_SIGNED_TOO_MUCH,
    260 
    261 	/* Signature signed less data than size of keyblock header */
    262 	VB2_ERROR_KEYBLOCK_SIGNED_TOO_LITTLE,
    263 
    264 	/* Signature invalid */
    265 	VB2_ERROR_KEYBLOCK_SIG_INVALID,
    266 
    267 	/* Data key outside keyblock */
    268 	VB2_ERROR_KEYBLOCK_DATA_KEY_OUTSIDE,
    269 
    270 	/* Data key outside signed part of keyblock */
    271 	VB2_ERROR_KEYBLOCK_DATA_KEY_UNSIGNED,
    272 
    273 	/* Signature signed wrong amount of data */
    274 	VB2_ERROR_KEYBLOCK_SIGNED_SIZE,
    275 
    276 	/* No signature matching key GUID */
    277 	VB2_ERROR_KEYBLOCK_SIG_GUID,
    278 
    279         /**********************************************************************
    280 	 * Preamble verification errors (all in vb2_verify_preamble())
    281 	 */
    282 	VB2_ERROR_PREAMBLE = VB2_ERROR_BASE + 0x070000,
    283 
    284 	/* Preamble data too small to contain header */
    285 	VB2_ERROR_PREAMBLE_TOO_SMALL_FOR_HEADER,
    286 
    287 	/* Header version incompatible */
    288 	VB2_ERROR_PREAMBLE_HEADER_VERSION,
    289 
    290 	/* Header version too old */
    291 	VB2_ERROR_PREAMBLE_HEADER_OLD,
    292 
    293 	/* Data buffer too small for preamble */
    294 	VB2_ERROR_PREAMBLE_SIZE,
    295 
    296 	/* Signature data offset outside preamble */
    297 	VB2_ERROR_PREAMBLE_SIG_OUTSIDE,
    298 
    299 	/* Signature signed more data than size of preamble */
    300 	VB2_ERROR_PREAMBLE_SIGNED_TOO_MUCH,
    301 
    302 	/* Signature signed less data than size of preamble header */
    303 	VB2_ERROR_PREAMBLE_SIGNED_TOO_LITTLE,
    304 
    305 	/* Signature invalid */
    306 	VB2_ERROR_PREAMBLE_SIG_INVALID,
    307 
    308 	/* Body signature outside preamble */
    309 	VB2_ERROR_PREAMBLE_BODY_SIG_OUTSIDE,
    310 
    311 	/* Kernel subkey outside preamble */
    312 	VB2_ERROR_PREAMBLE_KERNEL_SUBKEY_OUTSIDE,
    313 
    314 	/* Bad magic number */
    315 	VB2_ERROR_PREAMBLE_MAGIC,
    316 
    317 	/* Hash is signed */
    318 	VB2_ERROR_PREAMBLE_HASH_SIGNED,
    319 
    320         /**********************************************************************
    321 	 * Misc higher-level code errors
    322 	 */
    323 	VB2_ERROR_MISC = VB2_ERROR_BASE + 0x080000,
    324 
    325 	/* Work buffer too small in vb2_init_context() */
    326 	VB2_ERROR_INITCTX_WORKBUF_SMALL,
    327 
    328 	/* Work buffer unaligned in vb2_init_context() */
    329 	VB2_ERROR_INITCTX_WORKBUF_ALIGN,
    330 
    331 	/* Work buffer too small in vb2_fw_parse_gbb() */
    332 	VB2_ERROR_GBB_WORKBUF,
    333 
    334 	/* Bad magic number in vb2_read_gbb_header() */
    335 	VB2_ERROR_GBB_MAGIC,
    336 
    337 	/* Incompatible version in vb2_read_gbb_header() */
    338 	VB2_ERROR_GBB_VERSION,
    339 
    340 	/* Old version in vb2_read_gbb_header() */
    341 	VB2_ERROR_GBB_TOO_OLD,
    342 
    343 	/* Header size too small in vb2_read_gbb_header() */
    344 	VB2_ERROR_GBB_HEADER_SIZE,
    345 
    346 	/* Work buffer too small for root key in vb2_load_fw_keyblock() */
    347 	VB2_ERROR_FW_KEYBLOCK_WORKBUF_ROOT_KEY,
    348 
    349 	/* Work buffer too small for header in vb2_load_fw_keyblock() */
    350 	VB2_ERROR_FW_KEYBLOCK_WORKBUF_HEADER,
    351 
    352 	/* Work buffer too small for keyblock in vb2_load_fw_keyblock() */
    353 	VB2_ERROR_FW_KEYBLOCK_WORKBUF,
    354 
    355 	/* Keyblock version out of range in vb2_load_fw_keyblock() */
    356 	VB2_ERROR_FW_KEYBLOCK_VERSION_RANGE,
    357 
    358 	/* Keyblock version rollback in vb2_load_fw_keyblock() */
    359 	VB2_ERROR_FW_KEYBLOCK_VERSION_ROLLBACK,
    360 
    361 	/* Missing firmware data key in vb2_load_fw_preamble() */
    362 	VB2_ERROR_FW_PREAMBLE2_DATA_KEY,
    363 
    364 	/* Work buffer too small for header in vb2_load_fw_preamble() */
    365 	VB2_ERROR_FW_PREAMBLE2_WORKBUF_HEADER,
    366 
    367 	/* Work buffer too small for preamble in vb2_load_fw_preamble() */
    368 	VB2_ERROR_FW_PREAMBLE2_WORKBUF,
    369 
    370 	/* Firmware version out of range in vb2_load_fw_preamble() */
    371 	VB2_ERROR_FW_PREAMBLE_VERSION_RANGE,
    372 
    373 	/* Firmware version rollback in vb2_load_fw_preamble() */
    374 	VB2_ERROR_FW_PREAMBLE_VERSION_ROLLBACK,
    375 
    376 	/* Not enough space in work buffer for resource object */
    377 	VB2_ERROR_READ_RESOURCE_OBJECT_BUF,
    378 
    379         /**********************************************************************
    380 	 * API-level errors
    381 	 */
    382 	VB2_ERROR_API = VB2_ERROR_BASE + 0x090000,
    383 
    384 	/* Bag tag in vb2api_init_hash() */
    385 	VB2_ERROR_API_INIT_HASH_TAG,
    386 
    387 	/* Preamble not present in vb2api_init_hash() */
    388 	VB2_ERROR_API_INIT_HASH_PREAMBLE,
    389 
    390 	/* Work buffer too small in vb2api_init_hash() */
    391 	VB2_ERROR_API_INIT_HASH_WORKBUF,
    392 
    393 	/* Missing firmware data key in vb2api_init_hash() */
    394 	VB2_ERROR_API_INIT_HASH_DATA_KEY,
    395 
    396 	/* Uninitialized work area in vb2api_extend_hash() */
    397 	VB2_ERROR_API_EXTEND_HASH_WORKBUF,
    398 
    399 	/* Too much data hashed in vb2api_extend_hash() */
    400 	VB2_ERROR_API_EXTEND_HASH_SIZE,
    401 
    402 	/* Preamble not present in vb2api_check_hash() */
    403 	VB2_ERROR_API_CHECK_HASH_PREAMBLE,
    404 
    405 	/* Uninitialized work area in vb2api_check_hash() */
    406 	VB2_ERROR_API_CHECK_HASH_WORKBUF,
    407 
    408 	/* Wrong amount of data hashed in vb2api_check_hash() */
    409 	VB2_ERROR_API_CHECK_HASH_SIZE,
    410 
    411 	/* Work buffer too small in vb2api_check_hash() */
    412 	VB2_ERROR_API_CHECK_HASH_WORKBUF_DIGEST,
    413 
    414 	/* Bag tag in vb2api_check_hash() */
    415 	VB2_ERROR_API_CHECK_HASH_TAG,
    416 
    417 	/* Missing firmware data key in vb2api_check_hash() */
    418 	VB2_ERROR_API_CHECK_HASH_DATA_KEY,
    419 
    420 	/* Siganature size mismatch in vb2api_check_hash() */
    421 	VB2_ERROR_API_CHECK_HASH_SIG_SIZE,
    422 
    423 	/* Phase one needs recovery mode */
    424 	VB2_ERROR_API_PHASE1_RECOVERY,
    425 
    426 	/* Bag tag in vb2api_check_hash() */
    427 	VB2_ERROR_API_INIT_HASH_GUID,
    428 
    429 	/* Siganature mismatch in vb2api_check_hash() */
    430 	VB2_ERROR_API_CHECK_HASH_SIG,
    431 
    432 	/* Invalid enum vb2_pcr_digest requested to vb2api_get_pcr_digest */
    433 	VB2_ERROR_API_PCR_DIGEST,
    434 
    435 	/* Buffer size for the digest is too small for vb2api_get_pcr_digest */
    436 	VB2_ERROR_API_PCR_DIGEST_BUF,
    437 
    438         /**********************************************************************
    439 	 * Errors which may be generated by implementations of vb2ex functions.
    440 	 * Implementation may also return its own specific errors, which should
    441 	 * NOT be in the range VB2_ERROR_BASE...VB2_ERROR_MAX to avoid
    442 	 * conflicting with future vboot2 error codes.
    443 	 */
    444 	VB2_ERROR_EX = VB2_ERROR_BASE + 0x0a0000,
    445 
    446 	/* Read resource not implemented */
    447 	VB2_ERROR_EX_READ_RESOURCE_UNIMPLEMENTED,
    448 
    449 	/* Resource index not found */
    450 	VB2_ERROR_EX_READ_RESOURCE_INDEX,
    451 
    452 	/* Size of resource not big enough for requested offset and/or size */
    453 	VB2_ERROR_EX_READ_RESOURCE_SIZE,
    454 
    455 	/* TPM clear owner failed */
    456 	VB2_ERROR_EX_TPM_CLEAR_OWNER,
    457 
    458 	/* TPM clear owner not implemented */
    459 	VB2_ERROR_EX_TPM_CLEAR_OWNER_UNIMPLEMENTED,
    460 
    461 	/* Hardware crypto engine doesn't support this algorithm (non-fatal) */
    462 	VB2_ERROR_EX_HWCRYPTO_UNSUPPORTED,
    463 
    464 
    465         /**********************************************************************
    466 	 * Errors generated by host library (non-firmware) start here.
    467 	 */
    468 	VB2_ERROR_HOST_BASE = 0x20000000,
    469 
    470         /**********************************************************************
    471 	 * Errors generated by host library misc functions
    472 	 */
    473 	VB2_ERROR_HOST_MISC = VB2_ERROR_HOST_BASE + 0x010000,
    474 
    475 	/* Unable to open file in read_file() */
    476 	VB2_ERROR_READ_FILE_OPEN,
    477 
    478 	/* Bad size in read_file() */
    479 	VB2_ERROR_READ_FILE_SIZE,
    480 
    481 	/* Unable to allocate buffer in read_file() */
    482 	VB2_ERROR_READ_FILE_ALLOC,
    483 
    484 	/* Unable to read data in read_file() */
    485 	VB2_ERROR_READ_FILE_DATA,
    486 
    487 	/* Unable to open file in write_file() */
    488 	VB2_ERROR_WRITE_FILE_OPEN,
    489 
    490 	/* Unable to write data in write_file() */
    491 	VB2_ERROR_WRITE_FILE_DATA,
    492 
    493 	/* Unable to convert string to struct vb_guid */
    494 	VB2_ERROR_STR_TO_GUID,
    495 
    496 	/* Unable to convert struct vb_guid to string */
    497 	VB2_ERROR_GUID_TO_STR,
    498 
    499         /**********************************************************************
    500 	 * Errors generated by host library key functions
    501 	 */
    502 	VB2_ERROR_HOST_KEY = VB2_ERROR_HOST_BASE + 0x020000,
    503 
    504 	/* Unable to allocate key  in vb2_private_key_read_pem() */
    505 	VB2_ERROR_READ_PEM_ALLOC,
    506 
    507 	/* Unable to open .pem file in vb2_private_key_read_pem() */
    508 	VB2_ERROR_READ_PEM_FILE_OPEN,
    509 
    510 	/* Bad RSA data from .pem file in vb2_private_key_read_pem() */
    511 	VB2_ERROR_READ_PEM_RSA,
    512 
    513 	/* Unable to set private key description */
    514 	VB2_ERROR_PRIVATE_KEY_SET_DESC,
    515 
    516 	/* Bad magic number in vb2_private_key_unpack() */
    517 	VB2_ERROR_UNPACK_PRIVATE_KEY_MAGIC,
    518 
    519 	/* Bad common header in vb2_private_key_unpack() */
    520 	VB2_ERROR_UNPACK_PRIVATE_KEY_HEADER,
    521 
    522 	/* Bad key data in vb2_private_key_unpack() */
    523 	VB2_ERROR_UNPACK_PRIVATE_KEY_DATA,
    524 
    525 	/* Bad struct version in vb2_private_key_unpack() */
    526 	VB2_ERROR_UNPACK_PRIVATE_KEY_STRUCT_VERSION,
    527 
    528 	/* Unable to allocate buffer in vb2_private_key_unpack() */
    529 	VB2_ERROR_UNPACK_PRIVATE_KEY_ALLOC,
    530 
    531 	/* Unable to unpack RSA key in vb2_private_key_unpack() */
    532 	VB2_ERROR_UNPACK_PRIVATE_KEY_RSA,
    533 
    534 	/* Unable to set description in vb2_private_key_unpack() */
    535 	VB2_ERROR_UNPACK_PRIVATE_KEY_DESC,
    536 
    537 	/* Bad bare hash key in vb2_private_key_unpack() */
    538 	VB2_ERROR_UNPACK_PRIVATE_KEY_HASH,
    539 
    540 	/* Unable to create RSA data in vb2_private_key_write() */
    541 	VB2_ERROR_PRIVATE_KEY_WRITE_RSA,
    542 
    543 	/* Unable to allocate packed key buffer in vb2_private_key_write() */
    544 	VB2_ERROR_PRIVATE_KEY_WRITE_ALLOC,
    545 
    546 	/* Unable to write file in vb2_private_key_write() */
    547 	VB2_ERROR_PRIVATE_KEY_WRITE_FILE,
    548 
    549 	/* Bad algorithm in vb2_private_key_hash() */
    550 	VB2_ERROR_PRIVATE_KEY_HASH,
    551 
    552 	/* Unable to determine key size in vb2_public_key_alloc() */
    553 	VB2_ERROR_PUBLIC_KEY_ALLOC_SIZE,
    554 
    555 	/* Unable to allocate buffer in vb2_public_key_alloc() */
    556 	VB2_ERROR_PUBLIC_KEY_ALLOC,
    557 
    558 	/* Unable to set public key description */
    559 	VB2_ERROR_PUBLIC_KEY_SET_DESC,
    560 
    561 	/* Unable to read key data in vb2_public_key_read_keyb() */
    562 	VB2_ERROR_READ_KEYB_DATA,
    563 
    564 	/* Wrong amount of data read in vb2_public_key_read_keyb() */
    565 	VB2_ERROR_READ_KEYB_SIZE,
    566 
    567 	/* Unable to allocate key buffer in vb2_public_key_read_keyb() */
    568 	VB2_ERROR_READ_KEYB_ALLOC,
    569 
    570 	/* Error unpacking RSA arrays in vb2_public_key_read_keyb() */
    571 	VB2_ERROR_READ_KEYB_UNPACK,
    572 
    573 	/* Unable to read key data in vb2_packed_key_read() */
    574 	VB2_ERROR_READ_PACKED_KEY_DATA,
    575 
    576 	/* Bad key data in vb2_packed_key_read() */
    577 	VB2_ERROR_READ_PACKED_KEY,
    578 
    579 	/* Unable to determine key size in vb2_public_key_pack() */
    580 	VB2_ERROR_PUBLIC_KEY_PACK_SIZE,
    581 
    582 	/* Bad hash algorithm in vb2_public_key_hash() */
    583 	VB2_ERROR_PUBLIC_KEY_HASH,
    584 
    585         /**********************************************************************
    586 	 * Errors generated by host library signature functions
    587 	 */
    588 	VB2_ERROR_HOST_SIG = VB2_ERROR_HOST_BASE + 0x030000,
    589 
    590 	/* Bad hash algorithm in vb2_digest_info() */
    591 	VB2_ERROR_DIGEST_INFO,
    592 
    593 	/*
    594 	 * Unable to determine signature size for key algorithm in
    595 	 * vb2_sig_size_for_key().
    596 	 */
    597 	VB2_ERROR_SIG_SIZE_FOR_KEY,
    598 
    599 	/* Bad signature size in vb2_sign_data() */
    600 	VB2_SIGN_DATA_SIG_SIZE,
    601 
    602 	/* Unable to get digest info in vb2_sign_data() */
    603 	VB2_SIGN_DATA_DIGEST_INFO,
    604 
    605 	/* Unable to get digest size in vb2_sign_data() */
    606 	VB2_SIGN_DATA_DIGEST_SIZE,
    607 
    608 	/* Unable to allocate digest buffer in vb2_sign_data() */
    609 	VB2_SIGN_DATA_DIGEST_ALLOC,
    610 
    611 	/* Unable to initialize digest in vb2_sign_data() */
    612 	VB2_SIGN_DATA_DIGEST_INIT,
    613 
    614 	/* Unable to extend digest in vb2_sign_data() */
    615 	VB2_SIGN_DATA_DIGEST_EXTEND,
    616 
    617 	/* Unable to finalize digest in vb2_sign_data() */
    618 	VB2_SIGN_DATA_DIGEST_FINALIZE,
    619 
    620 	/* RSA encrypt failed in vb2_sign_data() */
    621 	VB2_SIGN_DATA_RSA_ENCRYPT,
    622 
    623 	/* Not enough buffer space to hold signature in vb2_sign_object() */
    624 	VB2_SIGN_OBJECT_OVERFLOW,
    625 
    626         /**********************************************************************
    627 	 * Errors generated by host library keyblock functions
    628 	 */
    629 	VB2_ERROR_HOST_KEYBLOCK = VB2_ERROR_HOST_BASE + 0x040000,
    630 
    631 	/* Unable to determine signature sizes for vb2_create_keyblock() */
    632 	VB2_KEYBLOCK_CREATE_SIG_SIZE,
    633 
    634 	/* Unable to pack data key for vb2_create_keyblock() */
    635 	VB2_KEYBLOCK_CREATE_DATA_KEY,
    636 
    637 	/* Unable to allocate buffer in vb2_create_keyblock() */
    638 	VB2_KEYBLOCK_CREATE_ALLOC,
    639 
    640 	/* Unable to sign keyblock in vb2_create_keyblock() */
    641 	VB2_KEYBLOCK_CREATE_SIGN,
    642 
    643         /**********************************************************************
    644 	 * Errors generated by host library firmware preamble functions
    645 	 */
    646 	VB2_ERROR_HOST_FW_PREAMBLE = VB2_ERROR_HOST_BASE + 0x050000,
    647 
    648 	/* Unable to determine signature sizes for vb2_create_fw_preamble() */
    649 	VB2_FW_PREAMBLE_CREATE_SIG_SIZE,
    650 
    651 	/* Unable to allocate buffer in vb2_create_fw_preamble() */
    652 	VB2_FW_PREAMBLE_CREATE_ALLOC,
    653 
    654 	/* Unable to sign preamble in vb2_create_fw_preamble() */
    655 	VB2_FW_PREAMBLE_CREATE_SIGN,
    656 
    657         /**********************************************************************
    658 	 * Highest non-zero error generated inside vboot library.  Note that
    659 	 * error codes passed through vboot when it calls external APIs may
    660 	 * still be outside this range.
    661 	 */
    662 	VB2_ERROR_MAX = VB2_ERROR_BASE + 0x1fffffff,
    663 };
    664 
    665 #endif  /* VBOOT_2_RETURN_CODES_H_ */
    666