Add initial certificate bank support and allow selecting the bank#3629
Add initial certificate bank support and allow selecting the bank#3629alistair23 wants to merge 2 commits into
Conversation
cfa50b4 to
0484933
Compare
0484933 to
5a803e8
Compare
I think we might want a high level design for bank management.
Bank management is similar to key pair info feature. Today we are using option 2) - see https://github.com/DMTF/libspdm/blob/main/include/hal/library/responder/key_pair_info.h I feel we can start from option 2. |
The issue here though is it's very complex managing the
I think key pairs are simpler then banks. Note that the bank approach I'm thinking about here will be similar to https://github.com/DMTF/libspdm/blob/main/include/hal/library/responder/key_pair_info.h, in that we will have to call to the implementer for handling the commands. The main difference is that libspdm understands the banks as well, compared to currently where libspdm doesn't comprehend banks and the implementer has to fake it by manually swapping out the certs |
Ok. That is fine. Can you do a design review to compare those 2 directions? |
|
BTW: I am trying to add SLOT_MANAGEMENT feature using option 2. |
Currently bank support can be handled by the implementer using the CONNECTION_STATE_NEGOTIATED callback registered with libspdm_register_connection_state_callback_func(). The problem with this is it pushes a lot of complexity back to the implementer and it makes supporting the Slot Management commands tricky, as the implementer will need to handle the commands as well. Instead let's move the bank support into libspdm. For step 1 we just convert the array of certificate information for the slots into a 2-D array of slots and banks. We hard code to use bank 0 at all times, so this is no functional change. At build time we allow users to specify their own bank count, allowing smaller bank counts on size reduced systems. Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Allow the implementation to select the bank to use by setting the LIBSPDM_DATA_LOCAL_CURRENT_BANK property. This selects the current bank for all existing operations. Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
5a803e8 to
df458c2
Compare
But option 2 requires a lot more duplicated work each implementer, with a greater chance of bugs in all of them. My plan is to keep working on this, but I didn't want to spend too much time on the bank management if it wasn't going to be accepted.
I can, but I'm not sure what that is |
|
@alistair23 |
SPDM 1.4 add support for the banked architecture. Basically allowing a number of banks of certificate slots.
Currently bank support can be handled by the implementer using the CONNECTION_STATE_NEGOTIATED callback registered with
libspdm_register_connection_state_callback_func().The problem with this is it pushes a lot of complexity back to the implementer and it makes supporting the Slot Management commands tricky, as the implementer will need to handle the commands as well.
Instead let's move the bank support into libspdm. Currently we just allow at build time a 2-D array of certificates, for banks and slots. We then allow the implementation to select the bank to use, which defaults to zero.
Future patches will work on the Slot Management commands, which can then operate on specific banks.
At build time we allow users to specify their own bank count, allowing smaller bank counts on size reduced systems.