9.13.3.4.46. Function Se05x_API_I2CM_ExecuteCommandSet¶
Defined in File se05x_APDU_apis.h
9.13.3.4.46.1. Function Documentation¶
-
smStatus_t
Se05x_API_I2CM_ExecuteCommandSet(pSe05xSession_t session_ctx, const uint8_t *inputData, size_t inputDataLen, uint32_t attestationID, uint8_t attestationAlgo, uint8_t *response, size_t *presponseLen, SE05x_TimeStamp_t *ptimeStamp, uint8_t *freshness, size_t *pfreshnessLen, uint8_t *chipId, size_t *pchipIdLen, uint8_t *signature, size_t *psignatureLen, uint8_t *randomAttst, size_t randomAttstLen)¶ Se05x_API_I2CM_ExecuteCommandSet
Execute one or multiple I2C commands in master mode. Execution is conditional to the presence of the authentication object identified by RESERVED_ID_I2CM_ACCESS. If the credential is not present in the eSE, access is allowed in general. Otherwise, a session shall be established before executing this command. In this case, the I2CM_ExecuteCommandSet command shall be sent within the mentioned session.
The I2C command set is constructed as a sequence of instructions described in with the following rules:
The length should be limited to MAX_I2CM_COMMAND_LENGTH.
The data to be read cannot exceed MAX_I2CM_COMMAND_LENGTH, including protocol overhead.
Command to Applet
Field
Value
Description
CLA
0x80
INS
INS_CRYPTO
See
SE05x_INS_t, in addition to INS_CRYPTO, users can set the INS_ATTEST flag. In that case, attestation applies.P1
P1_DEFAULT
See
SE05x_P1_tP2
P2_I2CM
See
SE05x_P2_tLc
#(Payload)
TLV[TAG_1]
Byte array containing I2C Command set as TLV array.
TLV[TAG_2]
4-byte attestation object identifier. [Optional] [Conditional: only when INS_ATTEST is set]
TLV[TAG_3]
1-byte
SE05x_AttestationAlgo_t[Optional] [Conditional: only when INS_ATTEST is set]TLV[TAG_7]
16-byte freshness random [Optional] [Conditional: only when INS_ATTEST is set]
Le
0x00
Expecting TLV with return data.
R-APDU Body
Value
Description
TLV[TAG_1]
Read response, a bytestring containing a sequence of: * CONFIGURE (0x01), followed by 1 byte of return code (0x5A = SUCCESS). * WRITE (0x03), followed by 1 byte of return code * READ (0x04), followed by - Length: 2 bytes in big endian encoded without TLV length encoding - Read bytes * 0xFF followed by the error return code in case of a structural error of the incoming buffer (too long, for example)
TLV[TAG_3]
TLV containing 12-byte timestamp
TLV[TAG_4]
TLV containing 16-byte freshness (random)
TLV[TAG_5]
TLV containing 18-byte chip unique ID
TLV[TAG_6]
TLV containing signature over the concatenated values of TLV[TAG_1], TLV[TAG_3], TLV[TAG_4] and TLV[TAG_5].
R-APDU Trailer
SW
Description
SW_NO_ERROR
The command is handled successfully.
- Return
The sm status.
- Parameters
[in] session_ctx: The session context[in] inputData: The input data[in] inputDataLen: The input data length[in] attestationID: The attestation id[in] attestationAlgo: The attestation algorithmresponse: The responsepresponseLen: The presponse lengthptimeStamp: The ptime stampfreshness: The freshnesspfreshnessLen: The pfreshness lengthchipId: The chip identifierpchipIdLen: The pchip identifier lengthsignature: The signaturepsignatureLen: The psignature lengthrandomAttst: The random attst[in] randomAttstLen: The random attst length
