mirror of
https://github.com/m5stack/M5Unit-NFC.git
synced 2026-05-20 11:48:34 -07:00
480 lines
34 KiB
HTML
480 lines
34 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
|
<meta name="generator" content="Doxygen 1.11.0"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>M5Unit-NFC: src/nfc/apdu/apdu.hpp File Reference</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<script type="text/javascript" src="clipboard.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="cookie.js"></script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr id="projectrow">
|
|
<td id="projectalign">
|
|
<div id="projectname">M5Unit-NFC<span id="projectnumber"> 0.0.3 git rev:59f5362</span>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.11.0 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() { codefold.init(0); });
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search',true);
|
|
$(function() { init_search(); });
|
|
});
|
|
/* @license-end */
|
|
</script>
|
|
<div id="main-nav"></div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function(){initNavTree('apdu_8hpp.html',''); initResizable(true); });
|
|
/* @license-end */
|
|
</script>
|
|
<div id="doc-content">
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<div id="MSearchResults">
|
|
<div class="SRPage">
|
|
<div id="SRIndex">
|
|
<div id="SRResults"></div>
|
|
<div class="SRStatus" id="Loading">Loading...</div>
|
|
<div class="SRStatus" id="Searching">Searching...</div>
|
|
<div class="SRStatus" id="NoMatches">No Matches</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#nested-classes">Classes</a> |
|
|
<a href="#namespaces">Namespaces</a> |
|
|
<a href="#enum-members">Enumerations</a> |
|
|
<a href="#func-members">Functions</a> |
|
|
<a href="#var-members">Variables</a> </div>
|
|
<div class="headertitle"><div class="title">apdu.hpp File Reference</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p>Application Protocol Data Unit (ISO/IEC 7816-4)
|
|
<a href="#details">More...</a></p>
|
|
<div class="textblock"><code>#include <cstdint></code><br />
|
|
<code>#include <string></code><br />
|
|
<code>#include <vector></code><br />
|
|
</div>
|
|
<p><a href="apdu_8hpp_source.html">Go to the source code of this file.</a></p>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
|
Classes</h2></td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html">m5::nfc::apdu::TLV</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html" title="TLV element.">TLV</a> element. <a href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
|
|
Namespaces</h2></td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacem5.html">m5</a></td></tr>
|
|
<tr class="memdesc:namespacem5"><td class="mdescLeft"> </td><td class="mdescRight">Top level namespace of M5stack. <br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceapdu.html">apdu</a></td></tr>
|
|
<tr class="memdesc:namespaceapdu"><td class="mdescLeft"> </td><td class="mdescRight">For APDU. <br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
|
|
Enumerations</h2></td></tr>
|
|
<tr class="memitem:a52383af4e666193fc52faa7c2c0f1c45" id="r_a52383af4e666193fc52faa7c2c0f1c45"><td class="memItemLeft" align="right" valign="top"><a id="a52383af4e666193fc52faa7c2c0f1c45" name="a52383af4e666193fc52faa7c2c0f1c45"></a>enum class  </td><td class="memItemRight" valign="bottom"><a class="el" href="#a52383af4e666193fc52faa7c2c0f1c45">m5::nfc::apdu::INS</a> : uint8_t { <br />
|
|
  <b>SELECT_FILE</b> = 0xA4
|
|
, <b>CREATE_FILE</b> = 0xE0
|
|
, <b>READ_BINARY</b> = 0xB0
|
|
, <b>WRITE_BINARY</b> = 0xD0
|
|
, <br />
|
|
  <b>UPDATE_BINARY</b> = 0xD6
|
|
, <b>ERASE_BINARY</b> = 0x0E
|
|
, <b>READ_RECORD</b> = 0xB2
|
|
, <b>WRITE_RECORD</b> = 0xD2
|
|
, <br />
|
|
  <b>APPEND_RECORD</b> = 0xE2
|
|
, <b>UPDATE_RECORRD</b> = 0xDC
|
|
, <b>GET_RESPONSE</b> = 0xC0
|
|
, <b>GET_DATA</b> = 0xCA
|
|
, <br />
|
|
  <b>PUT_DATA</b> = 0xDA
|
|
, <b>VERIFY</b> = 0x20
|
|
, <b>INTERNAL_AUTHENTICATE</b> = 0x88
|
|
, <b>EXTERNAL_AUTHENTICATE</b> = 0x82
|
|
, <br />
|
|
  <b>GET_CHALLEMGE</b> = 0x84
|
|
, <b>LOCK_DF</b> = 0x50
|
|
, <b>UNLOCK_DF</b> = 0x52
|
|
, <b>UNLOCK_KEY</b> = 0x54
|
|
, <br />
|
|
  <b>CHANGE_KEY</b> = 0x32
|
|
, <b>ERASE_ALL_RECORDS</b> = 0x06
|
|
, <b>GET_VERSION</b> = 0x60
|
|
, <b>DF_CREATE_APPLICATION</b> = 0xCA
|
|
, <br />
|
|
  <b>DF_DELETE_APPLICATION</b> = 0xDA
|
|
, <b>DF_SELECT_APPLICATION</b> = 0x5A
|
|
, <b>DF_GET_APPLICATION_IDS</b> = 0x6A
|
|
, <b>DF_CREATE_STD_DATA_FILE</b> = 0xCD
|
|
, <br />
|
|
  <b>DF_GET_FREE_MEMORY</b> = 0x6E
|
|
, <b>DF_GET_FILE_IDS</b> = 0x6F
|
|
, <b>DF_GET_ISO_FILE_IDS</b> = 0x61
|
|
, <b>DF_GET_KEY_SETTINGS</b> = 0x45
|
|
, <br />
|
|
  <b>DF_SET_CONFIGURATION</b> = 0x5C
|
|
, <b>DF_CHANGE_FILE_SETTINGS</b> = 0x5F
|
|
, <b>DF_AUTHENTICATE</b> = 0x0A
|
|
, <b>DF_AUTHENTICATE_ISO</b> = 0x1A
|
|
, <br />
|
|
  <b>DF_AUTHENTICATE_AES</b> = 0xAA
|
|
, <b>DF_AUTHENTICATE_EV2</b> = 0x71
|
|
, <b>DF_FORMAT_PICC</b> = 0xFC
|
|
, <b>DF_READ_DATA</b> = 0xBD
|
|
, <br />
|
|
  <b>DF_WRITE_DATA</b> = 0x3D
|
|
, <b>DF_GET_FILE_SETTINGS</b> = 0xF5
|
|
, <b>DF_DELETE_TRANSACTION_MAC_FILE</b> = 0xDF
|
|
, <b>DF_CREATE_TRANSACTION_MAC_FILE</b> = 0xCE
|
|
<br />
|
|
}</td></tr>
|
|
<tr class="memdesc:a52383af4e666193fc52faa7c2c0f1c45"><td class="mdescLeft"> </td><td class="mdescRight">APDU instruction code. <br /></td></tr>
|
|
<tr class="separator:a52383af4e666193fc52faa7c2c0f1c45"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a15996a2f517e76dafb70c61654cb08ad" id="r_a15996a2f517e76dafb70c61654cb08ad"><td class="memItemLeft" align="right" valign="top">enum class  </td><td class="memItemRight" valign="bottom"><a class="el" href="#a15996a2f517e76dafb70c61654cb08ad">m5::nfc::apdu::SelectBy</a> : uint8_t { <br />
|
|
  <a class="el" href="#a15996a2f517e76dafb70c61654cb08ada225a9460e6eedf7af126fdc580345881">FileId</a> = 0x00
