19 class L1 :
private L0,
public LoginLogoutApi,
public SecurityApi,
public UtilityApi {
25 void PrepareSessionBufferForChallenge(uint8_t* cc1, uint8_t* cc2, uint16_t access);
26 void TXRXData(uint16_t cmd, uint16_t reqLen, uint16_t cmdFlags, uint16_t* respLen);
27 void Se3PayloadCryptoInit();
28 void Se3PayloadEncrypt(uint16_t flags, uint8_t* iv, uint8_t* data, uint16_t nBlocks, uint8_t* auth);
29 void Se3PayloadDecrypt(uint16_t flags,
const uint8_t* iv, uint8_t* data, uint16_t nBlocks,
const uint8_t* auth);
30 void L1Config(uint16_t type, uint16_t op, uint8_t* value);
32 void KeyList(uint16_t maxKeys, uint16_t skip,
se3Key* keyArray, uint16_t* count);
38 void L1Login(
const uint8_t* pin, uint16_t access,
bool force);
40 void L1LogoutForced();
41 bool L1GetSessionLoggedIn(){
return this->base.GetSessionLoggedIn(); }
42 se3_access_type L1GetAccessType();
44 void L1CryptoSetTime(uint32_t devTime);
45 void L1CryptoInit(uint16_t algorithm, uint16_t mode, uint32_t keyId, uint32_t* sessId);
46 void L1CryptoUpdate(uint32_t sessId, uint16_t flags, uint16_t data1Len, uint8_t* data1, uint16_t data2Len, uint8_t* data2, uint16_t* dataOutLen, uint8_t* dataOut);
47 void L1Encrypt(
size_t dataInLen, uint8_t* dataIn,
size_t* dataOutLen, uint8_t* dataOut, uint16_t algorithm, uint16_t mode, uint32_t keyId);
48 void L1Decrypt(
size_t dataInLen, uint8_t* dataIn,
size_t* dataOutLen, uint8_t* dataOut, uint16_t algorithm, uint16_t mode, uint32_t keyId);
49 void L1Digest(
size_t dataInLen, uint8_t* dataIn,
size_t* dataOutLen, uint8_t* dataOut, uint16_t algorithm);
50 void L1GetAlgorithms(uint16_t maxAlgorithms, uint16_t skip,
se3Algo* algorithmsArray, uint16_t* count);
51 void L1SetAdminPIN(uint8_t* pin);
52 void L1SetUserPIN(uint8_t* pin);
53 void L1KeyEdit(
se3Key* k, uint16_t op);
54 void L1KeyList(uint16_t maxKeys, uint16_t skip,
se3Key* keyArray, uint16_t* count);
55 bool L1FindKey(uint32_t keyId);
57 void SelectSession(uint8_t sPtr);
58 void L1FactoryInit(uint8_t* serialno);
59 uint8_t *GetDeviceSerialNumber(){
return this->GetDeviceSn();}
61 bool L1SEkeyInfo(std::string&
id, std::string& name, uint8_t mode);
62 bool L1GetKeyEnc(uint32_t key_id, uint32_t k2, uint8_t *key_data, uint16_t key_len);
63 void L1SEkeyMaintenance(uint8_t *buffer, uint16_t *buflen);
64 bool L1DeleteKey(uint32_t key_id);
65 bool L1DeleteAllKeys(std::vector<uint32_t>& keep);
66 bool L1InsertKey(uint32_t key_id, uint16_t key_len, uint32_t dec_id, uint8_t *key_data);