2026-04-14 06:36:43 +00:00
<!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/f/nfcf.cpp 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" >
2026-05-14 06:32:28 +00:00
< div id = "projectname" > M5Unit-NFC< span id = "projectnumber" >   0.0.3 git rev:59f5362</ span >
2026-04-14 06:36:43 +00:00
</ 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 ( 'nfcf_8cpp.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 = "#namespaces" > Namespaces</ a > |
< a href = "#func-members" > Functions</ a > </ div >
< div class = "headertitle" >< div class = "title" > nfcf.cpp File Reference</ div ></ div >
</ div > <!--header-->
< div class = "contents" >
< p > NFC-F definitions.
< a href = "#details" > More...</ a ></ p >
< div class = "textblock" >< code > #include " < a class = "el" href = "nfcf_8hpp_source.html" > nfcf.hpp</ a > " </ code >< br />
< code > #include < M5Utility.hpp> </ code >< br />
< code > #include < algorithm> </ code >< br />
</ div >< 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 >
</ 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:abd6a4ea21d882749c7a2bfb347975623" id = "r_abd6a4ea21d882749c7a2bfb347975623" >< td class = "memItemLeft" align = "right" valign = "top" >< a id = "abd6a4ea21d882749c7a2bfb347975623" name = "abd6a4ea21d882749c7a2bfb347975623" ></ a >
uint16_t  </ td >< td class = "memItemRight" valign = "bottom" >< b > m5::nfc::f::get_maximum_block</ b > (const < a class = "el" href = "nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96f" > Type</ a > t)</ td ></ tr >
< tr class = "memdesc:abd6a4ea21d882749c7a2bfb347975623" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Gets the maximum block. < br /></ td ></ tr >
< tr class = "separator:abd6a4ea21d882749c7a2bfb347975623" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ad17a8af57383f9e4559a8352404000df" id = "r_ad17a8af57383f9e4559a8352404000df" >< td class = "memItemLeft" align = "right" valign = "top" >< a id = "ad17a8af57383f9e4559a8352404000df" name = "ad17a8af57383f9e4559a8352404000df" ></ a >
uint16_t  </ td >< td class = "memItemRight" valign = "bottom" >< b > m5::nfc::f::get_number_of_user_blocks</ b > (const < a class = "el" href = "nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96f" > Type</ a > t)</ td ></ tr >
< tr class = "memdesc:ad17a8af57383f9e4559a8352404000df" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Gets the number of user blocks. < br /></ td ></ tr >
< tr class = "separator:ad17a8af57383f9e4559a8352404000df" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a57800978f3b9fda6a89ffcf36c12f6dd" id = "r_a57800978f3b9fda6a89ffcf36c12f6dd" >< td class = "memItemLeft" align = "right" valign = "top" >< a id = "a57800978f3b9fda6a89ffcf36c12f6dd" name = "a57800978f3b9fda6a89ffcf36c12f6dd" ></ a >
uint16_t  </ td >< td class = "memItemRight" valign = "bottom" >< b > m5::nfc::f::get_first_user_block</ b > (const < a class = "el" href = "nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96f" > Type</ a > t)</ td ></ tr >
< tr class = "memdesc:a57800978f3b9fda6a89ffcf36c12f6dd" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Gets the first user area block number. < br /></ td ></ tr >
< tr class = "separator:a57800978f3b9fda6a89ffcf36c12f6dd" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a87199c49f43628671b18166f6109c746" id = "r_a87199c49f43628671b18166f6109c746" >< td class = "memItemLeft" align = "right" valign = "top" >< a id = "a87199c49f43628671b18166f6109c746" name = "a87199c49f43628671b18166f6109c746" ></ a >
uint16_t  </ td >< td class = "memItemRight" valign = "bottom" >< b > m5::nfc::f::get_last_user_block</ b > (const < a class = "el" href = "nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96f" > Type</ a > t)</ td ></ tr >
< tr class = "memdesc:a87199c49f43628671b18166f6109c746" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Gets the last user area block number. < br /></ td ></ tr >
< tr class = "separator:a87199c49f43628671b18166f6109c746" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:acdfb3dc62b558211198bba69f2a18427" id = "r_acdfb3dc62b558211198bba69f2a18427" >< td class = "memItemLeft" align = "right" valign = "top" >< a id = "acdfb3dc62b558211198bba69f2a18427" name = "acdfb3dc62b558211198bba69f2a18427" ></ a >
uint8_t  </ td >< td class = "memItemRight" valign = "bottom" >< b > m5::nfc::f::get_maximum_read_blocks</ b > (const < a class = "el" href = "nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96f" > Type</ a > t)</ td ></ tr >
< tr class = "memdesc:acdfb3dc62b558211198bba69f2a18427" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Maximum number of blocks that can be read simultaneously. < br /></ td ></ tr >
< tr class = "separator:acdfb3dc62b558211198bba69f2a18427" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a5d0e04aab8ed4be98fba915dc96f57cb" id = "r_a5d0e04aab8ed4be98fba915dc96f57cb" >< td class = "memItemLeft" align = "right" valign = "top" >< a id = "a5d0e04aab8ed4be98fba915dc96f57cb" name = "a5d0e04aab8ed4be98fba915dc96f57cb" ></ a >
uint8_t  </ td >< td class = "memItemRight" valign = "bottom" >< b > m5::nfc::f::get_maximum_write_blocks</ b > (const < a class = "el" href = "nfcf_8hpp.html#a6edf4a03089bd8e0b648d6469d07c96f" > Type</ a > t)</ td ></ tr >
< tr class = "memdesc:a5d0e04aab8ed4be98fba915dc96f57cb" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Maximum number of blocks that can be write simultaneously. < br /></ td ></ tr >
< tr class = "separator:a5d0e04aab8ed4be98fba915dc96f57cb" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:af04bf1c332c7652d0279807a8eebec9d" id = "r_af04bf1c332c7652d0279807a8eebec9d" >< td class = "memItemLeft" align = "right" valign = "top" >< a id = "af04bf1c332c7652d0279807a8eebec9d" name = "af04bf1c332c7652d0279807a8eebec9d" ></ a >
bool  </ td >< td class = "memItemRight" valign = "bottom" >< b > m5::nfc::f::is_read_only_lite</ b > (const < a class = "el" href = "structm5_1_1nfc_1_1f_1_1block__t.html" > block_t</ a > block)</ td ></ tr >
< tr class = "memdesc:af04bf1c332c7652d0279807a8eebec9d" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Is read only block (Permissions are not considered) < br /></ td ></ tr >
< tr class = "separator:af04bf1c332c7652d0279807a8eebec9d" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:af179bb4b95076fce93c9aac02c0deb72" id = "r_af179bb4b95076fce93c9aac02c0deb72" >< td class = "memItemLeft" align = "right" valign = "top" >< a id = "af179bb4b95076fce93c9aac02c0deb72" name = "af179bb4b95076fce93c9aac02c0deb72" ></ a >
bool  </ td >< td class = "memItemRight" valign = "bottom" >< b > m5::nfc::f::is_read_only_lite_s</ b > (const < a class = "el" href = "structm5_1_1nfc_1_1f_1_1block__t.html" > block_t</ a > block)</ td ></ tr >
< tr class = "memdesc:af179bb4b95076fce93c9aac02c0deb72" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Is read only block (Permissions are not considered) < br /></ td ></ tr >
< tr class = "separator:af179bb4b95076fce93c9aac02c0deb72" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:af9eb100b9b9cd033fad82fca3470a7ee" id = "r_af9eb100b9b9cd033fad82fca3470a7ee" >< td class = "memItemLeft" align = "right" valign = "top" >< a id = "af9eb100b9b9cd033fad82fca3470a7ee" name = "af9eb100b9b9cd033fad82fca3470a7ee" ></ a >
bool  </ td >< td class = "memItemRight" valign = "bottom" >< b > m5::nfc::f::can_read_lite</ b > (const < a class = "el" href = "structm5_1_1nfc_1_1f_1_1block__t.html" > block_t</ a > block)</ td ></ tr >
< tr class = "memdesc:af9eb100b9b9cd033fad82fca3470a7ee" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Can the value of the specified block be read? (Permissions are not considered) < br /></ td ></ tr >
< tr class = "separator:af9eb100b9b9cd033fad82fca3470a7ee" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a9c037fc0ecb47e8ca767344be267ff1f" id = "r_a9c037fc0ecb47e8ca767344be267ff1f" >< td class = "memItemLeft" align = "right" valign = "top" >< a id = "a9c037fc0ecb47e8ca767344be267ff1f" name = "a9c037fc0ecb47e8ca767344be267ff1f" ></ a >
bool  </ td >< td class = "memItemRight" valign = "bottom" >< b > m5::nfc::f::can_read_lite_s</ b > (const < a class = "el" href = "structm5_1_1nfc_1_1f_1_1block__t.html" > block_t</ a > block)</ td ></ tr >
< tr class = "memdesc:a9c037fc0ecb47e8ca767344be267ff1f" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Can the value of the specified block be read? (Permissions are not considered) < br /></ td ></ tr >
< tr class = "separator:a9c037fc0ecb47e8ca767344be267ff1f" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a9d5df6f8cc40e297cb675451d4f20774" id = "r_a9d5df6f8cc40e297cb675451d4f20774" >< td class = "memItemLeft" align = "right" valign = "top" >< a id = "a9d5df6f8cc40e297cb675451d4f20774" name = "a9d5df6f8cc40e297cb675451d4f20774" ></ a >
bool  </ td >< td class = "memItemRight" valign = "bottom" >< b > m5::nfc::f::operator==</ b > (const < a class = "el" href = "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html" > PICC</ a > & a, const < a class = "el" href = "structm5_1_1nfc_1_1f_1_1_p_i_c_c.html" > PICC</ a > & b)</ td ></ tr >
< tr class = "memdesc:a9d5df6f8cc40e297cb675451d4f20774" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Equal? (Only IDm,PMm) < br /></ td ></ tr >
< tr class = "separator:a9d5df6f8cc40e297cb675451d4f20774" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr >< td colspan = "2" >< div class = "groupHeader" > For MAC</ div ></ td ></ tr >
< tr class = "memitem:a79ce96cae934525470db73d1df2de74a" id = "r_a79ce96cae934525470db73d1df2de74a" >< td class = "memItemLeft" align = "right" valign = "top" > bool  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "#a79ce96cae934525470db73d1df2de74a" > m5::nfc::f::make_session_key</ a > (uint8_t sk[16], const uint8_t ck[16], const uint8_t rc[16])</ td ></ tr >
< tr class = "memdesc:a79ce96cae934525470db73d1df2de74a" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Make session key. < br /></ td ></ tr >
< tr class = "separator:a79ce96cae934525470db73d1df2de74a" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a613b055c6f55fe0ac94694c262238bbd" id = "r_a613b055c6f55fe0ac94694c262238bbd" >< td class = "memItemLeft" align = "right" valign = "top" > bool  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "#a613b055c6f55fe0ac94694c262238bbd" > m5::nfc::f::generate_mac</ a > (uint8_t mac[8], const uint8_t *plain, uint32_t plain_len, const uint8_t *block_data, uint32_t block_len, const uint8_t sk1[8], const uint8_t sk2[8], const uint8_t rc[16])</ td ></ tr >
< tr class = "memdesc:a613b055c6f55fe0ac94694c262238bbd" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Generate MAC. < br /></ td ></ tr >
< tr class = "separator:a613b055c6f55fe0ac94694c262238bbd" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a926f212f3a65e9312101a1ce9d8733ca" id = "r_a926f212f3a65e9312101a1ce9d8733ca" >< td class = "memItemLeft" align = "right" valign = "top" > bool  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "#a926f212f3a65e9312101a1ce9d8733ca" > m5::nfc::f::make_personalized_card_key_lite_s</ a > (uint8_t card_key[16], const uint8_t master_key[24], const uint8_t id_block[16])</ td ></ tr >
< tr class = "memdesc:a926f212f3a65e9312101a1ce9d8733ca" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Generate personalized card key for FeliCa Lite-S. < br /></ td ></ tr >
< tr class = "separator:a926f212f3a65e9312101a1ce9d8733ca" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
</ table >
< a name = "details" id = "details" ></ a >< h2 class = "groupheader" > Detailed Description</ h2 >
< div class = "textblock" >< p > NFC-F definitions. </ p >
</ div >< h2 class = "groupheader" > Function Documentation</ h2 >
< a id = "a613b055c6f55fe0ac94694c262238bbd" name = "a613b055c6f55fe0ac94694c262238bbd" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a613b055c6f55fe0ac94694c262238bbd" > ◆  </ a ></ span > generate_mac()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > bool m5::nfc::f::generate_mac </ td >
< td > (</ td >
< td class = "paramtype" > uint8_t</ td > < td class = "paramname" >< span class = "paramname" >< em > mac</ em ></ span > [8], </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const uint8_t *</ td > < td class = "paramname" >< span class = "paramname" >< em > plain</ em ></ span > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > uint32_t</ td > < td class = "paramname" >< span class = "paramname" >< em > plain_len</ 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 > block_data</ em ></ span > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > uint32_t</ td > < td class = "paramname" >< span class = "paramname" >< em > block_len</ 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 > sk1</ em ></ span > [8], </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const uint8_t</ td > < td class = "paramname" >< span class = "paramname" >< em > sk2</ em ></ span > [8], </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const uint8_t</ td > < td class = "paramname" >< span class = "paramname" >< em > rc</ em ></ span > [16]  )</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Generate MAC. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramdir" > [out]</ td >< td class = "paramname" > mac</ td >< td > MAC </ td ></ tr >
< tr >< td class = "paramdir" ></ td >< td class = "paramname" > plain</ td >< td > Plain blocks (If nullptr, do not use) </ td ></ tr >
< tr >< td class = "paramdir" ></ td >< td class = "paramname" > plain_num</ td >< td > Number of plain (If zero, do not use) </ td ></ tr >
< tr >< td class = "paramdir" ></ td >< td class = "paramname" > block_data</ td >< td > Block data </ td ></ tr >
< tr >< td class = "paramdir" ></ td >< td class = "paramname" > block_len</ td >< td > Length of block_data </ td ></ tr >
< tr >< td class = "paramdir" ></ td >< td class = "paramname" > sk1</ td >< td > Session key 1 </ td ></ tr >
< tr >< td class = "paramdir" ></ td >< td class = "paramname" > sk2</ td >< td > Session key 2 </ td ></ tr >
< tr >< td class = "paramdir" ></ td >< td class = "paramname" > rc</ td >< td > Random challenge </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > True if successful </ dd ></ dl >
</ div >
</ div >
< a id = "a926f212f3a65e9312101a1ce9d8733ca" name = "a926f212f3a65e9312101a1ce9d8733ca" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a926f212f3a65e9312101a1ce9d8733ca" > ◆  </ a ></ span > make_personalized_card_key_lite_s()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > bool m5::nfc::f::make_personalized_card_key_lite_s </ td >
< td > (</ td >
< td class = "paramtype" > uint8_t</ td > < td class = "paramname" >< span class = "paramname" >< em > card_key</ em ></ span > [16], </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const uint8_t</ td > < td class = "paramname" >< span class = "paramname" >< em > master_key</ em ></ span > [24], </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const uint8_t</ td > < td class = "paramname" >< span class = "paramname" >< em > id_block</ em ></ span > [16]  )</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Generate personalized card key for FeliCa Lite-S. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramdir" > [out]</ td >< td class = "paramname" > card_key</ td >< td > Personalized card key (16 bytes) </ td ></ tr >
< tr >< td class = "paramdir" ></ td >< td class = "paramname" > master_key</ td >< td > Personalized master key (24 bytes) </ td ></ tr >
< tr >< td class = "paramdir" ></ td >< td class = "paramname" > id_block</ td >< td > ID block value (16 bytes) </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > True if successful </ dd ></ dl >
</ div >
</ div >
< a id = "a79ce96cae934525470db73d1df2de74a" name = "a79ce96cae934525470db73d1df2de74a" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a79ce96cae934525470db73d1df2de74a" > ◆  </ a ></ span > make_session_key()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > bool m5::nfc::f::make_session_key </ td >
< td > (</ td >
< td class = "paramtype" > uint8_t</ td > < td class = "paramname" >< span class = "paramname" >< em > sk</ em ></ span > [16], </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const uint8_t</ td > < td class = "paramname" >< span class = "paramname" >< em > ck</ em ></ span > [16], </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const uint8_t</ td > < td class = "paramname" >< span class = "paramname" >< em > rc</ em ></ span > [16]  )</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Make session key. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramdir" > [out]</ td >< td class = "paramname" > sk</ td >< td > Session key (sk1 8byte + sk2 8byte) </ td ></ tr >
< tr >< td class = "paramdir" ></ td >< td class = "paramname" > ck</ td >< td > Card key </ td ></ tr >
< tr >< td class = "paramdir" ></ td >< td class = "paramname" > rc</ td >< td > Random challenge </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > True if successful </ 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_fc7f8db700d2762a065a46160197a2a0.html" > f</ a ></ li >< li class = "navelem" >< a class = "el" href = "nfcf_8cpp.html" > nfcf.cpp</ 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 >