BSL v1.1.1 - 50.g42e5d9b
AMMOS Bundle Protocol Security Library (BSL)
Loading...
Searching...
No Matches
BPA Integrator Topics

This page covers the using BSL from the perspective of a BPA developer integrating the BSL through its service interface.

BPA–BSL Interactions

A BPA interacts with the BSL through two distinct interfaces:

BPA--BSL Interfaces

BSL Service API

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.

BPA Interaction Points

BPA Callback APIs

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, and a separate set are used by the internal BSL crypto library for key store access.

The BSL dynamic backend declares a set of functions which are delegated to the BPA. These are registered in the dynamic backend using the BSL_HostDescriptors_t struct and the BSL_HostDescriptors_Set() function.

The BSL crypto library declares a set of functions which are delegated to the BPA. These are registered in the crypto library using the BSL_KeyStore_Descriptors_t struct and the BSL_KeyStore_Init() function.