BSL v0.0.0 - 0.geda3e66
AMMOS Bundle Protocol Security Library (BSL)
|
This page covers the using BSL from the perspective of a BPA developer integrating the BSL through its service interface.
A BPA interacts with the BSL through two distinct interfaces:
Each runtime instance of the BSL is isolated for thread safety within a host-specific struct referenced by a BSL_LibCtx_t pointer.
The runtime instance is used by the BPA via the BSL service interface to process bundles at each of the following four security interaction points within the BPA's bundle workflow. When invoked from the BPA, all BSL activities will occur within the context of a single bundle which is referenced by a BSL_BundleRef_t pointer.
Details of how the BSL processing order relates to other BPA processing of bundles along the BPA's workflow are left to the BPA integration.
These are shown for a notional BPA in the diagram below, where each edge indicates one of the four interaction points listed above.
Separate from the API used to call into the BSL to initiate security processing, the BSL relies on specific functions provided by the BPA to do its normal processing. Some of these functions are for introspecting and manipulating specific bundle or block contents, others are for encoding and decoding EID and EID Pattern values.
The BSL dynamic backend declares a set of functions which are delegated to the BPA, which are registered in the dynamic backend using the BSL_HostDescriptors_t struct and the BSL_HostDescriptors_Set() function.