<h3>Contribution description</h3>
<p>This PR adds support for the <a href="https://fidoalliance.org/fido2/" rel="nofollow">Fast Identity Online 2 (FIDO2)</a> specification in RIOT. FIDO2 is an authentication standard that seeks to solve the password problem by enabling passwordless authentication. FIDO2 consists of the <a href="https://www.w3.org/TR/2021/REC-webauthn-2-20210408/" rel="nofollow">W3C Web Authentication specification (WebAuthn)</a> and the <a href="https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html" rel="nofollow">Client to Authenticator Protocol (CTAP)</a>.</p>
<p>This PR adds a basic implementation of the CTAP protocol. CTAP is an application layer protocol for the communication between an authenticator and host. Most of the time an authenticator is either a mobile device or security key like <a href="https://www.yubico.com/authentication-standards/fido2/" rel="nofollow">YubiKey</a>.</p>
<p>As of now not many websites support the passwordless login flow added by the second version of the FIDO standard. Therefore future PR's will add the backward compatibility to FIDO1 in order to enable the usage of this implementation as part of 2FA authentication flows.</p>

<h3>Testing procedure</h3>
<ul>
<li><code>tests/sys_fido2_ctap</code></li>
</ul>

<h3>Issues/PRs references</h3>


<hr>

<h4>You can view, comment on, or merge this pull request online at:</h4>
<p>  <a href='https://github.com/RIOT-OS/RIOT/pull/16489'>https://github.com/RIOT-OS/RIOT/pull/16489</a></p>

<h4>Commit Summary</h4>
<ul>
  <li>FIDO2 support in RIOT</li>
</ul>

<h4>File Changes</h4>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-d2e4f5b2cddc5eddb20e42bf88b7b16085ba4599fab8081e6f6168f60e12fedb">makefiles/pseudomodules.inc.mk</a>
    (1)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-3741494ace2daad176c30d014dff9b0ec7bab19b9bfaa81f06a362e4814cd07a">pkg/fido2_tests/Makefile</a>
    (9)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-40221b527f89f8921510187a75904a945b2dad9b19c4c175025c2dbe148dd6e1">sys/Kconfig</a>
    (1)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-df69fd2c7840fcaca7dae211c7df24745d202e8482f8d5f0957cc15ef90b948f">sys/Makefile.dep</a>
    (31)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-3a7254ee8c0a8a4deb4c3400c64a2b16124e6ebe2f3c0493abfa6b559d7efe43">sys/fido2/Kconfig</a>
    (7)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-89e6ddf9a9633c974c406edfd968ed1fa07807064cb11893f2ef8ef69ed4a9bc">sys/fido2/Makefile</a>
    (7)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-2c0cb8c9ff04ebbb2b2d14a8c59f79e75e94fad8e56e96dcc1555a32147cd614">sys/fido2/ctap/Kconfig</a>
    (34)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-2ce4a657a8237999dacf08f95dee6f0113b33300bece13defc59a3da4c81946c">sys/fido2/ctap/Makefile</a>
    (11)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-569caf2250d19b3030b905a06593cfa9514dc960b609d9ad25f83b15b5b55a43">sys/fido2/ctap/ctap.c</a>
    (1511)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-c8a64f3c8efc2e88a6f85070a5f9a69e541748ef268c1b19c38601f16f1c2098">sys/fido2/ctap/ctap_cbor.c</a>
    (1687)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-26755402232b88aa529295e4169dae474f12368331402da3c2865c45103519de">sys/fido2/ctap/ctap_crypto.c</a>
    (305)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-010549a1a7b009d94b61147d45f0cde34e34d29115ad6d59c8d455e841c951e9">sys/fido2/ctap/ctap_mem.c</a>
    (106)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-fa9daef725ddcdffec39ede161950bd1346c9347a694461c138042147773b570">sys/fido2/ctap/ctap_utils.c</a>
    (90)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-e203930f4f5461eb8b979ff0802bcbf209a9a7da915751fbb95e0c7faac74c4d">sys/fido2/ctap/transport/Makefile</a>
    (7)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-2cd39311727b58034adbac0c93ec6acf2b073dfb8b24f1cf617f41b37ebce85d">sys/fido2/ctap/transport/ctap_transport.c</a>
    (138)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-f453f35412423125af1ed7f5ef50a56529febeefb3c67109fbb0742cb02ebbdc">sys/fido2/ctap/transport/hid/Makefile</a>
    (3)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-d962c6af4663105c64e28c6f2c084f59d9736ca55cfd7b1c303317ef14a61dbe">sys/fido2/ctap/transport/hid/ctap_transport_hid.c</a>
    (603)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-34694027a54ca76b113f1239f68374bc47a4fc2a77789d28656d1a262b83c070">sys/fido2/doc.txt</a>
    (22)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-bc6bfedfb3a582182c9d23938b0c956ded60cc2725574dffae4692daac781cb1">sys/include/fido2/ctap.h</a>
    (788)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-7c2d667237ee777992334e4e25081f7246bca38a13e5386e725454fb7acd4007">sys/include/fido2/ctap/ctap_cbor.h</a>
    (164)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-6bd6b6b15471bd2b652fa458187563133d08ce185a6d368bd99b58b462260a92">sys/include/fido2/ctap/ctap_crypto.h</a>
    (209)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-4d541b6cfe427c323ef50aa5d25b21c195b3e76515719ebb10c846871e913694">sys/include/fido2/ctap/ctap_mem.h</a>
    (58)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-1efab571eaf83d080f318a4cbe1e7339166040ab1c9d2142db9d333f28d46d73">sys/include/fido2/ctap/ctap_status.h</a>
    (92)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-7d4ae4438af9eaf0a5d31d83d9125082eddd28b73fbef893dc1f95ae10050c5e">sys/include/fido2/ctap/ctap_utils.h</a>
    (81)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-41dbfda1bb2564a28cf47d5387c8be9f49c3d1396b452222810dd22138d84a5e">sys/include/fido2/ctap/transport/ctap_transport.h</a>
    (84)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-e4287433f387abfdc414e07db9eedf384c7a1cd6272c88de621e0f422178184f">sys/include/fido2/ctap/transport/hid/ctap_transport_hid.h</a>
    (261)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-eff8e0fb85f551f29920d052e6ae3fa47920a2745fe2ff9f601e18e0f3089f24">tests/sys_fido2_ctap/Makefile</a>
    (22)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-95649237b50ffb1986de8d0274ac4736b4c28487431a1690e5ce34e90a5bb18c">tests/sys_fido2_ctap/README.md</a>
    (23)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/RIOT-OS/RIOT/pull/16489/files#diff-4d6da8fe7dcf4592c6cca131b1d6a35d3286a5a3331040e837e0570f916aafc7">tests/sys_fido2_ctap/main.c</a>
    (17)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/RIOT-OS/RIOT/pull/16489.patch'>https://github.com/RIOT-OS/RIOT/pull/16489.patch</a></li>
  <li><a href='https://github.com/RIOT-OS/RIOT/pull/16489.diff'>https://github.com/RIOT-OS/RIOT/pull/16489.diff</a></li>
</ul>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/RIOT-OS/RIOT/pull/16489">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABE7WYGXXKCT2W5O6QAZ3P3TOYGSZANCNFSM45IUCTGA">unsubscribe</a>.<img src="https://github.com/notifications/beacon/ABE7WYCDWYXXV4MHYTPTMJTTOYGSZA5CNFSM45IUCTGKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4NMDFP7A.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/RIOT-OS/RIOT/pull/16489",
"url": "https://github.com/RIOT-OS/RIOT/pull/16489",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>