SE050 Driver
API reference
Loading...
Searching...
No Matches
se050_applet.hpp
Go to the documentation of this file.
1
11#pragma once
12
13#include "se050_apdu.hpp"
14#include "se050_types.hpp"
15
16#include <cstddef>
17#include <cstdint>
18
19namespace se050::applet {
20
27inline constexpr std::uint8_t kDefaultIoTAppletAid[] = {
28 0xA0U, 0x00U, 0x00U, 0x03U, 0x96U, 0x54U, 0x53U, 0x00U,
29 0x00U, 0x00U, 0x01U, 0x03U, 0x00U, 0x00U, 0x00U, 0x00U};
30
32inline constexpr std::uint8_t kDefaultIoTAppletAidLen =
33 static_cast<std::uint8_t>(sizeof(kDefaultIoTAppletAid) / sizeof(kDefaultIoTAppletAid[0]));
34
40inline constexpr std::uint8_t kCardManagerAid[] = {
41 0xA0U, 0x00U, 0x00U, 0x01U, 0x51U, 0x00U, 0x00U, 0x00U};
42inline constexpr std::uint8_t kCardManagerAidLen =
43 static_cast<std::uint8_t>(sizeof(kCardManagerAid) / sizeof(kCardManagerAid[0]));
44
51[[nodiscard]] inline Error BuildSelectDefaultIot(std::uint8_t* out, std::size_t cap,
52 std::size_t* out_len) noexcept {
53 return apdu::BuildCaseShort(0x00U, 0xA4U, 0x04U, 0x00U, kDefaultIoTAppletAid, kDefaultIoTAppletAidLen, true, 0x00U,
54 out, cap, out_len);
55}
56
60[[nodiscard]] inline Error BuildSelectCardManager(std::uint8_t* out, std::size_t cap,
61 std::size_t* out_len) noexcept {
62 return apdu::BuildCaseShort(0x00U, 0xA4U, 0x04U, 0x00U, kCardManagerAid, kCardManagerAidLen, true, 0x00U, out, cap,
63 out_len);
64}
65
71[[nodiscard]] inline Error BuildSelectApplication(const std::uint8_t* aid, std::uint8_t aid_len,
72 std::uint8_t* out, std::size_t cap,
73 std::size_t* out_len) noexcept {
74 return apdu::BuildCaseShort(0x00U, 0xA4U, 0x04U, 0x00U, aid, aid_len, true, 0x00U, out, cap, out_len);
75}
76
77} // namespace se050::applet
Error BuildCaseShort(std::uint8_t cla, std::uint8_t ins, std::uint8_t p1, std::uint8_t p2, const std::uint8_t *data, std::uint8_t data_len, bool le_present, std::uint8_t le, std::uint8_t *out, std::size_t out_cap, std::size_t *out_len) noexcept
Build a CASE 3/4 short command when data_len ≤ 255 and a 1-byte Le is enough.
Definition se050_apdu.hpp:106
Definition se050_applet.hpp:19
constexpr std::uint8_t kCardManagerAidLen
Definition se050_applet.hpp:42
constexpr std::uint8_t kDefaultIoTAppletAidLen
sizeof(kDefaultIoTAppletAid) as a std::uint8_t (fits short Lc).
Definition se050_applet.hpp:32
Error BuildSelectApplication(const std::uint8_t *aid, std::uint8_t aid_len, std::uint8_t *out, std::size_t cap, std::size_t *out_len) noexcept
Build SELECT for an arbitrary AID / DF name.
Definition se050_applet.hpp:71
constexpr std::uint8_t kCardManagerAid[]
GlobalPlatform Card Manager / ISD AID (8 bytes).
Definition se050_applet.hpp:40
constexpr std::uint8_t kDefaultIoTAppletAid[]
NXP Plug & Trust SE05x IoT applet AID (16 bytes).
Definition se050_applet.hpp:27
Error BuildSelectDefaultIot(std::uint8_t *out, std::size_t cap, std::size_t *out_len) noexcept
Build SELECT (CLA=0x00, INS=0xA4, P1=0x04, P2=0x00) for kDefaultIoTAppletAid.
Definition se050_applet.hpp:51
Error BuildSelectCardManager(std::uint8_t *out, std::size_t cap, std::size_t *out_len) noexcept
Build SELECT for the Card Manager / ISD (kCardManagerAid).
Definition se050_applet.hpp:60
Error
Definition se050_types.hpp:14
ISO 7816-4 C-APDU packing and R-APDU parsing helpers (short + extended length).
Shared types, limits, and error codes for the HF-SE050 driver.