Description: IDE_KM responder shall return valid KP_ACK with Status=Successful, if it receives a KEY_PROG.
TestSetup:
- Requester -> QUERY {PortIndex=0x00}
- QUERY_RESP <- Responder
- Set GlobalStreamID = 1
TestTeardown: None
Steps:
- Requester -> KEY_PROG {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet in [0, 1], RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL], IFV=1}
- IdeKmMessage <- Responder
Assertion 2.1.1: sizeof(IdeKmMessage) == sizeof(KP_ACK)
Assertion 2.1.2: IdeKmMessage.ObjectID == KP_ACK
Assertion 2.1.3: IdeKmMessage.Status == Successful
Assertion 2.1.4: IdeKmMessage.PortIndex == KEY_PROG.PortIndex
Assertion 2.1.5: IdeKmMessage.StreamID == KEY_PROG.StreamID
Assertion 2.1.6: IdeKmMessage.KeySet == KEY_PROG.KeySet && IdeKmMessage.RxTx == KEY_PROG.RxTx && IdeKmMessage.SubStream == KEY_PROG.SubStream
Description: IDE_KM responder shall return valid KP_ACK with Status=Incorrect Length, if it receives a KEY_PROG with invalid Length.
TestSetup:
- Requester -> QUERY {PortIndex=0x00}
- QUERY_RESP <- Responder
TestTeardown: None
Steps:
- Requester -> KEY_PROG {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet in [0, 1], RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL], IFV=1}, Length in [8, sizeof(KP_ACK) - 4] with step=4.
- IdeKmMessage <- Responder
Assertion 2.2.1: sizeof(IdeKmMessage) == sizeof(KP_ACK)
Assertion 2.2.2: IdeKmMessage.ObjectID == KP_ACK
Assertion 2.2.3: IdeKmMessage.Status == Incorrect Length
Assertion 2.2.4: IdeKmMessage.PortIndex == KEY_PROG.PortIndex
Assertion 2.2.5: IdeKmMessage.StreamID == KEY_PROG.StreamID
Assertion 2.2.6: IdeKmMessage.KeySet == KEY_PROG.KeySet && IdeKmMessage.RxTx == KEY_PROG.RxTx && IdeKmMessage.SubStream == KEY_PROG.SubStream
Description: IDE_KM responder shall return valid KP_ACK with Status=Unsupported value in PortIndex, if it receives a KEY_PROG with invalid PortIndex.
TestSetup:
- Requester -> QUERY {PortIndex=0x00}
- QUERY_RESP <- Responder
- if QUERY_RESP.MaxPortIndex == 0xFF, skip the test.
TestTeardown: None
Steps:
- Requester -> KEY_PROG {(PortIndex, StreamID) in [(MaxPortIndex + 1, GlobalStreamID), (0xFF, GlobalStreamID + 0xFF - (MaxPortIndex + 1))], KeySet in [0, 1], RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL], IFV=1}
- IdeKmMessage <- Responder
Assertion 2.3.1: sizeof(IdeKmMessage) == sizeof(KP_ACK)
Assertion 2.3.2: IdeKmMessage.ObjectID == KP_ACK
Assertion 2.3.3: IdeKmMessage.Status == Unsupported value in PortIndex
Assertion 2.3.4: IdeKmMessage.PortIndex == KEY_PROG.PortIndex
Assertion 2.3.5: IdeKmMessage.StreamID == KEY_PROG.StreamID
Assertion 2.3.6: IdeKmMessage.KeySet == KEY_PROG.KeySet && IdeKmMessage.RxTx == KEY_PROG.RxTx && IdeKmMessage.SubStream == KEY_PROG.SubStream
Description: IDE_KM responder shall return valid KP_ACK with Status=Unsupported value in other field, if it receives a KEY_PROG with invalid SubStream.
TestSetup:
- Requester -> QUERY {PortIndex=0x00}
- QUERY_RESP <- Responder
TestTeardown: None
Steps:
- Requester -> KEY_PROG {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet in [0, 1], RxTx in [Rx, Tx], SubStream in [3, 0xF], IFV=1}
- IdeKmMessage <- Responder
Assertion 2.4.1: sizeof(IdeKmMessage) == sizeof(KP_ACK)
Assertion 2.4.2: IdeKmMessage.ObjectID == KP_ACK
Assertion 2.4.3: IdeKmMessage.Status == Unsupported value in other field
Assertion 2.4.4: IdeKmMessage.PortIndex == KEY_PROG.PortIndex
Assertion 2.4.5: IdeKmMessage.StreamID == KEY_PROG.StreamID
Assertion 2.4.6: IdeKmMessage.KeySet == KEY_PROG.KeySet && IdeKmMessage.RxTx == KEY_PROG.RxTx && IdeKmMessage.SubStream == KEY_PROG.SubStream
Description: IDE_KM responder shall return valid KP_ACK with Status=Unsupported value in other field, if it receives a KEY_PROG with invalid IFV.
TestSetup:
- Requester -> QUERY {PortIndex=0x00}
- QUERY_RESP <- Responder
TestTeardown: None
Steps:
- Requester -> KEY_PROG {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet in [0, 1], RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL], IFV=0x0 or [0x2, 0xFF]}
- IdeKmMessage <- Responder
Assertion 2.5.1: sizeof(IdeKmMessage) == sizeof(KP_ACK)
Assertion 2.5.2: IdeKmMessage.ObjectID == KP_ACK
Assertion 2.5.3: IdeKmMessage.Status == Unsupported value in other field
Assertion 2.5.4: IdeKmMessage.PortIndex == KEY_PROG.PortIndex
Assertion 2.5.5: IdeKmMessage.StreamID == KEY_PROG.StreamID
Assertion 2.5.6: IdeKmMessage.KeySet == KEY_PROG.KeySet && IdeKmMessage.RxTx == KEY_PROG.RxTx && IdeKmMessage.SubStream == KEY_PROG.SubStream
Description: IDE_KM responder shall return valid KP_ACK with Status=Unsupported value in other field, if it receives a KEY_PROG with invalid StreamID.
TestSetup:
- Requester -> QUERY {PortIndex=0x00}
- QUERY_RESP <- Responder
TestTeardown: None
Steps:
- Requester -> KEY_PROG {PortIndex in [0, MaxPortIndex], StreamID = invalid StreamID, KeySet in [0, 1], RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL], IFV=0x1}
- IdeKmMessage <- Responder
Assertion 2.6.1: sizeof(IdeKmMessage) == sizeof(KP_ACK)
Assertion 2.6.2: IdeKmMessage.ObjectID == KP_ACK
Assertion 2.6.3: IdeKmMessage.Status == Unsupported value in other field
Assertion 2.6.4: IdeKmMessage.PortIndex == KEY_PROG.PortIndex
Assertion 2.6.5: IdeKmMessage.StreamID == KEY_PROG.StreamID
Assertion 2.6.6: IdeKmMessage.KeySet == KEY_PROG.KeySet && IdeKmMessage.RxTx == KEY_PROG.RxTx && IdeKmMessage.SubStream == KEY_PROG.SubStream