GBL Parser#
GBL parser implementation.
Image parser for GBL files. Parses GBL files based on the GBL file format specification. Callbacks are used to present data and metadata contents of the GBL file to the bootloader.
Modules#
Enumerations#
State in the GBL parser state machine.
Functions#
Function for looking up and retrieving the parsing information struct associated with a particular GBL tag type / tag ID.
Initialize the parser's context.
Parse an image file to extract the binary and some metadata.
Verify the GBL certificate.
Write application data.
Macros#
GBL file is encrypted.
Parse custom tags rather than silently traversing them.
Some flags are public, some are internal to the parser.
GBL parser buffer size.
Bootloader/parser configurations.
Parser requires upgrade images to be encrypted, providing confidentiality, if true.
Parser requires upgrade images to be authenticated by the bootloader certificate, if true.
Parser requires rollback protection of applications, if true.
Defines the minimum application version that can be accepted.
Upgrade image contains application upgrade.
Upgrade image contains bootloader upgrade.
Upgrade image contains SE upgrade.
Upgrade image contains Delta upgrade.
Application upgrade should be applied from upgrade image.
Bootloader upgrade should be applied from upgrade image.
SE upgrade should be applied from upgrade image.
Enumeration Documentation#
GblParserState_t#
GblParserState_t
State in the GBL parser state machine.
Enumerator | |
---|---|
GblParserStateInit | Initial state. |
GblParserStateIdle | Idle state. |
GblParserStateHeader | Parsing header tag. |
GblParserStateBootloader | Parsing bootloader tag. |
GblParserStateBootloaderData | Parsing bootloader tag data. |
GblParserStateApplication | Parsing application tag. |
GblParserStateMetadata | Parsing metadata tag. |
GblParserStateMetadataData | Parsing metadata tag data. |
GblParserStateProg | Parsing flash program tag. |
GblParserStateProgData | Parsing flash program tag data. |
GblParserStateEraseProg | Parsing flash erase&program tag. |
GblParserStateFinalize | Finalizing file. |
GblParserStateDone | Parsing complete. |
GblParserStateEncryptionInit | Parsing encryption init tag. |
GblParserStateEncryptionContainer | Parsing encryption data tag. |
GblParserStateSignature | Parsing signature tag. |
GblParserStateError | Error state. |
107
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
Function Documentation#
gbl_getTagParsingInfoFromTagId#
const GblTagParsingInfo_t * gbl_getTagParsingInfoFromTagId (uint32_t tagId)
Function for looking up and retrieving the parsing information struct associated with a particular GBL tag type / tag ID.
[in] | tagId | The tag ID to be looked up. |
Returns
A pointer to the GblTagParsingInfo_t struct associated with tagId, or a NULL pointer if the provided tagId cannot be found.
323
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
parser_init#
int32_t parser_init (void * context, void * decryptContext, void * authContext, uint8_t flags)
Initialize the parser's context.
N/A | context | Pointer to context for the parser implementation |
N/A | decryptContext | Pointer to context for decryption of parsed file |
N/A | authContext | Pointer to context for authentication of parsed file |
N/A | flags | Flags for parser support |
Returns
BOOTLOADER_OK if OK, error code otherwise.
335
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
parser_parse#
int32_t parser_parse (void * context, ImageProperties_t * imageProperties, uint8_t buffer, size_t length, const BootloaderParserCallbacks_t * callbacks)
Parse an image file to extract the binary and some metadata.
N/A | context | Pointer to the specific parser's context variable |
N/A | imageProperties | Pointer to the image file state variable |
N/A | buffer | Pointer to byte array containing data to parse |
N/A | length | Size in bytes of the data in buffer |
N/A | callbacks | Struct containing function pointers to be called by the parser to pass the extracted binary data back to BTL. |
Pushes data into the image file parser to be parsed.
Returns
BOOTLOADER_OK if OK, error code otherwise.
354
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
parser_verifyCertificate#
int32_t parser_verifyCertificate (void * context, void * input, void * blProperties, void * shaState)
Verify the GBL certificate.
[inout] | context | GBL parser context |
[in] | input | Input data |
[in] | blProperties | Pointer to ApplicationProperties_t of bootloader |
[inout] | shaState | Pointer to Sha256Context_t used to store SHA256 of GBL certificate |
Note
The behavior of this function depends on the context state.
Returns
BOOTLOADER_ERROR_PARSER_PARSED if done parsing the current input buffer. BOOTLOADER_OK if input data is stored in the internal buffer. BOOTLOADER_OK if the certificate in GBL is accepted. BOOTLOADER_ERROR_PARSER_SIGNATURE if the certificate in GBL is rejected.
395
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
gbl_writeProgData#
int32_t gbl_writeProgData (ParserContext_t * context, uint8_t buffer, size_t length, const BootloaderParserCallbacks_t * callbacks)
Write application data.
N/A | context | GBL parser context |
N/A | buffer | Input buffer containing data to be written |
N/A | length | Size of input buffer |
N/A | callbacks | GBL Parser callbacks for writing data |
This function is called when parsing any tag with GblProg_t structured content.
Returns
Error code
411
of file platform/bootloader/parser/gbl/btl_gbl_parser.h