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.
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.
300
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.
312
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.
331
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.
372
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
388
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
Macro Definition Documentation#
PARSER_FLAG_ENCRYPTED#
#define PARSER_FLAG_ENCRYPTEDValue:
(1U << 0U)
GBL file is encrypted.
53
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
PARSER_FLAG_PARSE_CUSTOM_TAGS
#define PARSER_FLAG_PARSE_CUSTOM_TAGSValue:
(1U << 5U)
Parse custom tags rather than silently traversing them.
55
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
PARSER_FLAGS_PUBLIC_MASK#
#define PARSER_FLAGS_PUBLIC_MASKValue:
PARSER_FLAG_PARSE_CUSTOM_TAGS
Some flags are public, some are internal to the parser.
58
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
GBL_PARSER_BUFFER_SIZE#
#define GBL_PARSER_BUFFER_SIZEValue:
64UL
GBL parser buffer size.
61
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
PARSER_REQUIRE_AUTHENTICITY#
#define PARSER_REQUIRE_AUTHENTICITYValue:
(false)
Bootloader/parser configurations.
Parser requires upgrade images to be signed, providing authenticity, if true.
70
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
PARSER_REQUIRE_CONFIDENTIALITY#
#define PARSER_REQUIRE_CONFIDENTIALITYValue:
(false)
Parser requires upgrade images to be encrypted, providing confidentiality, if true.
77
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
PARSER_REQUIRE_CERTIFICATE_AUTHENTICITY#
#define PARSER_REQUIRE_CERTIFICATE_AUTHENTICITYValue:
(false)
Parser requires upgrade images to be authenticated by the bootloader certificate, if true.
85
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
PARSER_REQUIRE_ANTI_ROLLBACK_PROTECTION#
#define PARSER_REQUIRE_ANTI_ROLLBACK_PROTECTIONValue:
(false)
Parser requires rollback protection of applications, if true.
93
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
PARSER_APPLICATION_MINIMUM_VERSION_VALID#
#define PARSER_APPLICATION_MINIMUM_VERSION_VALIDValue:
(0UL)
Defines the minimum application version that can be accepted.
100
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
BTL_IMAGE_CONTENT_APPLICATION#
#define BTL_IMAGE_CONTENT_APPLICATIONValue:
0x01U
Upgrade image contains application upgrade.
195
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
BTL_IMAGE_CONTENT_BOOTLOADER#
#define BTL_IMAGE_CONTENT_BOOTLOADERValue:
0x02U
Upgrade image contains bootloader upgrade.
197
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
BTL_IMAGE_CONTENT_SE#
#define BTL_IMAGE_CONTENT_SEValue:
0x04U
Upgrade image contains SE upgrade.
199
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
BTL_IMAGE_INSTRUCTION_APPLICATION#
#define BTL_IMAGE_INSTRUCTION_APPLICATIONValue:
0x01U
Application upgrade should be applied from upgrade image.
202
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
BTL_IMAGE_INSTRUCTION_BOOTLOADER#
#define BTL_IMAGE_INSTRUCTION_BOOTLOADERValue:
0x02U
Bootloader upgrade should be applied from upgrade image.
204
of file platform/bootloader/parser/gbl/btl_gbl_parser.h
BTL_IMAGE_INSTRUCTION_SE#
#define BTL_IMAGE_INSTRUCTION_SEValue:
0x04U
SE upgrade should be applied from upgrade image.
206
of file platform/bootloader/parser/gbl/btl_gbl_parser.h