|
|
, <a class="el" href="#a15996a2f517e76dafb70c61654cb08ada7998394ef65789d8e3a93fb947d3c8a5">ChildDf</a> = 0x01
|
|
, <a class="el" href="#a15996a2f517e76dafb70c61654cb08ada127a046b88390d6cf9d13d8f74d04778">EfUnderCurrentDf</a> = 0x02
|
|
, <a class="el" href="#a15996a2f517e76dafb70c61654cb08adae0b5d60e5eea9e28524ae742a4a85b61">ParentDf</a> = 0x03
|
|
, <br />
|
|
  <a class="el" href="#a15996a2f517e76dafb70c61654cb08ada6bf1a0b1d6bc92eae6416611613dbafe">DfName</a> = 0x04
|
|
, <a class="el" href="#a15996a2f517e76dafb70c61654cb08adabf1f53068262ad6525671112c94790cb">PathFromMf</a> = 0x08
|
|
, <a class="el" href="#a15996a2f517e76dafb70c61654cb08adada937e05c426e8439cd1f4130d69562a">PathFromCurrentDf</a> = 0x09
|
|
<br />
|
|
}</td></tr>
|
|
<tr class="memdesc:a15996a2f517e76dafb70c61654cb08ad"><td class="mdescLeft"> </td><td class="mdescRight">Select control for SELECT_FILE. <a href="#a15996a2f517e76dafb70c61654cb08ad">More...</a><br /></td></tr>
|
|
<tr class="separator:a15996a2f517e76dafb70c61654cb08ad"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a74836436e907c80c9a02040d912e6400" id="r_a74836436e907c80c9a02040d912e6400"><td class="memItemLeft" align="right" valign="top">enum class  </td><td class="memItemRight" valign="bottom"><a class="el" href="#a74836436e907c80c9a02040d912e6400">m5::nfc::apdu::SelectOccurrence</a> : uint8_t { <a class="el" href="#a74836436e907c80c9a02040d912e6400a703aba6102ad8dd4829bc645f464c0b0">FirstOrOnly</a> = 0x00
|
|
, <a class="el" href="#a74836436e907c80c9a02040d912e6400ad55b30607c2a9a2616347d6edb789f6b">Last</a> = 0x01
|
|
, <a class="el" href="#a74836436e907c80c9a02040d912e6400a10ac3d04253ef7e1ddc73e6091c0cd55">Next</a> = 0x02
|
|
, <a class="el" href="#a74836436e907c80c9a02040d912e6400add1f775e443ff3b9a89270713580a51b">Previous</a> = 0x03
|
|
}</td></tr>
|
|
<tr class="memdesc:a74836436e907c80c9a02040d912e6400"><td class="mdescLeft"> </td><td class="mdescRight">Select occurrence for SELECT_FILE. <a href="#a74836436e907c80c9a02040d912e6400">More...</a><br /></td></tr>
|
|
<tr class="separator:a74836436e907c80c9a02040d912e6400"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a43277a89917969f53d3b2feb57caecbf" id="r_a43277a89917969f53d3b2feb57caecbf"><td class="memItemLeft" align="right" valign="top">enum class  </td><td class="memItemRight" valign="bottom"><a class="el" href="#a43277a89917969f53d3b2feb57caecbf">m5::nfc::apdu::SelectResponse</a> : uint8_t { <a class="el" href="#a43277a89917969f53d3b2feb57caecbfa74198f9e44085e24bba72b3ccac4c13a">FCI</a> = 0x00
|
|
, <a class="el" href="#a43277a89917969f53d3b2feb57caecbfaa7c815fafe60ae637d38216fa6300395">FCP</a> = 0x04
|
|
, <a class="el" href="#a43277a89917969f53d3b2feb57caecbfa4b25de86ef47d3b09525b1176978b34d">FMD</a> = 0x08
|
|
, <a class="el" href="#a43277a89917969f53d3b2feb57caecbfa6adf97f83acf6453d4a6a4b1070f3754">None</a> = 0x0C
|
|
}</td></tr>
|
|
<tr class="memdesc:a43277a89917969f53d3b2feb57caecbf"><td class="mdescLeft"> </td><td class="mdescRight">Response for SELECT_FILE. <a href="#a43277a89917969f53d3b2feb57caecbf">More...</a><br /></td></tr>
|
|
<tr class="separator:a43277a89917969f53d3b2feb57caecbf"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
|
Functions</h2></td></tr>
|
|
<tr class="memitem:a8661d1015977051ff244e69214a9f244" id="r_a8661d1015977051ff244e69214a9f244"><td class="memItemLeft" align="right" valign="top"><a id="a8661d1015977051ff244e69214a9f244" name="a8661d1015977051ff244e69214a9f244"></a>
|
|
bool </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::is_response_OK</b> (const uint16_t sw12)</td></tr>
|
|
<tr class="memdesc:a8661d1015977051ff244e69214a9f244"><td class="mdescLeft"> </td><td class="mdescRight">Is response successfully? <br /></td></tr>
|
|
<tr class="separator:a8661d1015977051ff244e69214a9f244"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a02f2cf412748d5964bb0034cb40dd622" id="r_a02f2cf412748d5964bb0034cb40dd622"><td class="memItemLeft" align="right" valign="top"><a id="a02f2cf412748d5964bb0034cb40dd622" name="a02f2cf412748d5964bb0034cb40dd622"></a>
|
|
bool </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::is_response_OK</b> (const uint8_t sw[2])</td></tr>
|
|
<tr class="memdesc:a02f2cf412748d5964bb0034cb40dd622"><td class="mdescLeft"> </td><td class="mdescRight">Is response successfully? <br /></td></tr>
|
|
<tr class="separator:a02f2cf412748d5964bb0034cb40dd622"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:adba4a567d412579a8447c2da5425e935" id="r_adba4a567d412579a8447c2da5425e935"><td class="memItemLeft" align="right" valign="top"><a id="adba4a567d412579a8447c2da5425e935" name="adba4a567d412579a8447c2da5425e935"></a>
|
|
bool </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::is_response_OK</b> (const uint8_t sw1, const uint8_t sw2)</td></tr>
|
|
<tr class="memdesc:adba4a567d412579a8447c2da5425e935"><td class="mdescLeft"> </td><td class="mdescRight">Is response successfully? <br /></td></tr>
|
|
<tr class="separator:adba4a567d412579a8447c2da5425e935"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a525935a38be231627a6abbebc6d757e8" id="r_a525935a38be231627a6abbebc6d757e8"><td class="memItemLeft" align="right" valign="top"><a id="a525935a38be231627a6abbebc6d757e8" name="a525935a38be231627a6abbebc6d757e8"></a>
|
|
bool </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::need_select_file_le</b> (const uint8_t param2)</td></tr>
|
|
<tr class="separator:a525935a38be231627a6abbebc6d757e8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5f63415d23f1838b2cf7a294cad86ec1" id="r_a5f63415d23f1838b2cf7a294cad86ec1"><td class="memItemLeft" align="right" valign="top"><a id="a5f63415d23f1838b2cf7a294cad86ec1" name="a5f63415d23f1838b2cf7a294cad86ec1"></a>
|
|
std::vector< <a class="el" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html">TLV</a> > </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::parse_tlv</b> (const uint8_t *ptr, const uint32_t len)</td></tr>
|
|
<tr class="memdesc:a5f63415d23f1838b2cf7a294cad86ec1"><td class="mdescLeft"> </td><td class="mdescRight">Parse <a class="el" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html" title="TLV element.">TLV</a>. <br /></td></tr>
|
|
<tr class="separator:a5f63415d23f1838b2cf7a294cad86ec1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aefdcb0a0692e4e97f13e6a5f7a140ade" id="r_aefdcb0a0692e4e97f13e6a5f7a140ade"><td class="memItemLeft" align="right" valign="top"><a id="aefdcb0a0692e4e97f13e6a5f7a140ade" name="aefdcb0a0692e4e97f13e6a5f7a140ade"></a>
|
|
void </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::dump_tlv</b> (const std::vector< <a class="el" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html">TLV</a> > &tlvs, const uint8_t depth=0)</td></tr>
|
|
<tr class="memdesc:aefdcb0a0692e4e97f13e6a5f7a140ade"><td class="mdescLeft"> </td><td class="mdescRight">Dump <a class="el" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html" title="TLV element.">TLV</a>. <br /></td></tr>
|
|
<tr class="separator:aefdcb0a0692e4e97f13e6a5f7a140ade"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ade33069f0d2d930a92d79591644b8ed8" id="r_ade33069f0d2d930a92d79591644b8ed8"><td class="memItemLeft" align="right" valign="top">std::vector< uint8_t > </td><td class="memItemRight" valign="bottom"><a class="el" href="apdu_8cpp.html#ade33069f0d2d930a92d79591644b8ed8">m5::nfc::apdu::make_apdu_command</a> (const uint8_t cla, const uint8_t ins, const uint8_t param1=0x00, const uint8_t param2=0x00, const uint8_t *data=nullptr, const uint16_t data_len=0, const uint16_t rx_len=0)</td></tr>
|
|
<tr class="memdesc:ade33069f0d2d930a92d79591644b8ed8"><td class="mdescLeft"> </td><td class="mdescRight">Make APDU command. <br /></td></tr>
|
|
<tr class="separator:ade33069f0d2d930a92d79591644b8ed8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a3f8d54d3187aa2aebd756f6da9523351" id="r_a3f8d54d3187aa2aebd756f6da9523351"><td class="memItemLeft" align="right" valign="top"><a id="a3f8d54d3187aa2aebd756f6da9523351" name="a3f8d54d3187aa2aebd756f6da9523351"></a>
|
|
std::vector< uint8_t > </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::make_apdu_case1</b> (const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2)</td></tr>
|
|
<tr class="memdesc:a3f8d54d3187aa2aebd756f6da9523351"><td class="mdescLeft"> </td><td class="mdescRight">Make APDU case1 command [CLA | INS | P1 | P2]. <br /></td></tr>
|
|
<tr class="separator:a3f8d54d3187aa2aebd756f6da9523351"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a4a2d632c8b477931e48b04663927ce01" id="r_a4a2d632c8b477931e48b04663927ce01"><td class="memItemLeft" align="right" valign="top"><a id="a4a2d632c8b477931e48b04663927ce01" name="a4a2d632c8b477931e48b04663927ce01"></a>
|
|
std::vector< uint8_t > </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::make_apdu_case2</b> (const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2, const uint16_t le)</td></tr>
|
|
<tr class="memdesc:a4a2d632c8b477931e48b04663927ce01"><td class="mdescLeft"> </td><td class="mdescRight">Make APDU case2 command [CLA | INS | P1 | P2 | Le]. <br /></td></tr>
|
|
<tr class="separator:a4a2d632c8b477931e48b04663927ce01"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aca08fb7d12f53387b2a9d8350e01499d" id="r_aca08fb7d12f53387b2a9d8350e01499d"><td class="memItemLeft" align="right" valign="top"><a id="aca08fb7d12f53387b2a9d8350e01499d" name="aca08fb7d12f53387b2a9d8350e01499d"></a>
|
|
std::vector< uint8_t > </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::make_apdu_case3</b> (const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2, const uint8_t *data, const uint16_t data_len)</td></tr>
|
|
<tr class="memdesc:aca08fb7d12f53387b2a9d8350e01499d"><td class="mdescLeft"> </td><td class="mdescRight">Make APDU case3 command [CLA | INS | P1 | P2 | Lc | C-Data]. <br /></td></tr>
|
|
<tr class="separator:aca08fb7d12f53387b2a9d8350e01499d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa98f1a34a0201b9011bab4fe0c3af7ff" id="r_aa98f1a34a0201b9011bab4fe0c3af7ff"><td class="memItemLeft" align="right" valign="top"><a id="aa98f1a34a0201b9011bab4fe0c3af7ff" name="aa98f1a34a0201b9011bab4fe0c3af7ff"></a>
|
|
std::vector< uint8_t > </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::make_apdu_case4</b> (const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2, const uint8_t *data, const uint16_t data_len, const uint16_t le)</td></tr>
|
|
<tr class="memdesc:aa98f1a34a0201b9011bab4fe0c3af7ff"><td class="mdescLeft"> </td><td class="mdescRight">Make APDU case4 command [CLA | INS | P1 | P2 | Lc | C-Data | Le]. <br /></td></tr>
|
|
<tr class="separator:aa98f1a34a0201b9011bab4fe0c3af7ff"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
|
|
Variables</h2></td></tr>
|
|
<tr class="memitem:a78d50d5bfaabce84eeec859500b2422d" id="r_a78d50d5bfaabce84eeec859500b2422d"><td class="memItemLeft" align="right" valign="top"><a id="a78d50d5bfaabce84eeec859500b2422d" name="a78d50d5bfaabce84eeec859500b2422d"></a>
|
|
constexpr uint16_t </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::master_file_id</b> {0x3F00}</td></tr>
|
|
<tr class="memdesc:a78d50d5bfaabce84eeec859500b2422d"><td class="mdescLeft"> </td><td class="mdescRight">Master file ID. <br /></td></tr>
|
|
<tr class="separator:a78d50d5bfaabce84eeec859500b2422d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr><td colspan="2"><div class="groupHeader">APDU responses</div></td></tr>
|
|
<tr class="memitem:a1b669f6a49f7093762d3dad36c420b6a" id="r_a1b669f6a49f7093762d3dad36c420b6a"><td class="memItemLeft" align="right" valign="top"><a id="a1b669f6a49f7093762d3dad36c420b6a" name="a1b669f6a49f7093762d3dad36c420b6a"></a>
|
|
constexpr uint16_t </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::RESPONSE_OK</b> {0x9000}</td></tr>
|
|
<tr class="memdesc:a1b669f6a49f7093762d3dad36c420b6a"><td class="mdescLeft"> </td><td class="mdescRight">Command successfully executed (OK) <br /></td></tr>
|
|
<tr class="separator:a1b669f6a49f7093762d3dad36c420b6a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a64594933a9df521c8ebaafa07ece39e8" id="r_a64594933a9df521c8ebaafa07ece39e8"><td class="memItemLeft" align="right" valign="top"><a id="a64594933a9df521c8ebaafa07ece39e8" name="a64594933a9df521c8ebaafa07ece39e8"></a>
|
|
constexpr uint16_t </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::SUCCESSFULLY_1</b> {0x6100}</td></tr>
|
|
<tr class="memdesc:a64594933a9df521c8ebaafa07ece39e8"><td class="mdescLeft"> </td><td class="mdescRight">Command successfully executed; xx bytes of data are available and can be requested using GET RESPON. <br /></td></tr>
|
|
<tr class="separator:a64594933a9df521c8ebaafa07ece39e8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a3758d358b5278fdb64b90cffcb4f0a64" id="r_a3758d358b5278fdb64b90cffcb4f0a64"><td class="memItemLeft" align="right" valign="top"><a id="a3758d358b5278fdb64b90cffcb4f0a64" name="a3758d358b5278fdb64b90cffcb4f0a64"></a>
|
|
constexpr uint16_t </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::SUCCESSFULLY_2</b> {0x9F00}</td></tr>
|
|
<tr class="memdesc:a3758d358b5278fdb64b90cffcb4f0a64"><td class="mdescLeft"> </td><td class="mdescRight">Command successfully executed; xx bytes of data are available and can be requested using GET RESPON. <br /></td></tr>
|
|
<tr class="separator:a3758d358b5278fdb64b90cffcb4f0a64"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a526ff7f8c3bf24f7a29439dfd8c94abf" id="r_a526ff7f8c3bf24f7a29439dfd8c94abf"><td class="memItemLeft" align="right" valign="top"><a id="a526ff7f8c3bf24f7a29439dfd8c94abf" name="a526ff7f8c3bf24f7a29439dfd8c94abf"></a>
|
|
constexpr uint8_t </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::RESPONSE_BYTES_STILL_AVAILABLE</b> {0x61}</td></tr>
|
|
<tr class="memdesc:a526ff7f8c3bf24f7a29439dfd8c94abf"><td class="mdescLeft"> </td><td class="mdescRight">Response bytes still available. <br /></td></tr>
|
|
<tr class="separator:a526ff7f8c3bf24f7a29439dfd8c94abf"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a47cfe093613fbd3f11fcf22156238da3" id="r_a47cfe093613fbd3f11fcf22156238da3"><td class="memItemLeft" align="right" valign="top"><a id="a47cfe093613fbd3f11fcf22156238da3" name="a47cfe093613fbd3f11fcf22156238da3"></a>
|
|
constexpr uint8_t </td><td class="memItemRight" valign="bottom"><b>m5::nfc::apdu::WRONG_LENGTH_LE</b> {0x6C}</td></tr>
|
|
<tr class="memdesc:a47cfe093613fbd3f11fcf22156238da3"><td class="mdescLeft"> </td><td class="mdescRight">Wrong length Le. <br /></td></tr>
|
|
<tr class="separator:a47cfe093613fbd3f11fcf22156238da3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><p>Application Protocol Data Unit (ISO/IEC 7816-4) </p>
|
|
</div><h2 class="groupheader">Enumeration Type Documentation</h2>
|
|
<a id="a15996a2f517e76dafb70c61654cb08ad" name="a15996a2f517e76dafb70c61654cb08ad"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a15996a2f517e76dafb70c61654cb08ad">◆ </a></span>SelectBy</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">enum class <a class="el" href="#a15996a2f517e76dafb70c61654cb08ad">m5::nfc::apdu::SelectBy</a> : uint8_t</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Select control for SELECT_FILE. </p>
|
|
<dl class="section note"><dt>Note</dt><dd>OR with SelectOccurrence </dd></dl>
|
|
<table class="fieldtable">
|
|
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a15996a2f517e76dafb70c61654cb08ada225a9460e6eedf7af126fdc580345881" name="a15996a2f517e76dafb70c61654cb08ada225a9460e6eedf7af126fdc580345881"></a>FileId </td><td class="fielddoc"><p>Select MF/DF/EF by file ID. </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><a id="a15996a2f517e76dafb70c61654cb08ada7998394ef65789d8e3a93fb947d3c8a5" name="a15996a2f517e76dafb70c61654cb08ada7998394ef65789d8e3a93fb947d3c8a5"></a>ChildDf </td><td class="fielddoc"><p>Select child DF (FID in data) </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><a id="a15996a2f517e76dafb70c61654cb08ada127a046b88390d6cf9d13d8f74d04778" name="a15996a2f517e76dafb70c61654cb08ada127a046b88390d6cf9d13d8f74d04778"></a>EfUnderCurrentDf </td><td class="fielddoc"><p>Select EF under current DF (FID in data) </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><a id="a15996a2f517e76dafb70c61654cb08adae0b5d60e5eea9e28524ae742a4a85b61" name="a15996a2f517e76dafb70c61654cb08adae0b5d60e5eea9e28524ae742a4a85b61"></a>ParentDf </td><td class="fielddoc"><p>Select parent DF. </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><a id="a15996a2f517e76dafb70c61654cb08ada6bf1a0b1d6bc92eae6416611613dbafe" name="a15996a2f517e76dafb70c61654cb08ada6bf1a0b1d6bc92eae6416611613dbafe"></a>DfName </td><td class="fielddoc"><p>Select by DF name (AID) </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><a id="a15996a2f517e76dafb70c61654cb08adabf1f53068262ad6525671112c94790cb" name="a15996a2f517e76dafb70c61654cb08adabf1f53068262ad6525671112c94790cb"></a>PathFromMf </td><td class="fielddoc"><p>Select by path from MF. </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><a id="a15996a2f517e76dafb70c61654cb08adada937e05c426e8439cd1f4130d69562a" name="a15996a2f517e76dafb70c61654cb08adada937e05c426e8439cd1f4130d69562a"></a>PathFromCurrentDf </td><td class="fielddoc"><p>Select by path from current DF. </p>
|
|
</td></tr>
|
|
</table>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a74836436e907c80c9a02040d912e6400" name="a74836436e907c80c9a02040d912e6400"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a74836436e907c80c9a02040d912e6400">◆ </a></span>SelectOccurrence</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">enum class <a class="el" href="#a74836436e907c80c9a02040d912e6400">m5::nfc::apdu::SelectOccurrence</a> : uint8_t</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Select occurrence for SELECT_FILE. </p>
|
|
<dl class="section note"><dt>Note</dt><dd>OR with SelectBy </dd></dl>
|
|
<table class="fieldtable">
|
|
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a74836436e907c80c9a02040d912e6400a703aba6102ad8dd4829bc645f464c0b0" name="a74836436e907c80c9a02040d912e6400a703aba6102ad8dd4829bc645f464c0b0"></a>FirstOrOnly </td><td class="fielddoc"><p>Select the first (or only) match. </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><a id="a74836436e907c80c9a02040d912e6400ad55b30607c2a9a2616347d6edb789f6b" name="a74836436e907c80c9a02040d912e6400ad55b30607c2a9a2616347d6edb789f6b"></a>Last </td><td class="fielddoc"><p>Select the last match. </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><a id="a74836436e907c80c9a02040d912e6400a10ac3d04253ef7e1ddc73e6091c0cd55" name="a74836436e907c80c9a02040d912e6400a10ac3d04253ef7e1ddc73e6091c0cd55"></a>Next </td><td class="fielddoc"><p>Select the next match. </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><a id="a74836436e907c80c9a02040d912e6400add1f775e443ff3b9a89270713580a51b" name="a74836436e907c80c9a02040d912e6400add1f775e443ff3b9a89270713580a51b"></a>Previous </td><td class="fielddoc"><p>Select the previous match. </p>
|
|
</td></tr>
|
|
</table>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a43277a89917969f53d3b2feb57caecbf" name="a43277a89917969f53d3b2feb57caecbf"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a43277a89917969f53d3b2feb57caecbf">◆ </a></span>SelectResponse</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">enum class <a class="el" href="#a43277a89917969f53d3b2feb57caecbf">m5::nfc::apdu::SelectResponse</a> : uint8_t</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Response for SELECT_FILE. </p>
|
|
<table class="fieldtable">
|
|
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a43277a89917969f53d3b2feb57caecbfa74198f9e44085e24bba72b3ccac4c13a" name="a43277a89917969f53d3b2feb57caecbfa74198f9e44085e24bba72b3ccac4c13a"></a>FCI </td><td class="fielddoc"><p>FCI template. </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><a id="a43277a89917969f53d3b2feb57caecbfaa7c815fafe60ae637d38216fa6300395" name="a43277a89917969f53d3b2feb57caecbfaa7c815fafe60ae637d38216fa6300395"></a>FCP </td><td class="fielddoc"><p><a class="el" href="structm5_1_1nfc_1_1_f_c_p.html" title="File Control Parameters.">FCP</a> template. </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><a id="a43277a89917969f53d3b2feb57caecbfa4b25de86ef47d3b09525b1176978b34d" name="a43277a89917969f53d3b2feb57caecbfa4b25de86ef47d3b09525b1176978b34d"></a>FMD </td><td class="fielddoc"><p>FMD template. </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><a id="a43277a89917969f53d3b2feb57caecbfa6adf97f83acf6453d4a6a4b1070f3754" name="a43277a89917969f53d3b2feb57caecbfa6adf97f83acf6453d4a6a4b1070f3754"></a>None </td><td class="fielddoc"><p>/ No response </p>
|
|
</td></tr>
|
|
</table>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Function Documentation</h2>
|
|
<a id="ade33069f0d2d930a92d79591644b8ed8" name="ade33069f0d2d930a92d79591644b8ed8"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ade33069f0d2d930a92d79591644b8ed8">◆ </a></span>make_apdu_command()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">std::vector< uint8_t > m5::nfc::apdu::make_apdu_command </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const uint8_t</td> <td class="paramname"><span class="paramname"><em>cla</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const uint8_t</td> <td class="paramname"><span class="paramname"><em>ins</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const uint8_t</td> <td class="paramname"><span class="paramname"><em>param1</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0x00</span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const uint8_t</td> <td class="paramname"><span class="paramname"><em>param2</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0x00</span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const uint8_t *</td> <td class="paramname"><span class="paramname"><em>data</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const uint16_t</td> <td class="paramname"><span class="paramname"><em>data_len</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0</span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const uint16_t</td> <td class="paramname"><span class="paramname"><em>rx_len</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0</span> )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Make APDU command. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">cla</td><td>CLA </td></tr>
|
|
<tr><td class="paramname">ins</td><td>INS </td></tr>
|
|
<tr><td class="paramname">param1</td><td>PARAM1 </td></tr>
|
|
<tr><td class="paramname">param2</td><td>PARAM2 </td></tr>
|
|
<tr><td class="paramname">data</td><td>Payload data </td></tr>
|
|
<tr><td class="paramname">data_len</td><td>Payload data length </td></tr>
|
|
<tr><td class="paramname">rx_len</td><td>Expected bytes to receive </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>Constructed command data </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_59410e1461a4f8107dcbc9b19538c327.html">nfc</a></li><li class="navelem"><a class="el" href="dir_f9c0924a82716dee5be0d585bcd92f13.html">apdu</a></li><li class="navelem"><a class="el" href="apdu_8hpp.html">apdu.hpp</a></li>
|
|
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.11.0 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|