<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl" media="all"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Roastidio.us in webspace https://github.com/</title>
<link>https://roastidio.us/webspace/3798</link>
<atom:link href="https://roastidio.us/webspace?url=https%3A%2F%2Fgithub.com%2F" rel="self" type="application/rss+xml"></atom:link>
<description>Roastidio.us in webspace https://github.com/</description>
<item>
<title>Celld: Self-hosted, distributed Durable Objects</title>
<link>https://github.com/denoland/celld</link>
<guid isPermaLink="false">BXnm95Dfo0gK7C-qEUjdvBuZXPmtpgSmoiJEpQ==</guid>
<pubDate>Thu, 06 Aug 2026 17:25:38 +0000</pubDate>
<description>Article URL: https://github.com/denoland/celld Comments URL: https://news.ycombinator.com/item?id=49185430 Points: 260 # Comments: 46</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/denoland/celld&quot;&gt;https://github.com/denoland/celld&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49185430&quot;&gt;https://news.ycombinator.com/item?id=49185430&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 260&lt;/p&gt;&lt;p&gt;# Comments: 46&lt;/p&gt;</content:encoded>
</item>
<item>
<title>jujutsu 0.44.0</title>
<link>https://github.com/jj-vcs/jj/releases/tag/v0.44.0</link>
<guid isPermaLink="false">zUM06B3nw5i9Vl1J-YRBTejJONRJAr3Hjb6bgg==</guid>
<pubDate>Thu, 06 Aug 2026 17:25:34 +0000</pubDate>
<description>Comments</description>
<content:encoded>&lt;p&gt;&lt;a href=&quot;https://lobste.rs/s/xx83dr/jujutsu_0_44_0&quot;&gt;Comments&lt;/a&gt;&lt;/p&gt;</content:encoded>
</item>
<item>
<title>schrodingers-toctou: The binary you run is not the program you wrote</title>
<link>https://github.com/xoreaxeaxeax/schrodingers-toctou</link>
<guid isPermaLink="false">1KeD8pvoJ2aTdJ0YEZGh7z7pOIqqs82baFMjCw==</guid>
<pubDate>Thu, 06 Aug 2026 17:25:34 +0000</pubDate>
<description>Comments</description>
<content:encoded>&lt;p&gt;&lt;a href=&quot;https://lobste.rs/s/bmnusu/schrodingers_toctou_binary_you_run_is_not&quot;&gt;Comments&lt;/a&gt;&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Show HN: The Channels SDK – Bring Any Agent to Any Channel (Slack, MS Teams)</title>
<link>https://github.com/CopilotKit/channels-sdk</link>
<guid isPermaLink="false">JuPuPg_jO0E9u7LBW68Mbc0iGjXgUnoVWLxJZg==</guid>
<pubDate>Thu, 06 Aug 2026 17:14:37 +0000</pubDate>
<description>Article URL: https://github.com/CopilotKit/channels-sdk Comments URL: https://news.ycombinator.com/item?id=49198583 Points: 37 # Comments: 5</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/CopilotKit/channels-sdk&quot;&gt;https://github.com/CopilotKit/channels-sdk&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49198583&quot;&gt;https://news.ycombinator.com/item?id=49198583&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 37&lt;/p&gt;&lt;p&gt;# Comments: 5&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Show HN: Wallfacer – A terminal session manager for Claude Code, and more</title>
<link>https://github.com/pradipta/wallfacer</link>
<guid isPermaLink="false">de6F66jryrheH7JNbqBM1iAvcDqDg-27Kt3-sg==</guid>
<pubDate>Thu, 06 Aug 2026 10:44:48 +0000</pubDate>
<description>Article URL: https://github.com/pradipta/wallfacer Comments URL: https://news.ycombinator.com/item?id=49192219 Points: 22 # Comments: 13</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/pradipta/wallfacer&quot;&gt;https://github.com/pradipta/wallfacer&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49192219&quot;&gt;https://news.ycombinator.com/item?id=49192219&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 22&lt;/p&gt;&lt;p&gt;# Comments: 13&lt;/p&gt;</content:encoded>
</item>
<item>
<title>DeepSeek V4 Flash on a Single AMD MI300X</title>
<link>https://github.com/ryanzhou/deepseek-v4-flash-mi300x</link>
<guid isPermaLink="false">UX-J-FkCr1h3UQMid8FATXnpk18-fi8PwqiI6g==</guid>
<pubDate>Tue, 04 Aug 2026 12:14:08 +0000</pubDate>
<description>Article URL: https://github.com/ryanzhou/deepseek-v4-flash-mi300x Comments URL: https://news.ycombinator.com/item?id=49166386 Points: 73 # Comments: 10</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/ryanzhou/deepseek-v4-flash-mi300x&quot;&gt;https://github.com/ryanzhou/deepseek-v4-flash-mi300x&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49166386&quot;&gt;https://news.ycombinator.com/item?id=49166386&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 73&lt;/p&gt;&lt;p&gt;# Comments: 10&lt;/p&gt;</content:encoded>
</item>
<item>
<title>FFmpeg 9.0</title>
<link>https://github.com/FFmpeg/FFmpeg/blob/n9.0/RELEASE_NOTES</link>
<guid isPermaLink="false">m-lV0-etz__Z3lXAU1GQ4A1zFbm_zR5rgW3uuw==</guid>
<pubDate>Tue, 04 Aug 2026 12:14:08 +0000</pubDate>
<description>Article URL: https://github.com/FFmpeg/FFmpeg/blob/n9.0/RELEASE_NOTES Comments URL: https://news.ycombinator.com/item?id=49166202 Points: 240 # Comments: 45</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/FFmpeg/FFmpeg/blob/n9.0/RELEASE_NOTES&quot;&gt;https://github.com/FFmpeg/FFmpeg/blob/n9.0/RELEASE_NOTES&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49166202&quot;&gt;https://news.ycombinator.com/item?id=49166202&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 240&lt;/p&gt;&lt;p&gt;# Comments: 45&lt;/p&gt;</content:encoded>
</item>
<item>
<title>AirLLM 70B inference with single 4GB GPU</title>
<link>https://github.com/lyogavin/airllm</link>
<guid isPermaLink="false">PQJfGFHtfKeVPU0Z_gQyDx-FUxBUXmyZ8OIBPA==</guid>
<pubDate>Tue, 04 Aug 2026 01:17:33 +0000</pubDate>
<description>Article URL: https://github.com/lyogavin/airllm Comments URL: https://news.ycombinator.com/item?id=49154228 Points: 185 # Comments: 75</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/lyogavin/airllm&quot;&gt;https://github.com/lyogavin/airllm&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49154228&quot;&gt;https://news.ycombinator.com/item?id=49154228&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 185&lt;/p&gt;&lt;p&gt;# Comments: 75&lt;/p&gt;</content:encoded>
</item>
<item>
<title>GitHub - janestreet/bonsai: A library for building dynamic webapps, using Js_of_ocaml · GitHub</title>
<link>https://github.com/janestreet/bonsai</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/c39235c75963a2a1253d1f1b8ef75be63fa4f7569d0bfb43105e2d375f390f0a/janestreet/bonsai"></enclosure>
<guid isPermaLink="false">hMh0z6kkLMn-N_GHZ-vXrCQW_jy6JfVZePAKug==</guid>
<pubDate>Mon, 03 Aug 2026 12:10:11 +0000</pubDate>
<description>A library for building dynamic webapps, using Js_of_ocaml - janestreet/bonsai</description>
<content:encoded>&lt;div&gt;&lt;h1&gt;Bonsai&lt;/h1&gt;&lt;/div&gt;&lt;div&gt;&lt;h1&gt;
  &lt;picture&gt;
    &lt;img src=&quot;https://github.com/janestreet/bonsai/raw/master/docs/assets/bonsai-logo.png&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;
  &lt;/picture&gt;
  &lt;br/&gt;
  Bonsai
&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;Bonsai is a UI library for building performant, reactive web applications in OCaml, partly
inspired by &lt;a href=&quot;https://elm-lang.org/&quot;&gt;Elm&lt;/a&gt;. It is used to build almost all web applications
inside Jane Street, everything from the corporate directory to tools that monitor and
interact with our trading systems. A simple Bonsai component with a little interactivity
looks like this:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;module&lt;/span&gt; &lt;span&gt;Dice&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;struct&lt;/span&gt;
  &lt;span&gt;let&lt;/span&gt; faces &lt;span&gt;=&lt;/span&gt;
    [ &lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;⚀&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;; &lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;⚁&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;; &lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;⚂&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;; &lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;⚃&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;; &lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;⚄&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;; &lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;⚅&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; ]
  ;;

  &lt;span&gt;let&lt;/span&gt; &lt;span&gt;component&lt;/span&gt; (&lt;span&gt;graph&lt;/span&gt; @ &lt;span&gt;local&lt;/span&gt;) &lt;span&gt;=&lt;/span&gt;
    &lt;span&gt;&lt;span&gt;(*&lt;/span&gt; Components are implemented as purely functional state machines. &lt;span&gt;*)&lt;/span&gt;&lt;/span&gt;
    &lt;span&gt;let&lt;/span&gt; face, set_face &lt;span&gt;=&lt;/span&gt; &lt;span&gt;Bonsai.&lt;/span&gt;state (&lt;span&gt;List.&lt;/span&gt;hd_exn faces) graph &lt;span&gt;in&lt;/span&gt;
    &lt;span&gt;&lt;span&gt;(*&lt;/span&gt; Components are incrementally rendered, only when the relevant parts of the state change. &lt;span&gt;*)&lt;/span&gt;&lt;/span&gt;
    &lt;span&gt;let&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;arr face &lt;span&gt;and&lt;/span&gt; &lt;span&gt;set_face&lt;/span&gt; &lt;span&gt;in&lt;/span&gt;
    &lt;span&gt;{%html|&lt;/span&gt;
&lt;span&gt;      &amp;lt;div&amp;gt;&lt;/span&gt;
&lt;span&gt;        You rolled a #{face}&lt;/span&gt;
        &amp;lt;&lt;span&gt;button&lt;/span&gt;
          &lt;span&gt;style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; on_click&lt;span&gt;=%&lt;/span&gt;{fun _ -&amp;gt;
            &lt;span&gt;let&lt;/span&gt; index &lt;span&gt;=&lt;/span&gt; &lt;span&gt;Random.&lt;/span&gt;&lt;span&gt;int&lt;/span&gt; (&lt;span&gt;List.&lt;/span&gt;length faces) &lt;span&gt;in&lt;/span&gt;
            set_face (&lt;span&gt;List.&lt;/span&gt;nth_exn faces index)}
        &lt;span&gt;&amp;gt;&lt;/span&gt;
          &lt;span&gt;Roll&lt;/span&gt; the dice
        &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;button&lt;span&gt;&amp;gt;&lt;/span&gt;
      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;div&lt;span&gt;&amp;gt;&lt;/span&gt;
    &lt;span&gt;|&lt;/span&gt;}
  ;;
&lt;span&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;
  &lt;div&gt;
    &lt;a href=&quot;https://github.com/janestreet/bonsai/blob/master/docs/assets/fe-site.png&quot;&gt;&lt;img src=&quot;https://github.com/janestreet/bonsai/raw/master/docs/assets/fe-site.png&quot; alt=&quot;A web app built with Bonsai&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
    &lt;a href=&quot;https://github.com/janestreet/bonsai/blob/master/docs/assets/jdash-site.png&quot;&gt;&lt;img src=&quot;https://github.com/janestreet/bonsai/raw/master/docs/assets/jdash-site.png&quot; alt=&quot;A web app built with Bonsai&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
  &lt;/div&gt;
  &lt;div&gt;Most internal Jane Street web applications are built with Bonsai&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Components are implemented as purely functional state machines, and are easily
composable. Incrementalization inside the framework means that values don’t get recomputed
until necessary. This applies to every value, not just the view.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Why Bonsai?&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Other web frameworks tend to lump together state, incrementality, and rendering into a
single abstraction, the UI component. By contrast, Bonsai allows you to compose state and
incrementality primitives a la carte. The same primitives that prevent re-rendering the
entire page during user interaction can also be used to incrementalize an expensive
business logic computation on a live-updating dataset. (If you&amp;#39;re used to React, imagine
if everything used something very similar to hooks, and state was managed outside of the
component hierarchy.)&lt;/p&gt;&lt;p&gt;Since state is not associated with explicit components, there is an extensive API for
managing the lifecycle and scoping of state as users interact with the page. For instance,
if you wanted to embed a collection of stateful UI components inside another UI component
(in a tabbed interface, say), Bonsai will handle the state management for you instead of
requiring that you manually hoist every internal component&amp;#39;s state to the app&amp;#39;s top-level
model. For more examples of how state is composed, see this &lt;a href=&quot;https://tyoverby.com/composition-comparison/&quot;&gt;composition comparison&lt;/a&gt;
written by the creator of Bonsai.&lt;/p&gt;&lt;p&gt;And because Bonsai is written in OCaml, it becomes possible to use the same language and
types on both the backend and frontend. It&amp;#39;s hard to overstate the impact this has on
legibility and keeping a large web app&amp;#39;s codebase manageable, especially when you make
pervasive use of OCaml&amp;#39;s type system to reduce errors. At Jane Street, many internal
systems previously only had terminal UIs, and the framework has made it easy to port the
existing types and business logic to the web.&lt;/p&gt;&lt;p&gt;Bonsai also comes with a powerful templating language, support for component-specific
stylesheets, and a system for whole-app automated tests.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Expressive tests that save you from manually clicking through your app&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;One of Bonsai’s most powerful features is its ability to let you easily write realistic
tests, in which you programatically manipulate UI elements and watch your DOM evolve.&lt;/p&gt;&lt;p&gt;In the following example, we’re testing the behavior of a user-selector. Whatever you type
in the text box gets appended to a little “hello” message:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;expect_test &lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;shows hello to a specified user&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span&gt;=&lt;/span&gt;
  &lt;span&gt;let&lt;/span&gt; handle &lt;span&gt;=&lt;/span&gt; &lt;span&gt;Handle.&lt;/span&gt;create (&lt;span&gt;Result_spec.&lt;/span&gt;vdom &lt;span&gt;Fn.&lt;/span&gt;id) hello_textbox &lt;span&gt;in&lt;/span&gt;
  &lt;span&gt;Handle.&lt;/span&gt;show handle;
  [&lt;span&gt;%&lt;/span&gt;expect
    {&lt;span&gt;|&lt;/span&gt;
    &lt;span&gt;&amp;lt;&lt;/span&gt;div&lt;span&gt;&amp;gt;&lt;/span&gt;
      &lt;span&gt;&amp;lt;&lt;/span&gt;input oninput&lt;span&gt;&amp;gt;&lt;/span&gt; &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;input&lt;span&gt;&amp;gt;&lt;/span&gt;
      &lt;span&gt;&amp;lt;&lt;/span&gt;span&lt;span&gt;&amp;gt;&lt;/span&gt; hello  &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;span&lt;span&gt;&amp;gt;&lt;/span&gt;
    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;div&lt;span&gt;&amp;gt;&lt;/span&gt; &lt;span&gt;|&lt;/span&gt;}];
  &lt;span&gt;Handle.&lt;/span&gt;input_text handle &lt;span&gt;~get_vdom:&lt;/span&gt;&lt;span&gt;Fn.&lt;/span&gt;id &lt;span&gt;~selector:&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;input&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span&gt;~text:&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;Bob&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;;
  &lt;span&gt;Handle.&lt;/span&gt;show_diff handle;
  [&lt;span&gt;%&lt;/span&gt;expect
    {&lt;span&gt;|&lt;/span&gt;
      &lt;span&gt;&amp;lt;&lt;/span&gt;div&lt;span&gt;&amp;gt;&lt;/span&gt;
        &lt;span&gt;&amp;lt;&lt;/span&gt;input oninput&lt;span&gt;&amp;gt;&lt;/span&gt; &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;input&lt;span&gt;&amp;gt;&lt;/span&gt;
&lt;span&gt;-&lt;/span&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;span&lt;span&gt;&amp;gt;&lt;/span&gt; hello  &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;span&lt;span&gt;&amp;gt;&lt;/span&gt;
&lt;span&gt;+&lt;/span&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;span&lt;span&gt;&amp;gt;&lt;/span&gt; hello &lt;span&gt;Bob&lt;/span&gt; &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;span&lt;span&gt;&amp;gt;&lt;/span&gt;
      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;div&lt;span&gt;&amp;gt;&lt;/span&gt; &lt;span&gt;|&lt;/span&gt;}];&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Notice that there are two &lt;a href=&quot;https://blog.janestreet.com/the-joy-of-expect-tests/&quot;&gt;expect
blocks&lt;/a&gt;. (This allows you to make
multiple assertions within a given scenario and to scope setup/helper code to just that
scenario.)&lt;/p&gt;&lt;p&gt;The first makes our UI visible, and the second---which contains a diff---shows some
behavior after you programatically input some text. Bonsai will even show you how html
attributes or class names change in response to user input. Tests can include mock server
calls, and can involve changes not just to the UI but to the state that drives it. With
tests like these you can write an entire component without opening your browser.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Documentation&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;The &lt;a href=&quot;https://github.com/janestreet/bonsai_web/blob/master/docs/quick-start.md&quot;&gt;Bonsai
Quick Start&lt;/a&gt; and &lt;a href=&quot;https://github.com/janestreet/bonsai_web/blob/master/docs/thinking-in-bonsai.md&quot;&gt;Thinking in Bonsai&lt;/a&gt;
provide a hands on introduction to Bonsai and are the best places to start learning
about it. There&amp;#39;s also:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;A series of &lt;a href=&quot;https://github.com/janestreet/bonsai_web/tree/master/docs/how_to&quot;&gt;how-to
articles&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A short series of posts about Bonsai&amp;#39;s
&lt;a href=&quot;https://github.com/janestreet/bonsai_web/blob/master/docs/blog/history.md&quot;&gt;history&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;An &lt;a href=&quot;https://signalsandthreads.com/building-a-ui-framework/&quot;&gt;episode&lt;/a&gt; of our Signals &amp;amp;
Threads podcast about &amp;quot;Building a UI Framework.&amp;quot; Another
&lt;a href=&quot;https://signalsandthreads.com/building-tools-for-traders/&quot;&gt;episode&lt;/a&gt; on &amp;quot;Building Tools
for Traders&amp;quot; discussed some of the benefits of using Bonsai.&lt;/li&gt;
&lt;li&gt;A &lt;a href=&quot;https://github.com/janestreet/bonsai_examples&quot;&gt;library&lt;/a&gt; filled with example websites
built with Bonsai.&lt;/li&gt;
&lt;li&gt;API documentation can be found in the
&lt;a href=&quot;https://github.com/janestreet/bonsai/blob/master/src/cont.mli&quot;&gt;cont.mli&lt;/a&gt;
file.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h2&gt;Bonsai is really a collection of libraries&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Er, one wrinkle: Bonsai itself -- this library -- is actually more generic than the above
makes it sound. It allows you to build general-purpose incremental, composable state
machines. &lt;a href=&quot;https://github.com/janestreet/bonsai_web&quot;&gt;Bonsai_web&lt;/a&gt; builds on top of that
core library, specializing it for interactive browser-based UIs, but we also have
&lt;a href=&quot;https://github.com/janestreet/bonsai_term&quot;&gt;Bonsai_term&lt;/a&gt; for building interactive
&lt;em&gt;terminal&lt;/em&gt;-based UIs. There was even a prototype for April Fools&amp;#39; Day of Bonsai_vr for
reactive virtual-reality UIs.&lt;/p&gt;&lt;p&gt;The full suite of Bonsai libraries:&lt;/p&gt;&lt;div&gt;&lt;h3&gt;General-purpose libraries&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/janestreet/bonsai&quot;&gt;Bonsai&lt;/a&gt; is a library for building incremental,
composable state machines.&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/janestreet/bonsai_test&quot;&gt;Testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;Browser-based UI Libraries&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/janestreet/bonsai_web&quot;&gt;Bonsai_web&lt;/a&gt; is a library for building
interactive browser-based UI using &lt;code&gt;bonsai&lt;/code&gt;.&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/janestreet/bonsai_examples&quot;&gt;Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/janestreet/bonsai_web_components&quot;&gt;Components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/janestreet/bonsai_web_test&quot;&gt;Testing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/janestreet/bonsai_bench&quot;&gt;Benchmarking&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;Terminal-based UI Libraries&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/janestreet/bonsai_term&quot;&gt;Bonsai_term&lt;/a&gt; is a library for building
interactive terminal-based UIs using &lt;code&gt;bonsai&lt;/code&gt;.&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/janestreet/bonsai_term_examples&quot;&gt;Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/janestreet/bonsai_term_components&quot;&gt;Components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/janestreet/bonsai_term_test&quot;&gt;Testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;Pre-processors&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;Bonsai web applications often use the following preprocessors:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/janestreet/ppx_html&quot;&gt;ppx_html&lt;/a&gt; is a preprocessor for writing HTML
that is similar to &lt;a href=&quot;https://en.wikipedia.org/wiki/JavaScript_XML&quot;&gt;JSX&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/janestreet/ppx_css&quot;&gt;ppx_css&lt;/a&gt; is a preprocessor for writing CSS.&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
</item>
<item>
<title>Rust project goals: Immobile types and guaranteed destructors</title>
<link>https://github.com/rust-lang/rust-project-goals/blob/main/src/2026/move-trait.md</link>
<guid isPermaLink="false">dbudUlxGesgB8qFVNd__lj8bhAAk5hygYyQw_Q==</guid>
<pubDate>Mon, 03 Aug 2026 12:10:11 +0000</pubDate>
<description>Article URL: https://github.com/rust-lang/rust-project-goals/blob/main/src/2026/move-trait.md Comments URL: https://news.ycombinator.com/item?id=49152023 Points: 106 # Comments: 27</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/rust-lang/rust-project-goals/blob/main/src/2026/move-trait.md&quot;&gt;https://github.com/rust-lang/rust-project-goals/blob/main/src/2026/move-trait.md&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49152023&quot;&gt;https://news.ycombinator.com/item?id=49152023&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 106&lt;/p&gt;&lt;p&gt;# Comments: 27&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Show HN: Kakehashi – Experimental userspace to run macOS binaries on Linux ARM</title>
<link>https://github.com/wie-project/kakehashi</link>
<guid isPermaLink="false">KMm51-gpDQGA5OGp4jh_T0Fy86lbniW4kROqaA==</guid>
<pubDate>Mon, 03 Aug 2026 03:39:43 +0000</pubDate>
<description>Article URL: https://github.com/wie-project/kakehashi Comments URL: https://news.ycombinator.com/item?id=49145937 Points: 186 # Comments: 40</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/wie-project/kakehashi&quot;&gt;https://github.com/wie-project/kakehashi&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49145937&quot;&gt;https://news.ycombinator.com/item?id=49145937&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 186&lt;/p&gt;&lt;p&gt;# Comments: 40&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Golang proposal: container/: generic collection types</title>
<link>https://github.com/golang/go/issues/80590</link>
<guid isPermaLink="false">nma9CqngkXb3iFhpUoA7m4O6WQaMY9HRjTWoVw==</guid>
<pubDate>Sun, 02 Aug 2026 18:20:37 +0000</pubDate>
<description>Article URL: https://github.com/golang/go/issues/80590 Comments URL: https://news.ycombinator.com/item?id=49127031 Points: 184 # Comments: 190</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/golang/go/issues/80590&quot;&gt;https://github.com/golang/go/issues/80590&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49127031&quot;&gt;https://news.ycombinator.com/item?id=49127031&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 184&lt;/p&gt;&lt;p&gt;# Comments: 190&lt;/p&gt;</content:encoded>
</item>
<item>
<title>qm – Multiplayer agent harness for work</title>
<link>https://github.com/yc-software/qm</link>
<guid isPermaLink="false">yb55n5eEzl-ZwNiH3-u3NeeyQiSoCG4rQqeRmg==</guid>
<pubDate>Sun, 02 Aug 2026 18:20:37 +0000</pubDate>
<description>Article URL: https://github.com/yc-software/qm Comments URL: https://news.ycombinator.com/item?id=49126604 Points: 660 # Comments: 157</description>
<content:encoded>&lt;p&gt;Article URL: &lt;a href=&quot;https://github.com/yc-software/qm&quot;&gt;https://github.com/yc-software/qm&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments URL: &lt;a href=&quot;https://news.ycombinator.com/item?id=49126604&quot;&gt;https://news.ycombinator.com/item?id=49126604&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Points: 660&lt;/p&gt;&lt;p&gt;# Comments: 157&lt;/p&gt;</content:encoded>
</item>
<item>
<title>GitHub - usnistgov/ACVP: Industry Working Group on Automated Cryptographic Algorithm Validation · GitHub</title>
<link>https://github.com/usnistgov/ACVP</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/0b192869d5ead23f28edbac81b7234fb8f6e8fca5719a79bb37acb43b44da6e2/usnistgov/ACVP"></enclosure>
<guid isPermaLink="false">PKV_wNZ27re88SNxQb4GZltgCMSMLLQypoxg5A==</guid>
<pubDate>Fri, 24 Jul 2026 18:42:46 +0000</pubDate>
<description>Industry Working Group on Automated Cryptographic Algorithm Validation - usnistgov/ACVP</description>
<content:encoded>&lt;div&gt;&lt;h1&gt;ACVP&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;The &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-spec.html&quot;&gt;Automated Cryptographic Validation Protocol&lt;/a&gt; (ACVP) is a protocol to support a new National Voluntary Laboratory Accreditation Program (NVLAP) testing scope at the &lt;a href=&quot;https://www.nist.gov&quot;&gt;National Institute of Standards and Technology (NIST)&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The new testing scope, 17ACVT, is available, and defined in &lt;a href=&quot;https://nvlpubs.nist.gov/nistpubs/hb/2021/NIST.HB.150-17-2021.pdf&quot;&gt;NIST Handbook 150-17&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;All current information about ACVP protocol may be found within this Github project at &lt;a href=&quot;https://github.com/usnistgov/ACVP&quot;&gt;https://github.com/usnistgov/ACVP&lt;/a&gt;. View the protocol documents at &lt;a href=&quot;https://pages.nist.gov/ACVP/&quot;&gt;https://pages.nist.gov/ACVP/&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;For issues regarding the actual ACVP Server implementation, as well as pre-release (demo) and release notes (prod), see the ACVP-Server repository: &lt;a href=&quot;https://github.com/usnistgov/ACVP-Server/&quot;&gt;https://github.com/usnistgov/ACVP-Server/&lt;/a&gt;.&lt;/p&gt;&lt;div&gt;&lt;h1&gt;Jump to&lt;/h1&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Background&lt;/li&gt;
&lt;li&gt;How to use Metanorma&lt;/li&gt;
&lt;li&gt;Objective&lt;/li&gt;
&lt;li&gt;Project Goals&lt;/li&gt;
&lt;li&gt;Status&lt;/li&gt;
&lt;li&gt;Supported Algorithms
&lt;ul&gt;
&lt;li&gt;Block Cipher Modes&lt;/li&gt;
&lt;li&gt;Secure Hash&lt;/li&gt;
&lt;li&gt;XOFs&lt;/li&gt;
&lt;li&gt;Message Authentication&lt;/li&gt;
&lt;li&gt;DRBG&lt;/li&gt;
&lt;li&gt;Digital Signature&lt;/li&gt;
&lt;li&gt;SP 800-56 Series Algorithms&lt;/li&gt;
&lt;li&gt;RFC 7748 curve25519 and curve448&lt;/li&gt;
&lt;li&gt;KDFs&lt;/li&gt;
&lt;li&gt;Safe Primes&lt;/li&gt;
&lt;li&gt;Conditioning Components&lt;/li&gt;
&lt;li&gt;Stateful Hash-Based Signatures&lt;/li&gt;
&lt;li&gt;Stateless Hash-Based Signatures&lt;/li&gt;
&lt;li&gt;Module-Lattice Algorithms&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Accessing the Server&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/usnistgov/ACVP/blob/master/contribution-guidelines&quot;&gt;Contribution Guidelines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Related Projects&lt;/li&gt;
&lt;li&gt;Licensing Terms&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h1&gt;Background&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;The rapid development of cryptographic technology over the last two decades and its adoption in many different technology domains has resulted in a sharp increase in the number and complexity of approved algorithms. The volume of cryptographic algorithm validations has outstripped the available human resources available to test, report, and validate results. The plethora of different algorithms has created a dire need for consistent requesting and reporting of test data and results. We also live in times of unprecedented levels of threats and exploits that require frequent product updates to fix defects and remove security vulnerabilities, which in turn requires much faster turnaround of validation updates than what the existing validation model allows. See the NIST &lt;a href=&quot;https://csrc.nist.gov/Projects/Automated-Cryptographic-Validation-Testing&quot;&gt;Automated Cryptographic Validation Testing project&lt;/a&gt; for broader context and information.&lt;/p&gt;&lt;p&gt;Requirements documents for the existing Cryptographic Algorithm Validation Program (CAVP) and the 17CAV scope can be found at &lt;a href=&quot;https://nvlpubs.nist.gov/nistpubs/hb/2020/NIST.HB.150-2020.pdf&quot;&gt;https://nvlpubs.nist.gov/nistpubs/hb/2020/NIST.HB.150-2020.pdf&lt;/a&gt;. The requirements documents for the 17ACVT scope can be found on the same page.&lt;/p&gt;&lt;p&gt;General information about CAVP can be found at &lt;a href=&quot;https://csrc.nist.gov/Projects/Cryptographic-Algorithm-Validation-Program&quot;&gt;https://csrc.nist.gov/Projects/Cryptographic-Algorithm-Validation-Program&lt;/a&gt; with the CAVP management manual found at &lt;a href=&quot;https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/CAVPMM.pdf&quot;&gt;https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/CAVPMM.pdf&lt;/a&gt; and the FAQ at &lt;a href=&quot;https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/CAVPFAQ.pdf&quot;&gt;https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/CAVPFAQ.pdf&lt;/a&gt;.&lt;/p&gt;&lt;div&gt;&lt;h1&gt;How to use Metanorma&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;Using Metanorma is not required to view the documents in the GitHub repository. When changes occur, documents will automatically be built and deployed to &lt;a href=&quot;https://pages.nist.gov/ACVP&quot;&gt;https://pages.nist.gov/ACVP&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Metanorma is a library for writing standards. It can compile &lt;code&gt;.adoc&lt;/code&gt; files into multiple common standards formats including the IETF&amp;#39;s RFC format.&lt;/p&gt;&lt;p&gt;Use the instructions here to set up Metanorma: &lt;a href=&quot;https://www.metanorma.org/install/&quot;&gt;https://www.metanorma.org/install/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;To compile an individual file, to make sure your gem versions are up to date run&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;gem install metanorma-cli&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;From there run&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;metanorma compile -t ietf -x html file.adoc&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can switch between &lt;code&gt;-x html&lt;/code&gt; and &lt;code&gt;-x txt&lt;/code&gt; for different RFC output formats.&lt;/p&gt;&lt;p&gt;If you make changes to a file that&amp;#39;s referenced by a top level spec, run metanorma
on the referenced file prior to running it on the top level file. E.g.,&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;metanorma compile -t ietf -x html symmetric/sections/04-testtypes.adoc
metanorma compile -t ietf -x html draft-celi-acvp-symmetric.adoc&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or you can use the &lt;code&gt;Makefile&lt;/code&gt; which is available.&lt;/p&gt;&lt;p&gt;To build all documents, html and txt&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;make all&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To build a specific file&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;make specific-file.html&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To remove all xml, txt, html, err produces files,&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;make clean&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;h1&gt;Objective&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;The objective of this project is to define a protocol allowing independent implementation by all vendors participating in the NIST cryptographic validation programs (&lt;a href=&quot;https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program#&quot;&gt;CAVP&lt;/a&gt; and &lt;a href=&quot;https://csrc.nist.gov/projects/cryptographic-module-validation-program#&quot;&gt;CMVP&lt;/a&gt;) for accelerated test data generation and requisition, reporting of test results, and validation of NIST-approved cryptographic algorithms (see FIPS140-2 &lt;a href=&quot;https://csrc.nist.gov/CSRC/media/Publications/fips/140/2/final/documents/fips1402annexa.pdf&quot;&gt;Annex A&lt;/a&gt;, &lt;a href=&quot;https://csrc.nist.gov/CSRC/media/Publications/fips/140/2/final/documents/fips1402annexc.pdf&quot;&gt;Annex C&lt;/a&gt; and &lt;a href=&quot;https://csrc.nist.gov/CSRC/media/Publications/fips/140/2/final/documents/fips1402annexd.pdf&quot;&gt;Annex D&lt;/a&gt;). For FIPS140-3, the NIST-approved cryptographic algorithms are defined in the &lt;a href=&quot;https://csrc.nist.gov/publications/detail/sp/800-140/final&quot;&gt;SP800-140 Document Series&lt;/a&gt;.&lt;/p&gt;&lt;div&gt;&lt;h1&gt;Project Goals&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;The development of an Automated Cryptographic Validation Protocol (ACVP) that enables the generation and
validation of standardized algorithm test evidence to facilitate the &lt;a href=&quot;https://csrc.nist.gov/Projects/Automated-Cryptographic-Validation-Testing&quot;&gt;modernization&lt;/a&gt; of &lt;a href=&quot;https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program#&quot;&gt;CAVP&lt;/a&gt; and &lt;a href=&quot;https://csrc.nist.gov/projects/cryptographic-module-validation-program&quot;&gt;CMVP&lt;/a&gt;.&lt;/p&gt;&lt;div&gt;&lt;h1&gt;Status&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;The demo server (demo.acvts.nist.gov) supports ACVP version 1.0. All endpoints defined in the &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-spec.html&quot;&gt;protocol specification&lt;/a&gt; are available. Some additional endpoinds defined in &lt;a href=&quot;https://github.com/usnistgov/ACVP-Server&quot;&gt;https://github.com/usnistgov/ACVP-Server&lt;/a&gt; are also available but not considered part of this protocol.&lt;/p&gt;&lt;p&gt;The prod server (acvts.nist.gov) also supports ACVP version 1.0, with the same endpoints defined.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Supported Algorithms&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;Block Cipher Modes&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-CBC&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-CFB1&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-CFB8&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-CFB128&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-CTR&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-ECB&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-GCM&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-GCM-SIV&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt; - DEMO only&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-KW&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-KWP&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-OFB&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-XPN&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-XTS 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt; - no longer supported by ACVTS&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-XTS 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-FF1&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-FF3-1&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt; - DEMO only&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-ross-acvp-ascon.txt&quot;&gt;Ascon-AEAD128&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-ross-acvp-ascon.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;TDES-CBC&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;TDES-CBCI&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;TDES-CFB1&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;TDES-CFB8&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;TDES-CFB64&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;TDES-CFBP1&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;TDES-CFBP8&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;TDES-CFBP64&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;TDES-CTR&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;TDES-ECB&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;TDES-KW&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;TDES-OFB&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;TDES-OFBI&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;Secure Hash&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-ross-acvp-ascon.txt&quot;&gt;Ascon-Hash256&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-ross-acvp-ascon.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha.txt&quot;&gt;SHA-1&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha.txt&quot;&gt;SHA-224&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha.txt&quot;&gt;SHA-256&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha.txt&quot;&gt;SHA-384&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha.txt&quot;&gt;SHA-512&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha.txt&quot;&gt;SHA-512/224&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha.txt&quot;&gt;SHA-512/256&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.txt&quot;&gt;SHA3-224 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.html&quot;&gt;HTML&lt;/a&gt; - no longer supported by ACVTS&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.txt&quot;&gt;SHA3-256 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.html&quot;&gt;HTML&lt;/a&gt; - no longer supported by ACVTS&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.txt&quot;&gt;SHA3-384 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.html&quot;&gt;HTML&lt;/a&gt; - no longer supported by ACVTS&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.txt&quot;&gt;SHA3-512 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.html&quot;&gt;HTML&lt;/a&gt; - no longer supported by ACVTS&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.txt&quot;&gt;SHA3-224 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.txt&quot;&gt;SHA3-256 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.txt&quot;&gt;SHA3-384 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.txt&quot;&gt;SHA3-512 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-sha3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;XOFs&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;Message Authentication&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.txt&quot;&gt;AES-CCM&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-symmetric.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;AES-GMAC&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;CMAC-AES&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;CMAC-TDES&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA-1 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA2-224 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA2-256 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA2-384 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA2-512 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA2-512/224 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA2-512/256 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA3-224 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA3-256 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA3-384 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA3-512 1.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA-1 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA2-224 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA2-256 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA2-384 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA2-512 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA2-512/224 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA2-512/256 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA3-224 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA3-256 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA3-384 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.txt&quot;&gt;HMAC-SHA3-512 2.0&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-xof.txt&quot;&gt;KMAC-128&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-xof.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-xof.txt&quot;&gt;KMAC-256&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-xof.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;DRBG&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;Digital Signature&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.txt&quot;&gt;RSA mode: keyGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.txt&quot;&gt;RSA mode: sigGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.txt&quot;&gt;RSA mode: sigVer&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.txt&quot;&gt;RSA mode: signaturePrimitive 1.0 (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.txt&quot;&gt;RSA mode: signaturePrimitive 2.0 (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.txt&quot;&gt;RSA mode: decryptionPrimitive 1.0 (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.txt&quot;&gt;RSA mode: decryptionPrimitive Sp800-56Br2 (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.txt&quot;&gt;RSA mode: legacySigVer&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-rsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-ecdsa.txt&quot;&gt;ECDSA mode: sigGen Component&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-ecdsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-ecdsa.txt&quot;&gt;ECDSA mode: keyGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-ecdsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-ecdsa.txt&quot;&gt;ECDSA mode: keyVer&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-ecdsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-ecdsa.txt&quot;&gt;ECDSA mode: sigGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-ecdsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-ecdsa.txt&quot;&gt;Deterministic ECDSA mode: sigGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-ecdsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-ecdsa.txt&quot;&gt;ECDSA mode: sigVer&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-ecdsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-dsa.txt&quot;&gt;DSA mode: keyGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-dsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-dsa.txt&quot;&gt;DSA mode: sigVer&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-dsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-dsa.txt&quot;&gt;DSA mode: sigGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-dsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-dsa.txt&quot;&gt;DSA mode: pqgGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-dsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-dsa.txt&quot;&gt;DSA mode: pqgVer&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-dsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-eddsa.txt&quot;&gt;EDDSA mode: keyGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-eddsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-eddsa.txt&quot;&gt;EDDSA mode: keyVer&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-eddsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-eddsa.txt&quot;&gt;EDDSA mode: sigGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-eddsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-eddsa.txt&quot;&gt;EDDSA mode: sigVer&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-eddsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;SP 800-56 Series Algorithms&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;h4&gt;Full KAS and KTS IFC Testing&lt;/h4&gt;&lt;/div&gt;&lt;p&gt;Tests against shared secret computation (SSC), key derivation functions (KDF) or key derivation algorithms (KDA), and optionally key confirmation (KC). Test vectors issued under this set of tests (with the exception of 1.0 component based tests) are considered &amp;quot;full KAS&amp;quot; testing.&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.txt&quot;&gt;KAS ECC ephemeralUnified&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.txt&quot;&gt;KAS ECC fullMqv&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.txt&quot;&gt;KAS ECC fullUnified&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.txt&quot;&gt;KAS ECC onePassDh&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.txt&quot;&gt;KAS ECC onePassMqv&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.txt&quot;&gt;KAS ECC OnePassUnified&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.txt&quot;&gt;KAS ECC staticUnified&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.txt&quot;&gt;KAS FFC dhHybrid1&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.txt&quot;&gt;KAS FFC mqv2&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.txt&quot;&gt;KAS FFC dhEphem&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.txt&quot;&gt;KAS FFC dhHybridOneFlow&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.txt&quot;&gt;KAS FFC mqv1&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.txt&quot;&gt;KAS FFC dhOneFlow&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.txt&quot;&gt;KAS FFC dhStatic&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.txt&quot;&gt;KAS ECC ephemeralUnified Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.txt&quot;&gt;KAS ECC fullMqv Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.txt&quot;&gt;KAS ECC fullUnified Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.txt&quot;&gt;KAS ECC onePassDh Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.txt&quot;&gt;KAS ECC onePassMqv Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.txt&quot;&gt;KAS ECC OnePassUnified Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.txt&quot;&gt;KAS ECC staticUnified Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.txt&quot;&gt;KAS ECC CDH-Component Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ecc-sp800-56ar3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ffc-sp800-56ar3.txt&quot;&gt;KAS FFC dhHybrid1 Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ffc-sp800-56ar3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ffc-sp800-56ar3.txt&quot;&gt;KAS FFC mqv2 Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ffc-sp800-56ar3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ffc-sp800-56ar3.txt&quot;&gt;KAS FFC dhEphem Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ffc-sp800-56ar3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ffc-sp800-56ar3.txt&quot;&gt;KAS FFC dhHybridOneFlow Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ffc-sp800-56ar3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ffc-sp800-56ar3.txt&quot;&gt;KAS FFC mqv1 Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ffc-sp800-56ar3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ffc-sp800-56ar3.txt&quot;&gt;KAS FFC dhOneFlow Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ffc-sp800-56ar3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ffc-sp800-56ar3.txt&quot;&gt;KAS FFC dhStatic Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ffc-sp800-56ar3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.txt&quot;&gt;KAS IFC KAS1-basic&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.txt&quot;&gt;KAS IFC KAS1-Party_V-confirmation&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.txt&quot;&gt;KAS IFC KAS2-basic&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.txt&quot;&gt;KAS IFC KAS2-bilateral-confirmation&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.txt&quot;&gt;KAS IFC KAS2-Party_U-confirmation&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.txt&quot;&gt;KAS IFC KAS2-Party_V-confirmation&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.txt&quot;&gt;KTS IFC KTS-OAEP-basic&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.txt&quot;&gt;KTS IFC KTS-OAEP-Party_V-confirmation&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ifc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h4&gt;KAS SSC Testing&lt;/h4&gt;&lt;/div&gt;&lt;p&gt;Standalone KAS SSC testing from SP800-56A/B. Can be used in conjunction with KDF/KDA testing and optionally key confirmation testing (as opposed to &amp;quot;full KAS&amp;quot; testing) to be considered a valid KAS implementation.&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.txt&quot;&gt;KAS ECC ephemeralUnified&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.txt&quot;&gt;KAS ECC fullMqv&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.txt&quot;&gt;KAS ECC fullUnified&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.txt&quot;&gt;KAS ECC onePassDh&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.txt&quot;&gt;KAS ECC onePassMqv&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.txt&quot;&gt;KAS ECC OnePassUnified&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.txt&quot;&gt;KAS ECC staticUnified&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.txt&quot;&gt;KAS ECC CDH-Component&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.txt&quot;&gt;KAS FFC dhHybrid1&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.txt&quot;&gt;KAS FFC mqv2&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.txt&quot;&gt;KAS FFC dhEphem&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.txt&quot;&gt;KAS FFC dhHybridOneFlow&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.txt&quot;&gt;KAS FFC mqv1&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.txt&quot;&gt;KAS FFC dhOneFlow&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.txt&quot;&gt;KAS FFC dhStatic&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ecc.txt&quot;&gt;KAS ECC SSC ephemeralUnified Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ecc.txt&quot;&gt;KAS ECC SSC fullMqv Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ecc.txt&quot;&gt;KAS ECC SSC fullUnified Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ecc.txt&quot;&gt;KAS ECC SSC onePassDh Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ecc.txt&quot;&gt;KAS ECC SSC onePassMqv Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ecc.txt&quot;&gt;KAS ECC SSC OnePassUnified Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ecc.txt&quot;&gt;KAS ECC SSC staticUnified Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ecc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ffc.txt&quot;&gt;KAS FFC SSC dhHybrid1 Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ffc.txt&quot;&gt;KAS FFC SSC mqv2 Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ffc.txt&quot;&gt;KAS FFC SSC dhEphem Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ffc.txt&quot;&gt;KAS FFC SSC dhHybridOneFlow Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ffc.txt&quot;&gt;KAS FFC SSC mqv1 Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ffc.txt&quot;&gt;KAS FFC SSC dhOneFlow Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ffc.txt&quot;&gt;KAS FFC SSC dhStatic Sp800-56Ar3&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ffc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ifc.txt&quot;&gt;KAS IFC SSC KAS1 Sp800-56Br2&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ifc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ifc.txt&quot;&gt;KAS IFC SSC KAS2 Sp800-56Br2&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ssc-ifc.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h4&gt;KDA Testing SP800-56Cr1/r2&lt;/h4&gt;&lt;/div&gt;&lt;p&gt;Standalone KDA testing from SP800-56Cr1 or SP800-56Cr2. Can be used in conjunction with SSC testing and optionally key confirmation testing (as opposed to &amp;quot;full KAS&amp;quot; testing) to be considered a valid KAS implementation.&lt;/p&gt;&lt;div&gt;&lt;h4&gt;KAS KC Testing SP800-56&lt;/h4&gt;&lt;/div&gt;&lt;p&gt;Standalone KAS Key Confirmation testing from SP800-56Ar3 and/or SP800-56Br2.  Can be as a KC primitive validation as a part of a KAS validation.&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-kc-sp800-56.txt&quot;&gt;KAS KC Sp800-56 (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-kc-sp800-56.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;RFC 7748 curve25519 and curve448&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-vandersmissen-acvp-xecdh.txt&quot;&gt;XECDH keyGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-vandersmissen-acvp-xecdh.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-vandersmissen-acvp-xecdh.txt&quot;&gt;XECDH keyVer&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-vandersmissen-acvp-xecdh.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-vandersmissen-acvp-xecdh.txt&quot;&gt;XECDH SSC&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-vandersmissen-acvp-xecdh.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;KDFs&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kbkdf.txt&quot;&gt;Counter KDF&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kbkdf.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kbkdf.txt&quot;&gt;Feedback KDF&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kbkdf.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kbkdf.txt&quot;&gt;Double Pipeline Iterator KDF&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kbkdf.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kbkdf.txt&quot;&gt;KMAC KDF&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kbkdf.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-ikev1.txt&quot;&gt;IKEv1 (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-ikev1.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-ikev2.txt&quot;&gt;IKEv2 (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-ikev2.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-snmp.txt&quot;&gt;SNMP (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-snmp.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-srtp.txt&quot;&gt;SRTP (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-srtp.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-ssh.txt&quot;&gt;SSH (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-ssh.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-tls.txt&quot;&gt;TLS v1.0/v1.1 (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-tls.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-tls.txt&quot;&gt;TLS v1.2 (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-tls.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kdf-tls-v1.3.txt&quot;&gt;TLS v1.3 (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-kdf-tls-v1.3.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-tpm.txt&quot;&gt;TPM (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-tpm.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-ansi-x963.txt&quot;&gt;ANSX9.63 (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-ansi-x963.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-ansi-x942.txt&quot;&gt;ANSX9.42 (Component)&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-kdf-ansi-x942.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-pbkdf.txt&quot;&gt;PBKDF&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-pbkdf.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-ross-acvp-kdf-spdm.txt&quot;&gt;SPDM&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-ross-acvp-kdf-spdm.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;Safe Primes&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-safe-primes.txt&quot;&gt;SafePrimes KeyGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-safe-primes.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-safe-primes.txt&quot;&gt;SafePrimes KeyVer&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-hammett-acvp-safe-primes.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;Conditioning Components&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-conditioning-components.txt&quot;&gt;ConditioningComponent AES-CBC-MAC&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-conditioning-components.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-conditioning-components.txt&quot;&gt;ConditioningComponent BlockCipher_DF&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-conditioning-components.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-conditioning-components.txt&quot;&gt;ConditioningComponent Hash_DF&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-conditioning-components.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;Stateful Hash-Based Signatures&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-lms.txt&quot;&gt;LMS keyGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-lms.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-lms.txt&quot;&gt;LMS sigGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-lms.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-lms.txt&quot;&gt;LMS sigVer&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-celi-acvp-lms.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;Stateless Hash-Based Signatures&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-livelsberger-acvp-slh-dsa.txt&quot;&gt;SLH-DSA keyGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-livelsberger-acvp-slh-dsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-livelsberger-acvp-slh-dsa.txt&quot;&gt;SLH-DSA sigGen&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-livelsberger-acvp-slh-dsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pages.nist.gov/ACVP/draft-livelsberger-acvp-slh-dsa.txt&quot;&gt;SLH-DSA sigVer&lt;/a&gt; - &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-livelsberger-acvp-slh-dsa.html&quot;&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;Module-Lattice Algorithms&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;See &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-spec.html#name-algorithms&quot;&gt;the algorithm endpoint&lt;/a&gt; to learn which algorithms are available on a given ACVP server.&lt;/p&gt;&lt;div&gt;&lt;h1&gt;Accessing the Demo Server&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;To access the demo server one needs a TLS credential &lt;strong&gt;and&lt;/strong&gt; a one-time password (OTP). The &lt;a href=&quot;https://pages.nist.gov/ACVP/draft-fussell-acvp-spec.html&quot;&gt;protocol specification&lt;/a&gt; and other development information are available in this repository. You may want to use the companion &lt;a href=&quot;https://github.com/cisco/libacvp&quot;&gt;ACVP client&lt;/a&gt; to jump-start your work.&lt;/p&gt;&lt;p&gt;To set expectations, since this is a demo system, it will be in a state of flux and any all data on the system is considered temporary and may be reset to accommodate development of the Automated Cryptographic Validation Protocol (ACVP) service. We will try to keep the demo service relatively stable, but we plan to update it as we continue to add new algorithms and capabilities.&lt;/p&gt;&lt;p&gt;To access the prod server, first you must demonstrate compentency on the demo server. Then follow the instructions available at &lt;a href=&quot;https://csrc.nist.gov/Projects/cryptographic-algorithm-validation-program/how-to-access-acvts&quot;&gt;https://csrc.nist.gov/Projects/cryptographic-algorithm-validation-program/how-to-access-acvts&lt;/a&gt;.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Obtaining TLS credentials&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;To access the demo environment you will need to send your CSR to NIST. Please use a 2048-bit RSA key pair and sign using at least a SHA-256 hash. Please send the request to &lt;a href=&quot;mailto:acvts-demo@nist.gov&quot;&gt;acvts-demo@nist.gov&lt;/a&gt; with &amp;#39;CSR REQUEST FOR ACCESS TO DEMO&amp;#39; in the subject line. You will receive instructions for how to upload your CSR.&lt;/p&gt;&lt;p&gt;You are expected to protect the key pair from unauthorized use and to notify NIST in the event the keypair becomes compromised. Also, since we do not have a formal login page the following notice applies when accessing the ACVP system:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&amp;quot;***WARNING***WARNING***WARNING
You are accessing a U.S. Government information system, which includes: 1) this computer, 2) this computer network, 3) all computers connected to this network, and 4) all devices and storage media attached to this network or to a computer on this network. You understand and consent to the following: you may access this information system for authorized use only; you have no reasonable expectation of privacy regarding any communication of data transiting or stored on this information system; at any time and for any lawful Government purpose, the Government may monitor, intercept, and search and seize any communication or data transiting or stored on this information system; and any communications or data transiting or stored on this information system may be disclosed or used for any lawful Government purpose.
***WARNING***WARNING***WARNING&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;Configuring and using One-Time-Passwords (OTP)&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;TOTP has been configured on all servers. See details &lt;a href=&quot;https://github.com/usnistgov/ACVP/wiki#second-factor-authentication-and-authorization-schema-for-accessing-and-working-with-the-nist-automated-cryptographic-validation-services&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Renewing TLS credentials&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Credentials are valid for a period of two years and will then expire. To renew your credentials, please send an email to &lt;a href=&quot;mailto:acvts-demo@nist.gov&quot;&gt;acvts-demo@nist.gov&lt;/a&gt; with the subject &amp;#39;ACVTS DEMO CREDENTIAL RENEWAL REQUEST&amp;#39; in the subject line. You will receive further instructions via email regarding the renewal process.&lt;/p&gt;&lt;div&gt;&lt;h1&gt;Contribution Guidelines&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;If you want to contribute, please follow the simple rules below and send us pull requests.&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;See Metanorma for installation instructions&lt;/li&gt;
&lt;li&gt;Documents are templated out and organized into folders, find and edit the appropriate document and build the HTML or TXT file to ensure the changes are correct&lt;/li&gt;
&lt;li&gt;Create a Pull Request with the updated ADOC files. GitHub Actions will verify the files can compile.&lt;/li&gt;
&lt;li&gt;Once approved by a NIST member, GitHub Actions will rebuild the &lt;code&gt;nist-pages&lt;/code&gt; branch to be reflected on &lt;a href=&quot;https://pages.nist.gov/ACVP&quot;&gt;https://pages.nist.gov/ACVP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;If you would like to talk to our developers, you may want to send email to our mailing list cavp (at) nist.gov. You may also report bugs or request new tests.&lt;/p&gt;&lt;div&gt;&lt;h1&gt;Related Projects&lt;/h1&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/usnistgov/ACVP-Server/&quot;&gt;ACVP Server&lt;/a&gt; (Release/Issue tracking for NIST&amp;#39;s implementation of the ACVP protocol)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://csrc.nist.gov/Projects/Automated-Cryptographic-Validation-Testing&quot;&gt;Automated Cryptographic Validation Testing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/cisco/libacvp&quot;&gt;Cisco libacvp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/google/wycheproof&quot;&gt;Google Project Wycheproof&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/mitls/hacl-star&quot;&gt;HACL*, a formally verified cryptographic library written in F*&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/usnistgov/AMVP&quot;&gt;Automated Module Validation Protocol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/smuellerDD/acvpproxy&quot;&gt;ACVP Proxy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/smuellerDD/acvpparser&quot;&gt;ACVP Parser&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h1&gt;Licensing Terms&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;This data was developed by employees of the National Institute of Standards and Technology (NIST), an agency of the Federal Government, in collaboration with third-party contributors. Pursuant to title 17 United States Code Section 105, works of NIST employees are not subject to copyright protection in the United States and are considered to be in the public domain. The data is provided by NIST as a public service and is expressly provided &amp;quot;AS IS.&amp;quot; NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT AND DATA ACCURACY. NIST does not warrant or make any representations regarding the use of the data or the results thereof, including but not limited to the correctness, accuracy, reliability or usefulness of the data. NIST SHALL NOT BE LIABLE AND YOU HEREBY RELEASE NIST FROM LIABILITY FOR ANY INDIRECT, CONSEQUENTIAL, SPECIAL, OR INCIDENTAL DAMAGES (INCLUDING DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, AND THE LIKE), WHETHER ARISING IN TORT, CONTRACT, OR OTHERWISE, ARISING FROM OR RELATING TO THE DATA (OR THE USE OF OR INABILITY TO USE THIS DATA), EVEN IF NIST HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.&lt;/p&gt;&lt;p&gt;To the extent that NIST may hold copyright in countries other than the United States, you are hereby granted the non-exclusive irrevocable and unconditional right to print, publish, prepare derivative works and distribute the NIST data, in any medium, or authorize others to do so on your behalf, on a royalty-free basis throughout the world.&lt;/p&gt;&lt;p&gt;You may improve, modify, and create derivative works of the data or any portion of the data, and you may copy and distribute such modifications or works. Modified works should carry a notice stating that you changed the data and should note the date and nature of any such change. Please explicitly acknowledge the National Institute of Standards and Technology as the source of the data: Data citation recommendations are provided below. Permission to use this data is contingent upon your acceptance of the terms of this agreement and upon your providing appropriate acknowledgments of NIST&amp;#39;s creation of the data.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Citation Format&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Author/editor (Publication Year), Title, Publisher, Persistent Identifier (PID) or URL (Access date).&lt;/p&gt;</content:encoded>
</item>
<item>
<title>GitHub - rustls/rustls: A modern TLS library in Rust · GitHub</title>
<link>https://github.com/rustls/rustls</link>
<enclosure type="image/jpeg" length="0" url="https://repository-images.githubusercontent.com/57920736/44d73ec8-a93e-4a7c-9091-8788601698a4"></enclosure>
<guid isPermaLink="false">3RFLUpjWO0WR39dLIL3ifgvq9DugU8r4beHmwQ==</guid>
<pubDate>Fri, 24 Jul 2026 18:42:45 +0000</pubDate>
<description>A modern TLS library in Rust. Contribute to rustls/rustls development by creating an account on GitHub.</description>
<content:encoded>&lt;p&gt;
  &lt;a href=&quot;https://raw.githubusercontent.com/rustls/rustls/main/admin/logo/rustls.svg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/rustls/rustls/main/admin/logo/rustls.svg&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
Rustls is a modern TLS library written in Rust.
&lt;/p&gt;&lt;div&gt;&lt;h1&gt;Status&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;Rustls is used in production at many organizations and projects. We aim to maintain
reasonable API surface stability but the API may evolve as we make changes to accommodate
new features or performance improvements.&lt;/p&gt;&lt;p&gt;We have a &lt;a href=&quot;https://github.com/rustls/rustls/blob/main/ROADMAP.md&quot;&gt;roadmap&lt;/a&gt; for our future plans. We also have &lt;a href=&quot;https://github.com/rustls/rustls/blob/main/BENCHMARKING.md&quot;&gt;benchmarks&lt;/a&gt; to
prevent performance regressions and to let you evaluate rustls on your target hardware.&lt;/p&gt;&lt;p&gt;If you&amp;#39;d like to help out, please see &lt;a href=&quot;https://github.com/rustls/rustls/blob/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/rustls/rustls/actions/workflows/build.yml?query=branch%3Amain&quot;&gt;&lt;img src=&quot;https://github.com/rustls/rustls/actions/workflows/build.yml/badge.svg?branch=main&quot; alt=&quot;Build Status&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://codecov.io/gh/rustls/rustls/&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/e46c6f567e2b6b5efbbc303e51c62ab2642e57cdc19524df59252d910d7fc128/68747470733a2f2f636f6465636f762e696f2f67682f727573746c732f727573746c732f6272616e63682f6d61696e2f67726170682f62616467652e737667&quot; alt=&quot;Coverage Status (codecov.io)&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://docs.rs/rustls/&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/5b8b07e5115b4c83ff562bc58a10e4b5e811fe6e195448896c08ba8553270e4d/68747470733a2f2f646f63732e72732f727573746c732f62616467652e737667&quot; alt=&quot;Documentation&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://discord.gg/MCSB76RU96&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/7089ed7969701a9ac1c60818bf764116ea1fbfe4a226609a2ab8aea69f93453a/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f3937363338303030383239393931373336353f6c6f676f3d646973636f7264&quot; alt=&quot;Chat&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.bestpractices.dev/projects/9034&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/33cbb9cc79629124913bd3484f5b5b08bca3f37a2e211660be985e0d283ab355/68747470733a2f2f7777772e626573747072616374696365732e6465762f70726f6a656374732f393033342f6261646765&quot; alt=&quot;OpenSSF Best Practices&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The maintainers pronounce &amp;quot;rustls&amp;quot; as rustles (rather than rust-TLS), but we don&amp;#39;t feel strongly
about it.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Changelog&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;The detailed list of changes in each release can be found at
&lt;a href=&quot;https://github.com/rustls/rustls/releases&quot;&gt;https://github.com/rustls/rustls/releases&lt;/a&gt;.&lt;/p&gt;&lt;div&gt;&lt;h1&gt;Documentation&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;https://docs.rs/rustls/&quot;&gt;https://docs.rs/rustls/&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;h1&gt;Approach&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;Rustls is a TLS library that aims to provide a good level of cryptographic security,
requires no configuration to achieve that security, and provides no unsafe features or
obsolete cryptography by default.&lt;/p&gt;&lt;p&gt;Rustls implements TLS1.2 and TLS1.3 for both clients and servers. See &lt;a href=&quot;https://docs.rs/rustls/latest/rustls/manual/_04_features/index.html&quot;&gt;the full
list of protocol features&lt;/a&gt;.&lt;/p&gt;&lt;div&gt;&lt;h3&gt;Platform support&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;While Rustls itself is platform independent, it requires the use of cryptography primitives
for implementing the cryptography algorithms used in TLS. In Rustls, a
&lt;a href=&quot;https://docs.rs/rustls/latest/rustls/crypto/struct.CryptoProvider.html&quot;&gt;&lt;code&gt;crypto::CryptoProvider&lt;/code&gt;&lt;/a&gt; represents a collection of crypto primitive implementations.&lt;/p&gt;&lt;p&gt;By providing a custom instance of the &lt;a href=&quot;https://docs.rs/rustls/latest/rustls/crypto/struct.CryptoProvider.html&quot;&gt;&lt;code&gt;crypto::CryptoProvider&lt;/code&gt;&lt;/a&gt; struct, you
can replace all cryptography dependencies of rustls.  This is a route to being portable
to a wider set of architectures and environments, or compliance requirements.  See the
&lt;a href=&quot;https://docs.rs/rustls/latest/rustls/crypto/struct.CryptoProvider.html&quot;&gt;&lt;code&gt;crypto::CryptoProvider&lt;/code&gt;&lt;/a&gt; documentation for more details.&lt;/p&gt;&lt;div&gt;&lt;h3&gt;Cryptography providers&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;Since Rustls 0.22 it has been possible to choose the provider of the cryptographic primitives
that Rustls uses. This may be appealing if you have specific platform, compliance or feature
requirements.&lt;/p&gt;&lt;p&gt;From 0.24, users must explicitly provide a crypto provider when constructing &lt;code&gt;ClientConfig&lt;/code&gt; or
&lt;code&gt;ServerConfig&lt;/code&gt; instances. See the &lt;a href=&quot;https://docs.rs/rustls/latest/rustls/crypto/struct.CryptoProvider.html&quot;&gt;&lt;code&gt;crypto::CryptoProvider&lt;/code&gt;&lt;/a&gt; documentation for more details.&lt;/p&gt;&lt;div&gt;&lt;h4&gt;First-party providers&lt;/h4&gt;&lt;/div&gt;&lt;p&gt;The Rustls project currently maintains two cryptography providers:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://crates.io/crates/rustls-aws-lc-rs&quot;&gt;&lt;code&gt;rustls-aws-lc-rs&lt;/code&gt;&lt;/a&gt; - a provider that uses the &lt;a href=&quot;https://crates.io/crates/aws-lc-rs&quot;&gt;&lt;code&gt;aws-lc-rs&lt;/code&gt;&lt;/a&gt; crate for cryptography.
While this provider can be harder to build on &lt;a href=&quot;https://aws.github.io/aws-lc-rs/faq.html#can-i-run-aws-lc-rs-on-x-platform-or-architecture&quot;&gt;some platforms&lt;/a&gt;, it provides excellent
performance and a complete feature set (including post-quantum algorithms).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://crates.io/crates/rustls-ring&quot;&gt;&lt;code&gt;rustls-ring&lt;/code&gt;&lt;/a&gt; - a provider that uses the &lt;a href=&quot;https://crates.io/crates/ring&quot;&gt;&lt;code&gt;ring&lt;/code&gt;&lt;/a&gt; crate for cryptography. This
provider is easier to build on a variety of platforms, but has a more limited feature set
(for example, it does not support post-quantum algorithms).&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The Rustls team recommends using the &lt;a href=&quot;https://crates.io/crates/rustls-aws-lc-rs&quot;&gt;&lt;code&gt;rustls-aws-lc-rs&lt;/code&gt;&lt;/a&gt; crate for its complete feature set
and performance. See &lt;a href=&quot;https://aws.github.io/aws-lc-rs/faq.html#can-i-run-aws-lc-rs-on-x-platform-or-architecture&quot;&gt;the aws-lc-rs FAQ&lt;/a&gt; for more details of the
platform/architecture support constraints in aws-lc-rs.&lt;/p&gt;&lt;p&gt;See the documentation for &lt;a href=&quot;https://docs.rs/rustls/latest/rustls/crypto/struct.CryptoProvider.html&quot;&gt;&lt;code&gt;crypto::CryptoProvider&lt;/code&gt;&lt;/a&gt; for details on how providers are
selected.&lt;/p&gt;&lt;p&gt;(For rustls versions prior to 0.24, both of these providers were shipped as part of the rustls
crate, and Cargo features were used to select the preferred provider. The &lt;code&gt;aws-lc-rs&lt;/code&gt; feature
was enabled by default.)&lt;/p&gt;&lt;div&gt;&lt;h4&gt;Third-party providers&lt;/h4&gt;&lt;/div&gt;&lt;p&gt;The community has also started developing third-party providers for Rustls:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/janrueth/boring-rustls-provider&quot;&gt;&lt;code&gt;boring-rustls-provider&lt;/code&gt;&lt;/a&gt; - a work-in-progress provider that uses &lt;a href=&quot;https://github.com/google/boringssl&quot;&gt;&lt;code&gt;boringssl&lt;/code&gt;&lt;/a&gt; for
cryptography.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/jsulmont/rustls-ccm&quot;&gt;&lt;code&gt;rustls-ccm&lt;/code&gt;&lt;/a&gt; - adds AES-CCM cipher suites (TLS 1.2 and 1.3) using &lt;a href=&quot;https://github.com/RustCrypto&quot;&gt;&lt;code&gt;RustCrypto&lt;/code&gt;&lt;/a&gt;, for IoT/constrained-device protocols (IEEE 2030.5, Matter, RFC 7925).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://crates.io/crates/rustls-graviola&quot;&gt;&lt;code&gt;rustls-graviola&lt;/code&gt;&lt;/a&gt; - a provider that uses &lt;a href=&quot;https://github.com/ctz/graviola&quot;&gt;&lt;code&gt;graviola&lt;/code&gt;&lt;/a&gt; for cryptography.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/fortanix/rustls-mbedtls-provider&quot;&gt;&lt;code&gt;rustls-mbedtls-provider&lt;/code&gt;&lt;/a&gt; - a provider that uses &lt;a href=&quot;https://github.com/Mbed-TLS/mbedtls&quot;&gt;&lt;code&gt;mbedtls&lt;/code&gt;&lt;/a&gt; for cryptography.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/tofay/rustls-openssl&quot;&gt;&lt;code&gt;rustls-openssl&lt;/code&gt;&lt;/a&gt; - a provider that uses &lt;a href=&quot;https://openssl-library.org/&quot;&gt;OpenSSL&lt;/a&gt; for cryptography.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/RustCrypto/rustls-rustcrypto&quot;&gt;&lt;code&gt;rustls-rustcrypto&lt;/code&gt;&lt;/a&gt; - an experimental provider that uses the crypto primitives
from &lt;a href=&quot;https://github.com/RustCrypto&quot;&gt;&lt;code&gt;RustCrypto&lt;/code&gt;&lt;/a&gt; for cryptography.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/microsoft/rustls-symcrypt&quot;&gt;&lt;code&gt;rustls-symcrypt&lt;/code&gt;&lt;/a&gt; - a provider that uses Microsoft&amp;#39;s &lt;a href=&quot;https://github.com/microsoft/SymCrypt&quot;&gt;SymCrypt&lt;/a&gt; library.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/wolfSSL/rustls-wolfcrypt-provider&quot;&gt;&lt;code&gt;rustls-wolfcrypt-provider&lt;/code&gt;&lt;/a&gt; - a work-in-progress provider that uses &lt;a href=&quot;https://www.wolfssl.com/products/wolfcrypt&quot;&gt;&lt;code&gt;wolfCrypt&lt;/code&gt;&lt;/a&gt; for cryptography.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;See the &lt;a href=&quot;https://docs.rs/rustls/latest/rustls/crypto/struct.CryptoProvider.html#making-a-custom-cryptoprovider&quot;&gt;Making a custom CryptoProvider&lt;/a&gt; section of the documentation for more information
on this topic.&lt;/p&gt;&lt;div&gt;&lt;h1&gt;Example code&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;Our &lt;a href=&quot;https://github.com/rustls/rustls/blob/main/examples&quot;&gt;examples&lt;/a&gt; directory contains demos that show how to handle I/O using the
&lt;a href=&quot;https://docs.rs/rustls/latest/rustls/struct.Stream.html&quot;&gt;&lt;code&gt;stream::Stream&lt;/code&gt;&lt;/a&gt; helper, as well as more complex asynchronous I/O using &lt;a href=&quot;https://docs.rs/mio/latest/mio/&quot;&gt;&lt;code&gt;mio&lt;/code&gt;&lt;/a&gt;.
If you&amp;#39;re already using Tokio for an async runtime you may prefer to use
&lt;a href=&quot;https://docs.rs/tokio-rustls/latest/tokio_rustls/&quot;&gt;&lt;code&gt;tokio-rustls&lt;/code&gt;&lt;/a&gt; instead of interacting with rustls directly.&lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;https://docs.rs/mio/latest/mio/&quot;&gt;&lt;code&gt;mio&lt;/code&gt;&lt;/a&gt; based examples are the most complete, and discussed below. Users
new to Rustls may prefer to look at the simple client/server examples before
diving in to the more complex MIO examples.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Client example program&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;The MIO client example program is named &lt;code&gt;tlsclient-mio&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;Some sample runs:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ cargo run --bin tlsclient-mio -- --http jbp.io
HTTP/1.1 200 OK
Date: Tue, 23 Jun 2026 16:13:40 GMT
Content-Type: text/html; charset=utf-8
Connection: close
(...)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Run &lt;code&gt;cargo run --bin tlsclient-mio -- --help&lt;/code&gt; for more options.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Server example program&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;The MIO server example program is named &lt;code&gt;tlsserver-mio&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;Here&amp;#39;s a sample run; we start a TLS echo server, then connect to it with
&lt;code&gt;openssl&lt;/code&gt; and &lt;code&gt;tlsclient-mio&lt;/code&gt;:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ cargo run --bin tlsserver-mio -- --certs test-ca/rsa-2048/end.fullchain --key test-ca/rsa-2048/end.key -p 8443 echo &amp;amp;
$ echo hello world | openssl s_client -ign_eof -quiet -connect localhost:8443
depth=2 CN = ponytown RSA CA
verify error:num=19:self signed certificate in certificate chain
hello world
^C
$ echo hello world | cargo run --bin tlsclient-mio -- --cafile test-ca/rsa-2048/ca.cert --port 8443 localhost
hello world
^C&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Run &lt;code&gt;cargo run --bin tlsserver-mio -- --help&lt;/code&gt; for more options.&lt;/p&gt;&lt;div&gt;&lt;h1&gt;License&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;Rustls is distributed under the following three licenses:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Apache License version 2.0.&lt;/li&gt;
&lt;li&gt;MIT license.&lt;/li&gt;
&lt;li&gt;ISC license.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;These are included as LICENSE-APACHE, LICENSE-MIT and LICENSE-ISC
respectively.  You may use this software under the terms of any
of these licenses, at your option.&lt;/p&gt;&lt;div&gt;&lt;h1&gt;Project Membership&lt;/h1&gt;&lt;/div&gt;&lt;div&gt;&lt;h1&gt;Code of conduct&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;This project adopts the &lt;a href=&quot;https://www.rust-lang.org/policies/code-of-conduct&quot;&gt;Rust Code of Conduct&lt;/a&gt;.
Please email &lt;a href=&quot;mailto:rustls-mod@googlegroups.com&quot;&gt;rustls-mod@googlegroups.com&lt;/a&gt; to report any instance of misconduct, or if you
have any comments or questions on the Code of Conduct.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>block-ciphers/aes at master · RustCrypto/block-ciphers · GitHub</title>
<link>https://github.com/RustCrypto/block-ciphers/tree/master/aes</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/6937a328b9ed4ca8ef74f21a138c302e2486b5bda2d0ee255467c221768756c8/RustCrypto/block-ciphers"></enclosure>
<guid isPermaLink="false">4PJkkzdJEABK0Vs5lhkamB4B1ABMP45OJe_8-g==</guid>
<pubDate>Fri, 24 Jul 2026 18:42:45 +0000</pubDate>
<description>Collection of block cipher algorithms written in pure Rust - RustCrypto/block-ciphers</description>
<content:encoded>&lt;div&gt;
      Skip to content

      &lt;span&gt;
    
&lt;/span&gt;      
      





  
  
  






      

          

              





&lt;header&gt;
  &lt;h2&gt;Navigation Menu&lt;/h2&gt;

  

  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
        
      &lt;/div&gt;

      &lt;a href=&quot;https://github.com/&quot;&gt;
        
      &lt;/a&gt;

      &lt;div&gt;
          &lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FRustCrypto%2Fblock-ciphers%2Ftree%2Fmaster%2Faes&quot;&gt;
            Sign in
          &lt;/a&gt;
              &lt;div&gt;
            Appearance settings

  &lt;/div&gt;

      &lt;/div&gt;
    &lt;/div&gt;


    &lt;div&gt;
      &lt;div&gt;
          







  
  
  




        &lt;div&gt;
                



  &lt;div&gt;
      

    

    
&lt;div&gt;
  
      &lt;h1&gt;Search code, repositories, users, issues, pull requests...&lt;/h1&gt;
    &lt;div&gt;
      
          &lt;div&gt;        &lt;div&gt;
          
  
    &lt;div&gt;
      
        Search
      
      &lt;div&gt;
          &lt;span&gt;
            
          &lt;/span&gt;
        &lt;div&gt;
          
          &lt;div&gt;
            
            
          &lt;/div&gt;
        &lt;/div&gt;
          &lt;span&gt;
            &lt;span&gt;Clear&lt;/span&gt;
            

          &lt;/span&gt;
      &lt;/div&gt;
      



































































        &lt;div&gt;
                        

        &lt;/div&gt;
      &lt;div&gt;
        &lt;span&gt;
          
        &lt;/span&gt;
        
&lt;/div&gt;    &lt;/div&gt;
    

          &lt;div&gt;
            &lt;a href=&quot;https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax&quot;&gt;Search syntax tips&lt;/a&gt;            
          &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;

    &lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  
  &lt;div&gt;
    

  

    
    

  
    
  &lt;/div&gt;



            &lt;div&gt;
              &lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FRustCrypto%2Fblock-ciphers%2Ftree%2Fmaster%2Faes&quot;&gt;
                Sign in
              &lt;/a&gt;
            &lt;/div&gt;

              &lt;a href=&quot;https://github.com/signup?ref_cta=Sign+up&amp;amp;ref_loc=header+logged+out&amp;amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Ffiles%2Fdisambiguate&amp;amp;source=header-repo&amp;amp;source_repo=RustCrypto%2Fblock-ciphers&quot;&gt;
                Sign up
              &lt;/a&gt;

                &lt;div&gt;
            Appearance settings

  &lt;/div&gt;

          
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

      &lt;div&gt;
  
        
        &lt;span&gt;You signed in with another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You signed out in another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You switched accounts on another tab or window. Reload to refresh your session.&lt;/span&gt;

    Dismiss alert


  
&lt;/div&gt;
    &lt;/div&gt;&lt;div&gt;
        &lt;div&gt;
    &lt;main&gt;
      
      
    

    
  
  &lt;div&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;
      

      &lt;h3&gt;        Uh oh!
&lt;/h3&gt;
      &lt;p&gt;        &lt;/p&gt;&lt;p&gt;There was an error while loading. Please reload this page.&lt;/p&gt;


&lt;/div&gt;  &lt;/div&gt;
&lt;/div&gt;  &lt;/div&gt;


    








  

  &lt;div&gt;

      &lt;div&gt;

        &lt;div&gt;
            
  &lt;div&gt;
      
    
    &lt;span&gt;
      &lt;a href=&quot;https://github.com/RustCrypto&quot;&gt;
        RustCrypto
&lt;/a&gt;    &lt;/span&gt;
    &lt;span&gt;/&lt;/span&gt;
    &lt;strong&gt;
      &lt;a href=&quot;https://github.com/RustCrypto/block-ciphers&quot;&gt;block-ciphers&lt;/a&gt;
    &lt;/strong&gt;

    &lt;span&gt;Public&lt;/span&gt;
  &lt;/div&gt;


        &lt;/div&gt;

        &lt;div&gt;
            &lt;ul&gt;
    
      

  &lt;li&gt;
            &lt;a href=&quot;https://github.com/login?return_to=%2FRustCrypto%2Fblock-ciphers&quot;&gt;    Notifications
&lt;/a&gt;    You must be signed in to change notification settings

  &lt;/li&gt;

  &lt;li&gt;
          &lt;a href=&quot;https://github.com/login?return_to=%2FRustCrypto%2Fblock-ciphers&quot;&gt;    Fork
    &lt;span&gt;151&lt;/span&gt;
&lt;/a&gt;
  &lt;/li&gt;

  &lt;li&gt;
        &lt;div&gt;
        &lt;a href=&quot;https://github.com/login?return_to=%2FRustCrypto%2Fblock-ciphers&quot;&gt;    &lt;span&gt;
          Star
&lt;/span&gt;          &lt;span&gt;774&lt;/span&gt;
&lt;/a&gt;&lt;/div&gt;
  &lt;/li&gt;

&lt;/ul&gt;

        &lt;/div&gt;
      &lt;/div&gt;

        &lt;div&gt;
&lt;/div&gt;


          

  &lt;/div&gt;
  




    &lt;div&gt;
    



    
      
    









  
  
  &lt;div&gt;  &lt;a href=&quot;https://github.com/RustCrypto/block-ciphers&quot;&gt;&lt;/a&gt; &lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;&lt;span&gt;Expand file tree&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;/&lt;/span&gt;&lt;h1&gt;aes&lt;/h1&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;span&gt;Copy path&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Directory actions&lt;/h2&gt;&lt;h2&gt;More options&lt;/h2&gt;&lt;span&gt;More options&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Directory actions&lt;/h2&gt;&lt;h2&gt;More options&lt;/h2&gt;&lt;span&gt;More options&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Latest commit&lt;/h2&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;History&lt;/h2&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/commits/master/aes&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;History&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/commits/master/aes&quot;&gt;&lt;/a&gt;&lt;span&gt;History&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;/&lt;/span&gt;&lt;h1&gt;aes&lt;/h1&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;span&gt;Copy path&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Folders and files&lt;/h2&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th colspan=&quot;2&quot;&gt;&lt;span&gt;Name&lt;/span&gt;&lt;/th&gt;&lt;th colspan=&quot;1&quot;&gt;&lt;span&gt;Name&lt;/span&gt;&lt;/th&gt;&lt;th&gt;&lt;div&gt;&lt;span&gt;Last commit message&lt;/span&gt;&lt;/div&gt;&lt;/th&gt;&lt;th colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;span&gt;Last commit date&lt;/span&gt;&lt;/div&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;&lt;h3&gt;parent directory&lt;/h3&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/tree/master&quot;&gt;&lt;div&gt;..&lt;/div&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/tree/master/aes/benches&quot;&gt;benches&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/tree/master/aes/benches&quot;&gt;benches&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/tree/master/aes/src&quot;&gt;src&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/tree/master/aes/src&quot;&gt;src&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/tree/master/aes/tests&quot;&gt;tests&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/tree/master/aes/tests&quot;&gt;tests&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/blob/master/aes/CHANGELOG.md&quot;&gt;CHANGELOG.md&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/blob/master/aes/CHANGELOG.md&quot;&gt;CHANGELOG.md&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/blob/master/aes/Cargo.toml&quot;&gt;Cargo.toml&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/blob/master/aes/Cargo.toml&quot;&gt;Cargo.toml&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/blob/master/aes/LICENSE-APACHE&quot;&gt;LICENSE-APACHE&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/blob/master/aes/LICENSE-APACHE&quot;&gt;LICENSE-APACHE&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/blob/master/aes/LICENSE-MIT&quot;&gt;LICENSE-MIT&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/blob/master/aes/LICENSE-MIT&quot;&gt;LICENSE-MIT&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/blob/master/aes/README.md&quot;&gt;README.md&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/blob/master/aes/README.md&quot;&gt;README.md&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;README.md&lt;/h2&gt;&lt;span&gt;Outline&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;article&gt;&lt;div&gt;&lt;h1&gt;RustCrypto: Advanced Encryption Standard (AES)&lt;/h1&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://crates.io/crates/aes&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/31a4248fcd229c138fbe6eb06a141e9df9113641045a8e04b61f5e93d0048e0b/68747470733a2f2f696d672e736869656c64732e696f2f6372617465732f762f6165732e737667&quot; alt=&quot;crate&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://docs.rs/aes/&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/5f7296a9aeb06b6b1b3bd752e2be41838364eba46e725dcd4479c3fb78fe36b5/68747470733a2f2f646f63732e72732f6165732f62616467652e737667&quot; alt=&quot;Docs&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://camo.githubusercontent.com/3a30c89b4bb32ea802abe7cbf86da8d828fcd9588a15b552f948bba0549eba87/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d417061636865322e302f4d49542d626c75652e737667&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/3a30c89b4bb32ea802abe7cbf86da8d828fcd9588a15b552f948bba0549eba87/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d417061636865322e302f4d49542d626c75652e737667&quot; alt=&quot;Apache2/MIT licensed&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://camo.githubusercontent.com/889ca29749a533dc9a328dc82b41eb1bfdfafc901dcb7d5d59dc738843d2205c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72757374632d312e38352b2d626c75652e737667&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/889ca29749a533dc9a328dc82b41eb1bfdfafc901dcb7d5d59dc738843d2205c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72757374632d312e38352b2d626c75652e737667&quot; alt=&quot;Rust Version&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://rustcrypto.zulipchat.com/#narrow/stream/260039-block-ciphers&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/7c7621e2bd2c02b17831327668d7c2c0a73d67fb7dbec668a916286d64813e7b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7a756c69702d6a6f696e5f636861742d626c75652e737667&quot; alt=&quot;Project Chat&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/RustCrypto/block-ciphers/actions?query=workflow%3Aaes&quot;&gt;&lt;img src=&quot;https://github.com/RustCrypto/block-ciphers/workflows/aes/badge.svg?branch=master&amp;amp;event=push&quot; alt=&quot;Build Status&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://crates.io/crates/aes&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/1940157173e0f950af044d388fd220509ed70950cc431cf88b3ecd8b020eb6cc/68747470733a2f2f696d672e736869656c64732e696f2f6372617465732f642f6165732e737667&quot; alt=&quot;Downloads&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/RustCrypto/meta/blob/master/HAZMAT.md&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/231249b790cf6f52acba74386e4f035fd234d4a112b89b6f57594e123d972b28/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f63727970746f2d68617a6d61742545322539412541302d7265642e737667&quot; alt=&quot;HAZMAT&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pure Rust implementation of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Advanced_Encryption_Standard&quot;&gt;Advanced Encryption Standard (AES)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This crate implements the low-level AES block function, and is intended
for use for implementing higher-level constructions &lt;em&gt;only&lt;/em&gt;. It is NOT
intended for direct use in applications.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/RustCrypto/media/85f62bb/img/block-ciphers/aes-round.svg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/RustCrypto/media/85f62bb/img/block-ciphers/aes-round.svg&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;h2&gt;Security&lt;/h2&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3&gt;⚠️ Warning: &lt;a href=&quot;https://github.com/RustCrypto/meta/blob/master/HAZMAT.md&quot;&gt;Hazmat!&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;This crate does not ensure ciphertexts are authentic (i.e. by using a MAC to
verify ciphertext integrity), which can lead to serious vulnerabilities
if used incorrectly!&lt;/p&gt;
&lt;p&gt;To avoid this, use an &lt;a href=&quot;https://en.wikipedia.org/wiki/Authenticated_encryption&quot;&gt;AEAD&lt;/a&gt; mode based on AES, such as &lt;a href=&quot;https://github.com/RustCrypto/AEADs/tree/master/aes-gcm&quot;&gt;AES-GCM&lt;/a&gt; or &lt;a href=&quot;https://github.com/RustCrypto/AEADs/tree/master/aes-gcm-siv&quot;&gt;AES-GCM-SIV&lt;/a&gt;.
See the &lt;a href=&quot;https://github.com/RustCrypto/AEADs&quot;&gt;RustCrypto/AEADs&lt;/a&gt; repository for more information.&lt;/p&gt;
&lt;p&gt;USE AT YOUR OWN RISK!&lt;/p&gt;
&lt;div&gt;&lt;h3&gt;Notes&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;This crate has received one &lt;a href=&quot;https://web.archive.org/web/20240108154854/https://research.nccgroup.com/wp-content/uploads/2020/02/NCC_Group_MobileCoin_RustCrypto_AESGCM_ChaCha20Poly1305_Implementation_Review_2020-02-12_v1.0.pdf&quot;&gt;security audit by NCC Group&lt;/a&gt;, with no significant
findings. We would like to thank &lt;a href=&quot;https://www.mobilecoin.com/&quot;&gt;MobileCoin&lt;/a&gt; for funding the audit.&lt;/p&gt;
&lt;p&gt;All implementations contained in the crate are designed to execute in constant
time, either by relying on hardware intrinsics (i.e. AES-NI on x86/x86_64), or
using a portable implementation based on bitslicing.&lt;/p&gt;
&lt;div&gt;&lt;h2&gt;License&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Licensed under either of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.apache.org/licenses/LICENSE-2.0&quot;&gt;Apache License, Version 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://opensource.org/licenses/MIT&quot;&gt;MIT license&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;at your option.&lt;/p&gt;
&lt;div&gt;&lt;h3&gt;Contribution&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.&lt;/p&gt;
&lt;/article&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;   &lt;/div&gt;





  &lt;/div&gt;



    &lt;/main&gt;
  &lt;/div&gt;

  &lt;/div&gt;&lt;div&gt;
    
    
    You can’t perform that action at this time.
  &lt;/div&gt;&lt;div&gt;
  &lt;div&gt;
  &lt;/div&gt;
&lt;/div&gt;</content:encoded>
</item>
<item>
<title>GitHub - Mr-Leshiy/mojo-crypto · GitHub</title>
<link>https://github.com/Mr-Leshiy/mojo-crypto</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/4eac8e1f0aeb049b067547a8da0198dfcfc11fa3004ee5be7b6188a8ea187694/Mr-Leshiy/mojo-crypto"></enclosure>
<guid isPermaLink="false">_0Si6Vxl8UwYyg1UcnZaoIJhNiDuO1FEbp8BZg==</guid>
<pubDate>Fri, 24 Jul 2026 18:42:44 +0000</pubDate>
<description>Contribute to Mr-Leshiy/mojo-crypto development by creating an account on GitHub.</description>
<content:encoded>&lt;div&gt;
      Skip to content

      &lt;span&gt;
    
&lt;/span&gt;      
      





  
  
  






      

          

              





&lt;header&gt;
  &lt;h2&gt;Navigation Menu&lt;/h2&gt;

  

  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
        
      &lt;/div&gt;

      &lt;a href=&quot;https://github.com/&quot;&gt;
        
      &lt;/a&gt;

      &lt;div&gt;
          &lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FMr-Leshiy%2Fmojo-crypto&quot;&gt;
            Sign in
          &lt;/a&gt;
              &lt;div&gt;
            Appearance settings

  &lt;/div&gt;

      &lt;/div&gt;
    &lt;/div&gt;


    &lt;div&gt;
      &lt;div&gt;
          







  
  
  




        &lt;div&gt;
                



  &lt;div&gt;
      

    

    
&lt;div&gt;
  
      &lt;h1&gt;Search code, repositories, users, issues, pull requests...&lt;/h1&gt;
    &lt;div&gt;
      
          &lt;div&gt;        &lt;div&gt;
          
  
    &lt;div&gt;
      
        Search
      
      &lt;div&gt;
          &lt;span&gt;
            
          &lt;/span&gt;
        &lt;div&gt;
          
          &lt;div&gt;
            
            
          &lt;/div&gt;
        &lt;/div&gt;
          &lt;span&gt;
            &lt;span&gt;Clear&lt;/span&gt;
            

          &lt;/span&gt;
      &lt;/div&gt;
      



































































        &lt;div&gt;
                        

        &lt;/div&gt;
      &lt;div&gt;
        &lt;span&gt;
          
        &lt;/span&gt;
        
&lt;/div&gt;    &lt;/div&gt;
    

          &lt;div&gt;
            &lt;a href=&quot;https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax&quot;&gt;Search syntax tips&lt;/a&gt;            
          &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;

    &lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  
  &lt;div&gt;
    

  

    
    

  
    
  &lt;/div&gt;



            &lt;div&gt;
              &lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FMr-Leshiy%2Fmojo-crypto&quot;&gt;
                Sign in
              &lt;/a&gt;
            &lt;/div&gt;

              &lt;a href=&quot;https://github.com/signup?ref_cta=Sign+up&amp;amp;ref_loc=header+logged+out&amp;amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&amp;amp;source=header-repo&amp;amp;source_repo=Mr-Leshiy%2Fmojo-crypto&quot;&gt;
                Sign up
              &lt;/a&gt;

                &lt;div&gt;
            Appearance settings

  &lt;/div&gt;

          
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

      &lt;div&gt;
  
        
        &lt;span&gt;You signed in with another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You signed out in another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You switched accounts on another tab or window. Reload to refresh your session.&lt;/span&gt;

    Dismiss alert


  
&lt;/div&gt;
    &lt;/div&gt;&lt;div&gt;
        &lt;div&gt;
    &lt;main&gt;
      
      








  

  &lt;div&gt;

      &lt;div&gt;

        &lt;div&gt;
            
  &lt;div&gt;
      
    
    &lt;span&gt;
      &lt;a href=&quot;https://github.com/Mr-Leshiy&quot;&gt;
        Mr-Leshiy
&lt;/a&gt;    &lt;/span&gt;
    &lt;span&gt;/&lt;/span&gt;
    &lt;strong&gt;
      &lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto&quot;&gt;mojo-crypto&lt;/a&gt;
    &lt;/strong&gt;

    &lt;span&gt;Public&lt;/span&gt;
  &lt;/div&gt;


        &lt;/div&gt;

        &lt;div&gt;
            &lt;ul&gt;
    
      

  &lt;li&gt;
            &lt;a href=&quot;https://github.com/login?return_to=%2FMr-Leshiy%2Fmojo-crypto&quot;&gt;    Notifications
&lt;/a&gt;    You must be signed in to change notification settings

  &lt;/li&gt;

  &lt;li&gt;
          &lt;a href=&quot;https://github.com/login?return_to=%2FMr-Leshiy%2Fmojo-crypto&quot;&gt;    Fork
    &lt;span&gt;0&lt;/span&gt;
&lt;/a&gt;
  &lt;/li&gt;

  &lt;li&gt;
        &lt;div&gt;
        &lt;a href=&quot;https://github.com/login?return_to=%2FMr-Leshiy%2Fmojo-crypto&quot;&gt;    &lt;span&gt;
          Star
&lt;/span&gt;          &lt;span&gt;2&lt;/span&gt;
&lt;/a&gt;&lt;/div&gt;
  &lt;/li&gt;

&lt;/ul&gt;

        &lt;/div&gt;
      &lt;/div&gt;

        &lt;div&gt;
&lt;/div&gt;


          

  &lt;/div&gt;
  




    &lt;div&gt;
    



    
      
    









  
  
  &lt;div&gt;  &lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto&quot;&gt;&lt;/a&gt; &lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;header&gt;&lt;div&gt;




&lt;h1&gt;Mr-Leshiy/mojo-crypto&lt;/h1&gt;



&lt;/div&gt;&lt;/header&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/branches&quot;&gt;&lt;span&gt;&lt;span&gt;Branches&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/tags&quot;&gt;&lt;span&gt;&lt;span&gt;Tags&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/branches&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/tags&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Open more actions menu&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Folders and files&lt;/h2&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th colspan=&quot;2&quot;&gt;&lt;span&gt;Name&lt;/span&gt;&lt;/th&gt;&lt;th colspan=&quot;1&quot;&gt;&lt;span&gt;Name&lt;/span&gt;&lt;/th&gt;&lt;th&gt;&lt;div&gt;&lt;span&gt;Last commit message&lt;/span&gt;&lt;/div&gt;&lt;/th&gt;&lt;th colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;span&gt;Last commit date&lt;/span&gt;&lt;/div&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;&lt;div&gt;&lt;h2&gt;Latest commit&lt;/h2&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;History&lt;/h2&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/commits/main/&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;74 Commits&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/commits/main/&quot;&gt;&lt;/a&gt;&lt;span&gt;74 Commits&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/tree/main/.claude/skills&quot;&gt;&lt;span&gt;.claude/&lt;/span&gt;&lt;span&gt;skills&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/tree/main/.claude/skills&quot;&gt;&lt;span&gt;.claude/&lt;/span&gt;&lt;span&gt;skills&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/tree/main/.github/workflows&quot;&gt;&lt;span&gt;.github/&lt;/span&gt;&lt;span&gt;workflows&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/tree/main/.github/workflows&quot;&gt;&lt;span&gt;.github/&lt;/span&gt;&lt;span&gt;workflows&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/tree/main/benchmarks&quot;&gt;benchmarks&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/tree/main/benchmarks&quot;&gt;benchmarks&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/tree/main/docs&quot;&gt;docs&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/tree/main/docs&quot;&gt;docs&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/tree/main/mojo_crypto&quot;&gt;mojo_crypto&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/tree/main/mojo_crypto&quot;&gt;mojo_crypto&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/tree/main/tests&quot;&gt;tests&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/tree/main/tests&quot;&gt;tests&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/.gitattributes&quot;&gt;.gitattributes&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/.gitattributes&quot;&gt;.gitattributes&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/.gitignore&quot;&gt;.gitignore&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/.gitignore&quot;&gt;.gitignore&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/CLAUDE.md&quot;&gt;CLAUDE.md&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/CLAUDE.md&quot;&gt;CLAUDE.md&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/LICENSE-APACHE&quot;&gt;LICENSE-APACHE&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/LICENSE-APACHE&quot;&gt;LICENSE-APACHE&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/LICENSE-MIT&quot;&gt;LICENSE-MIT&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/LICENSE-MIT&quot;&gt;LICENSE-MIT&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/README.md&quot;&gt;README.md&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/README.md&quot;&gt;README.md&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/modo.yaml&quot;&gt;modo.yaml&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/modo.yaml&quot;&gt;modo.yaml&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/pixi.lock&quot;&gt;pixi.lock&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/pixi.lock&quot;&gt;pixi.lock&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/pixi.toml&quot;&gt;pixi.toml&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/pixi.toml&quot;&gt;pixi.toml&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/scell.cue&quot;&gt;scell.cue&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/scell.cue&quot;&gt;scell.cue&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Repository files navigation&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;article&gt;&lt;div&gt;&lt;h1&gt;mojo-crypto&lt;/h1&gt;&lt;/div&gt;
&lt;p&gt;Cryptographic primitives implemented in &lt;a href=&quot;https://www.modular.com/mojo&quot;&gt;Mojo&lt;/a&gt;,
with portable software backends alongside hardware-accelerated (ARMv8 Crypto
Extension, x86 AES-NI/PCLMULQDQ) and GPU implementations.&lt;/p&gt;
&lt;div&gt;&lt;h2&gt;Documentation&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Full API documentation is published at
&lt;strong&gt;&lt;a href=&quot;https://Mr-Leshiy.github.io/mojo-crypto/&quot;&gt;https://Mr-Leshiy.github.io/mojo-crypto/&lt;/a&gt;&lt;/strong&gt;, generated from the source with
&lt;a href=&quot;https://mlange-42.github.io/modo/&quot;&gt;Modo&lt;/a&gt;. Build it locally with &lt;code&gt;pixi run docs&lt;/code&gt;.&lt;/p&gt;
&lt;div&gt;&lt;h2&gt;Modules&lt;/h2&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/mojo_crypto/aead&quot;&gt;&lt;code&gt;aead&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; — Authenticated Encryption with Associated Data (AES-GCM, AES-GCM-SIV etc.).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/mojo_crypto/block_ciphers&quot;&gt;&lt;code&gt;block_ciphers&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; — block ciphers (AES etc.) and modes of operation (CTR, CBC etc.).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/mojo_crypto/universal_hashes&quot;&gt;&lt;code&gt;universal_hashes&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; — universal hash functions (GHASH, POLYVAL etc.).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/mojo_crypto/hashes&quot;&gt;&lt;code&gt;hashes&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; — cryptographic hash functions (SHA-2, SHA-3 etc.).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/mojo_crypto/macs&quot;&gt;&lt;code&gt;macs&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; — message authentication codes (CMAC, HMAC etc.).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/blob/main/mojo_crypto/containers&quot;&gt;&lt;code&gt;containers&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; — supporting containers and
encodings (hex).&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2&gt;Requirements&lt;/h2&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.sh&quot;&gt;pixi&lt;/a&gt; — manages the Mojo toolchain and dependencies&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2&gt;Commands&lt;/h2&gt;&lt;/div&gt;
&lt;div&gt;&lt;pre&gt;pixi run fmt         &lt;span&gt;&lt;span&gt;#&lt;/span&gt; format all Mojo sources&lt;/span&gt;
pixi run &lt;span&gt;test&lt;/span&gt;        &lt;span&gt;&lt;span&gt;#&lt;/span&gt; run the test suite (requires a GPU)&lt;/span&gt;
pixi run bench       &lt;span&gt;&lt;span&gt;#&lt;/span&gt; run the Mojo benchmarks (requires a GPU)&lt;/span&gt;
pixi run bench-rust  &lt;span&gt;&lt;span&gt;#&lt;/span&gt; run the Rust reference benchmarks&lt;/span&gt;
pixi run docs        &lt;span&gt;&lt;span&gt;#&lt;/span&gt; build the API documentation site&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/article&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;&lt;span&gt;About&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;span&gt;&lt;a href=&quot;https://mr-leshiy.github.io/mojo-crypto/&quot;&gt;mr-leshiy.github.io/mojo-crypto/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;span&gt;Topics&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/topics/cryptography&quot;&gt;cryptography&lt;/a&gt;&lt;a href=&quot;https://github.com/topics/mojo&quot;&gt;mojo&lt;/a&gt;&lt;a href=&quot;https://github.com/topics/mojo-lang&quot;&gt;mojo-lang&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;&lt;span&gt;Resources&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;span&gt;Readme&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/activity&quot;&gt;&lt;span&gt;Activity&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;&lt;span&gt;Stars&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/stargazers&quot;&gt;&lt;span&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; stars&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;&lt;span&gt;Watchers&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/watchers&quot;&gt;&lt;span&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; watching&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;&lt;span&gt;Forks&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Mr-Leshiy/mojo-crypto/forks&quot;&gt;&lt;span&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; forks&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2FMr-Leshiy%2Fmojo-crypto&amp;amp;report=Mr-Leshiy+%28user%29&quot;&gt;&lt;span&gt;Report repository&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;&lt;span&gt;Releases&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;&lt;span&gt;Contributors&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;&lt;span&gt;Languages&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;   &lt;/div&gt;





  &lt;/div&gt;



    &lt;/main&gt;
  &lt;/div&gt;

  &lt;/div&gt;&lt;div&gt;
    
    
    You can’t perform that action at this time.
  &lt;/div&gt;&lt;div&gt;
  &lt;div&gt;
  &lt;/div&gt;
&lt;/div&gt;</content:encoded>
</item>
<item>
<title>GitHub - AutomataLab/cuJSON: cuJSON: A Highly Parallel JSON Parser for GPUs · GitHub</title>
<link>https://github.com/AutomataLab/cuJSON</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/a923213f7f8c50766e1778310b3f9e0e79248d1b79462769c6c7b8d68f6fc4ca/AutomataLab/cuJSON"></enclosure>
<guid isPermaLink="false">wOw5az2Kxd9j4xW3Zk8Gg0iwJzHGTmk0lU9E-w==</guid>
<pubDate>Fri, 24 Jul 2026 18:42:44 +0000</pubDate>
<description>cuJSON: A Highly Parallel JSON Parser for GPUs. Contribute to AutomataLab/cuJSON development by creating an account on GitHub.</description>
<content:encoded>&lt;p&gt;
  &lt;a href=&quot;https://github.com/AutomataLab/cuJSON/blob/master&quot;&gt;
    &lt;img src=&quot;https://github.com/AutomataLab/cuJSON/raw/master/fig/logo-2.png&quot; alt=&quot;cuJSON Project Logo&quot; title=&quot;&quot;/&gt;
    
&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;h3&gt;cuJSON: A Highly Parallel JSON Parser for GPUs&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/AutomataLab/cuJSON/blob/master&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/263f3694f42afc27e06a1ff829cd63884893b55624e13a16893dd0a3ba772b94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7374617475732d6163746976652d737563636573732e737667&quot; alt=&quot;Status&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/ashkanvg/cuJSON/issues&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/d54a1faf2cbb92da853e814a716bb9b299f27b0cae6b0df284f096044ac35061/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f6173686b616e76672f63754a534f4e2e737667&quot; alt=&quot;GitHub Issues&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/ashkanvg/cuJSON/pulls&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/a18e730c8177c931caf7ddd954f88ec5fe93aa77b9d7e658fba302827d65c6ad/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732d70722f6173686b616e76672f63754a534f4e2e737667&quot; alt=&quot;GitHub Pull Requests&quot; title=&quot;&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/AutomataLab/cuJSON/blob/master/LICENSE&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667&quot; alt=&quot;License&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;hr/&gt;&lt;p&gt; 
&lt;b&gt;cuJSON is the world&amp;#39;s fastest JSON parser, running entirely on your GPU&lt;/b&gt;. Forget the old idea that GPUs can&amp;#39;t handle complex data parsing—cuJSON proves them wrong. It&amp;#39;s built from the ground up to be super parallel, making quick work of everything from validating your data to figuring out its structure.
&lt;/p&gt;&lt;p&gt;&lt;b&gt;The result? cuJSON absolutely flies, leaving other top-tier CPU and even existing GPU parsers in the dust&lt;/b&gt;. If you&amp;#39;re dealing with tons of JSON data, cuJSON is designed to eliminate that bottleneck and speed things up dramatically.
&lt;br/&gt;&lt;/p&gt;&lt;div&gt;&lt;h2&gt;📝 Table of Contents&lt;/h2&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;About&lt;/li&gt;
&lt;li&gt;Publication&lt;/li&gt;
&lt;li&gt;Datasets&lt;/li&gt;
&lt;li&gt;Getting Started&lt;/li&gt;
&lt;li&gt;Integrating cuJSON into Your Project&lt;/li&gt;
&lt;li&gt;Query Iterator&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h2&gt;🧐 About &lt;/h2&gt;&lt;/div&gt;&lt;p&gt;JSON (JavaScript Object Notation) data is widely used in modern computing, yet its parsing performance can be a major bottleneck. Conventional wisdom suggests that GPUs are ill-suited for parsing due to the branch-heavy nature of parsing algorithms. This work challenges that notion by presenting cuJSON, a novel JSON parser built on a redesigned parsing algorithm, specifically tailored for GPU architectures with minimal branching and maximal parallelism.&lt;/p&gt;&lt;p&gt;cuJSON offloads all three key phases of JSON parsing to the GPU: (i) UTF validation, (ii) JSON tokenization, and (iii) nesting structure recognition. Each phase is powered by a highly parallel algorithm optimized for GPUs, effectively leveraging intrinsic GPU functions and high-performance CUDA libraries for acceleration.
To maximize the parsing speed, the output of cuJSON is also specially designed in a non-conventional way. Finally, cuJSON is able to break key dependencies in the parsing process, making it possible to accelerate the parsing of a single large JSON file effectively. Evaluation shows that cuJSON not only outperforms highly optimized CPU-based parsers like simdjson  and Pison but also surpasses existing GPU-based parsers like cuDF and GPJSON, in terms of both functionality and performance.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;✍️ Publication - cuJSON &lt;/h2&gt;&lt;/div&gt;&lt;p&gt;This repository contains the official source code for the cuJSON paper. All figures and benchmark results presented in the publication can be fully reproduced using the code provided here.&lt;/p&gt;&lt;blockquote&gt;
&lt;p&gt;Ashkan Vedadi Gargary, Soroosh Safari Loaliyan, and Zhijia Zhao. 2025. &lt;a href=&quot;https://doi.org/10.1145/3760250.3762222&quot;&gt;CuJSON: A Highly Parallel JSON Parser for GPUs&lt;/a&gt;. In Proceedings of the 31st ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 1 (ASPLOS &amp;#39;26). Association for Computing Machinery, New York, NY, USA, 85–100. &lt;a href=&quot;https://doi.org/10.1145/3760250.3762222&quot;&gt;https://doi.org/10.1145/3760250.3762222&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;For detailed instructions on how to replicate the experimental results and figures from the paper, &lt;b&gt;specially for research purposes and comparison&lt;/b&gt;, please refer to the &lt;code&gt;paper_reproduced/&lt;/code&gt; directory.&lt;/p&gt;&lt;p&gt;Additionally, all the scripts are available at &lt;code&gt;paper_reproduced/scripts/readme.md&lt;/code&gt;.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;📂 Datasets &lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Two sample datasets are included in the &lt;code&gt;dataset&lt;/code&gt; folder. Large datasets (used in performance evaluation) can be downloaded from &lt;a href=&quot;https://drive.google.com/drive/folders/1PkDEy0zWOkVREfL7VuINI-m9wJe45P2Q?usp=sharing&quot;&gt;https://drive.google.com/drive/folders/1PkDEy0zWOkVREfL7VuINI-m9wJe45P2Q?usp=sharing&lt;/a&gt; and placed into the &lt;code&gt;dataset&lt;/code&gt; folder. Each dataset comes with two formats:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;For JSON Lines, use those datasets that end in &lt;code&gt;_small_records.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;For Standard JSON, use those datasets that end in &lt;code&gt;_large_record.json&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h2&gt;🏁 Getting Started &lt;/h2&gt;&lt;/div&gt;&lt;p&gt;These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.&lt;/p&gt;&lt;div&gt;&lt;h3&gt;Prerequisites&lt;/h3&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;g++&lt;/code&gt; (version 7 or newer),&lt;/li&gt;
&lt;li&gt;the CUDA toolkit (release 12.1 or newer; also validated with CUDA 13.3),&lt;/li&gt;
&lt;li&gt;an NVIDIA GPU with compute capability 8.0 for the commands below, and&lt;/li&gt;
&lt;li&gt;a 64-bit Linux system with a command-line shell.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;Building and Running the Examples (Standard JSON)&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;Follow these steps to compile and run the cuJSON examples:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Clone the Repository (if you haven&amp;#39;t already):
First, get a copy of the cuJSON project:&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;git clone https://github.com/ashkanvg/cuJSON
cd cuJSON&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;Compile &lt;code&gt;main.cu&lt;/code&gt; (Standard JSON Parsing), &lt;b&gt;check notes for more details&lt;/b&gt;:&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;pre&gt;nvcc -O3 -std=c++17 -arch=sm_80 main.cu -o cujson_standard.out&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;Run (Standard JSON Parsing):
Once cujson_standard.out is compiled, you can execute it. We&amp;#39;ve included example JSON files in the dataset/ folder for your convenience, &lt;b&gt;check notes for more details about what datasets should you use&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;pre&gt;./cujson_standard.out ./dataset/twitter_sample_large_record.json&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;Building and Running the Examples (JSON Lines)&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;Follow these steps to compile and run the cuJSON examples:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Clone the Repository (if you haven&amp;#39;t already):&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;git clone https://github.com/ashkanvg/cuJSON
cd cuJSON&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;Three entry points demonstrate the available JSON Lines chunking APIs.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Compile &lt;code&gt;main_jsonlines.cu&lt;/code&gt; to split the input into four chunks:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;nvcc -O3 -std=c++17 -arch=sm_80 main_jsonlines.cu -o cujson_jsonlines_count.out&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Compile &lt;code&gt;main_jsonlines_chunksize.cu&lt;/code&gt; to limit chunks to 256 MiB expressed in bytes:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;nvcc -O3 -std=c++17 -arch=sm_80 main_jsonlines_chunksize.cu -o cujson_jsonlines_chunksize_bytes.out&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Compile &lt;code&gt;main_jsonlines_chunksize_MB.cu&lt;/code&gt; to specify the same limit in megabytes:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;nvcc -O3 -std=c++17 -arch=sm_80 main_jsonlines_chunksize_MB.cu -o cujson_jsonlines_chunksize_mb.out&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;Run the binary for the chunking API you want to test:&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;pre&gt;./cujson_jsonlines_count.out ./dataset/twitter_sample_small_records.json
./cujson_jsonlines_chunksize_bytes.out ./dataset/twitter_sample_small_records.json
./cujson_jsonlines_chunksize_mb.out ./dataset/twitter_sample_small_records.json&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;Notes :&lt;/h3&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;You can use any valid standard JSON or JSON Lines file as input. For more extensive testing, refer to the datasets section for information on using larger 1GB JSON datasets.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-arch=sm_80&lt;/code&gt; targets compute capability 8.0 GPUs such as the NVIDIA A100. Replace &lt;code&gt;sm_80&lt;/code&gt; with the architecture of your GPU when building for another device. See NVIDIA&amp;#39;s &lt;a href=&quot;https://developer.nvidia.com/cuda-gpus&quot;&gt;CUDA GPU compute capability list&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-std=c++17&lt;/code&gt; selects the C++17 language standard used by the examples.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-O3&lt;/code&gt; enables optimized host and device compilation.&lt;/li&gt;
&lt;li&gt;The commands intentionally omit &lt;code&gt;-w&lt;/code&gt; so compiler warnings remain visible during development.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;h2&gt;🚀 Integrating cuJSON into Your Project &lt;/h2&gt;&lt;/div&gt;&lt;p&gt;This section guides you on how to incorporate and utilize the cuJSON library within your own C++/CUDA projects for both standard JSON and JSON Lines parsing.&lt;/p&gt;&lt;div&gt;&lt;h3&gt;Core API&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;To integrate cuJSON, you&amp;#39;ll generally follow these steps:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Include the cuJSON Source:
Copy the entire &lt;code&gt;cujson/&lt;/code&gt; directory from this repository into your project&amp;#39;s source tree. Ensure your build system (e.g., nvcc compilation) is configured to compile these files and include their headers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Include the Main Header:
In your source files where you intend to use cuJSON, include its primary header:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;For Standard JSON:&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;#include &amp;quot;cujson/cujson.h&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;For JSON Lines:&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;#include &amp;quot;cujson/cujsonlines.h&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;Load Your JSON Data:
Before parsing, load the data into a &lt;code&gt;cuJSONInput&lt;/code&gt; or &lt;code&gt;cuJSONLinesInput&lt;/code&gt; structure with the API matching the input format and chunking strategy.&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;For Standard JSON:&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;pre&gt;std::string filePath = &lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;./dataset/twitter_sample_large_record.json&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;;
cuJSONInput input = loadJSON(filePath);&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;For JSON Lines, there are multiple cases:&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;a. Split based on the number of chunks:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;size_t&lt;/span&gt; chunkCount = &lt;span&gt;4&lt;/span&gt;;
std::string filePath = &lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;./dataset/twitter_sample_small_records.json&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;;
cuJSONLinesInput input = loadJSONLines_chunkCount(filePath, chunkCount);&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;b. Split based on the maximum chunk size in bytes:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;std::string filePath = &lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;./dataset/twitter_sample_small_records.json&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;;
&lt;span&gt;size_t&lt;/span&gt; maxChunkSizeBytes = &lt;span&gt;256&lt;/span&gt; * &lt;span&gt;1024&lt;/span&gt; * &lt;span&gt;1024&lt;/span&gt;;
cuJSONLinesInput input = loadJSONLines_chunkSizeBytes(filePath, maxChunkSizeBytes);&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;c. Split based on the maximum chunk size in megabytes:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;std::string filePath = &lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;./dataset/twitter_sample_small_records.json&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;;
&lt;span&gt;size_t&lt;/span&gt; maxChunkSizeMegaBytes = &lt;span&gt;256&lt;/span&gt;;
cuJSONLinesInput input = loadJSONLines_chunkSizeMegaBytes(filePath, maxChunkSizeMegaBytes);&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;Parse the JSON Data:&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;For Standard JSON:&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;cuJSONResult parsed_array = parse_standard_json(input);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;For JSON Lines:&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;cuJSONResult parsed_array = parse_json_lines(input);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;Access Parsed Results (Further Processing)
The &lt;code&gt;cuJSONResult&lt;/code&gt; structure (described in detail later) contains pointers to parsed data located in host (CPU) memory. You can either implement your own post-processing logic or use the built-in cuJSON query iterator to navigate the parsed result and extract desired values. We elaborate on the Query Iterator section for more information.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;h3&gt;Summary of the Load and Parse APIs&lt;/h3&gt;&lt;/div&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;API Method&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cuJSONInput loadJSON(const std::string&amp;amp; filePath)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Loads a Standard JSON file into a &lt;code&gt;cuJSONInput&lt;/code&gt; structure.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cuJSONLinesInput loadJSONLines_chunkCount(const std::string&amp;amp; filePath, size_t chunkCount)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Loads a JSON Lines file and splits it into &lt;code&gt;chunkCount&lt;/code&gt; chunks.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cuJSONLinesInput loadJSONLines_chunkSizeBytes(const std::string&amp;amp; filePath, size_t chunkSizeBytes)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Loads a JSON Lines file and splits it into chunks based on a maximum chunk size (in bytes).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cuJSONLinesInput loadJSONLines_chunkSizeMegaBytes(const std::string&amp;amp; filePath, size_t chunkSizeMegaBytes)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Loads a JSON Lines file and splits it into chunks based on a maximum chunk size (in megabytes).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cuJSONResult parse_standard_json(cuJSONInput input)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Parses a Standard JSON file after it has been loaded into a &lt;code&gt;cuJSONInput&lt;/code&gt; structure.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cuJSONResult parse_json_lines(cuJSONLinesInput input)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Parses a JSON Lines file after it has been loaded into a &lt;code&gt;cuJSONLinesInput&lt;/code&gt; structure.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div&gt;&lt;h3&gt;Understanding cuJSONInput, cuJSONLinesInput and cuJSONResult Structures&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;These are the primary data structures for interacting with the cuJSON parser:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cuJSONInput&lt;/code&gt;:
This structure defines the input format expected by the cuJSON parsing functions. It&amp;#39;s designed to be a simple wrapper around raw byte data for Standard JSON.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;struct cuJSONInput {
    uint8_t* data;                          // Pointer to the raw JSON data buffer
    size_t size;                            // The total size (in bytes) of the JSON data in the buffer.
};&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cuJSONLinesInput&lt;/code&gt;:
This structure defines the input format expected by the cuJSON parsing functions. It&amp;#39;s designed to be a simple wrapper around raw byte data for JSON Lines.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;struct cuJSONLinesInput {
    uint8_t* data;                          // pointer to the data buffer
    size_t chunkCount;                      // number of chunks in the parser
    size_t size;                            // size of the input data
    std::vector&amp;lt;uint8_t*&amp;gt; chunks;           // vector of pointers to each chunk
    std::vector&amp;lt;size_t&amp;gt; chunksSize;         // vector of size to each chunk
};&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cuJSONResult&lt;/code&gt;:
This comprehensive structure encapsulates the output of the GPU-based JSON parsing. It provides the necessary pointers and metadata to reconstruct and navigate the parsed JSON hierarchy.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;struct cuJSONResult {
    uint8_t* inputJSON;                     // Raw JSON pointer metadata
    int chunkCount;                         // Number of parsed chunks
    int bufferSize;                         // Parser/iterator buffer metadata
    std::vector&amp;lt;int&amp;gt; resultSizes;           // Structural result size for each chunk
    std::vector&amp;lt;int&amp;gt; resultSizesPrefix;     // Prefix sums of per-chunk result sizes
    int32_t* structural;                    // Byte positions of JSON structural characters
    int32_t* pair_pos;                      // Matching closing index for each opening structure
    int depth;                              // Maximum nesting-depth metadata
    int totalResultSize;                    // Combined structural output size
    int fileSize;                           // Structural result span, including boundary entries
};&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;🗂️ Query Iterator &lt;/h2&gt;&lt;/div&gt;&lt;p&gt;After parsing, use &lt;code&gt;cuJSONIterator&lt;/code&gt; for Standard JSON or &lt;code&gt;cuJSONLinesIterator&lt;/code&gt; for JSON Lines. Both iterators use the precomputed &lt;code&gt;pair_pos&lt;/code&gt; and &lt;code&gt;structural&lt;/code&gt; arrays to skip nested structures and navigate to keys or array elements efficiently.&lt;/p&gt;&lt;div&gt;&lt;h3&gt;Core APIs&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;The iterator classes share the core navigation methods, with two additional helpers available only for JSON Lines.&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Initialize the Iterator:
Create the iterator matching the parser result and pass the original file path as a C string.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;pre&gt;cuJSONIterator &lt;span&gt;standardIterator&lt;/span&gt;(&amp;amp;parsed_array, filePath.c_str());
cuJSONLinesIterator &lt;span&gt;linesIterator&lt;/span&gt;(&amp;amp;parsed_array, filePath.c_str());&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;Traverse and Extract Data: Once initialized, you can use the iterator&amp;#39;s methods to move through the JSON structure and retrieve information.&lt;/li&gt;
&lt;/ol&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;API Method&lt;/th&gt;
&lt;th&gt;Availability&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;int gotoKey(std::string key)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Both&lt;/td&gt;
&lt;td&gt;Moves to the value associated with &lt;code&gt;key&lt;/code&gt; in the current object.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;int gotoArrayIndex(int index)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Both&lt;/td&gt;
&lt;td&gt;Moves to an element in the current array.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;int increamentIndex(int index)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Both&lt;/td&gt;
&lt;td&gt;Advances by &lt;code&gt;index&lt;/code&gt; positions in the structural array. This spelling is part of the current public API.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;int gotoNextSibling(int index)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;JSON Lines&lt;/td&gt;
&lt;td&gt;Moves to another element in the current array.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bool checkKeyValue(std::string key, std::string value)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;JSON Lines&lt;/td&gt;
&lt;td&gt;Tests whether the current object contains the key-value pair.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;std::string getKey()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Both&lt;/td&gt;
&lt;td&gt;Returns the key at the current iterator position.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;std::string getValue()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Both&lt;/td&gt;
&lt;td&gt;Returns the value at the current iterator position.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;void reset()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Both&lt;/td&gt;
&lt;td&gt;Resets the iterator to the first structural entry.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;void freeJson()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Both&lt;/td&gt;
&lt;td&gt;Releases the iterator and parsed-result allocations.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;p&gt;For the bundled Standard JSON sample, enter the synthetic root and then the first array element before selecting &lt;code&gt;lang&lt;/code&gt;:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;standardIterator.gotoArrayIndex(&lt;span&gt;0&lt;/span&gt;);
standardIterator.gotoArrayIndex(&lt;span&gt;0&lt;/span&gt;);
standardIterator.gotoKey(&lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;lang&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;);
std::string value = standardIterator.getValue();&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For the bundled JSON Lines sample, select the first record and then its top-level &lt;code&gt;lang&lt;/code&gt; field:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;linesIterator.gotoArrayIndex(&lt;span&gt;0&lt;/span&gt;);
linesIterator.gotoKey(&lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;lang&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;);
std::string value = linesIterator.getValue();&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;Call &lt;code&gt;freeJson()&lt;/code&gt; on the iterator when processing is complete:&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;pre&gt;standardIterator.freeJson();
&lt;span&gt;&lt;span&gt;//&lt;/span&gt; or&lt;/span&gt;
linesIterator.freeJson();&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;Examples&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;For a variety of usage examples, please refer to the files located in the &lt;code&gt;paper_reproduced/query_example/&lt;/code&gt; directory.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>GitHub - eyesecurity/wp2shell-compromise-scanner-plugin: Read-only WordPress plugin that scans for artifacts of the wp2shell exploit chain (CVE-2026-63030 / ...</title>
<link>https://github.com/eyesecurity/wp2shell-compromise-scanner-plugin</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/ad28bc8820c4d1e955241d758197acddc5ec88193c1d40e3bbac88ee65026314/eyesecurity/wp2shell-compromise-scanner-plugin"></enclosure>
<guid isPermaLink="false">HNwGGomeqab8sEyAbfd6iMRnBniIOzolPC6Efg==</guid>
<pubDate>Fri, 24 Jul 2026 18:42:26 +0000</pubDate>
<description>Read-only WordPress plugin that scans for artifacts of the wp2shell exploit chain (CVE-2026-63030 / CVE-2026-60137) - eyesecurity/wp2shell-compromise-scanner-plugin</description>
<content:encoded>&lt;div&gt;&lt;h1&gt;Compromise Scanner for wp2shell (read-only)&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;A standalone, &lt;strong&gt;read-only&lt;/strong&gt; WordPress plugin that scans your database and plugin directory for signs
that the &lt;strong&gt;wp2shell&lt;/strong&gt; core chain (CVE-2026-63030 + CVE-2026-60137) was exploited — even if it
happened weeks ago or the attacker cleaned up. &lt;strong&gt;It changes nothing on your site.&lt;/strong&gt; It is safe to run
on any install, patched or not.&lt;/p&gt;&lt;blockquote&gt;
&lt;p&gt;This plugin does NOT mitigate the vulnerability. To temporarily protect an unpatched site, use the
separate &lt;strong&gt;wp2shell Temporary Hotpatch&lt;/strong&gt; (or just update core). Update to 6.9.5 / 7.0.2 / 6.8.6 as
the real fix.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/eyesecurity/wp2shell-compromise-scanner-plugin/blob/main/assets/screenshot-scan-screen.png&quot;&gt;&lt;img src=&quot;https://github.com/eyesecurity/wp2shell-compromise-scanner-plugin/raw/main/assets/screenshot-scan-screen.png&quot; alt=&quot;The scan screen: version status, forensic verdict and score, and severity-graded findings&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Get it&lt;/h2&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Download:&lt;/strong&gt; &lt;a href=&quot;https://github.com/eyesecurity/wp2shell-compromise-scanner-plugin/releases/latest/download/compromise-scanner-for-wp2shell.zip&quot;&gt;latest release as .zip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WordPress plugin directory:&lt;/strong&gt; &lt;em&gt;(link goes live once the plugin is approved on WordPress.org)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h2&gt;Install&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Download the zip above, then Plugins → Add New → Upload Plugin → select the zip → Install →
&lt;strong&gt;Activate&lt;/strong&gt;. Open &lt;strong&gt;wp2shell Scanner&lt;/strong&gt; in the admin menu, then click &lt;strong&gt;Run scan&lt;/strong&gt; to see the scored
verdict and the severity-graded findings. Use &lt;strong&gt;Export report (.zip)&lt;/strong&gt; to download the result plus the raw
database rows an investigator needs — the exploit hides its SQL injection and admin creation in a
request body that web servers don&amp;#39;t log, so those DB artifacts are the primary evidence. The archive
holds the report (JSON + text), the relevant &lt;code&gt;oembed_cache&lt;/code&gt; / &lt;code&gt;customize_changeset&lt;/code&gt; / suspect-post /
suspect-user / orphaned-usermeta rows and changed plugin files (never password hashes), and a
&lt;code&gt;LOG-COLLECTION-GUIDE.txt&lt;/code&gt; for the server-side logs to gather by hand. Remove the plugin any time with
the &lt;strong&gt;Remove this plugin&lt;/strong&gt; button on the scan screen (or deactivate/delete normally).&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Verdict&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Weighted, read-only indicators map to a score: &lt;strong&gt;50+ Multiple indicators, 25–49 Some indicators,
under 25 No indicators.&lt;/strong&gt; The strongest signal is the &lt;code&gt;oembed_cache&lt;/code&gt; group (loopback reference /
count-of-three / date window), plus high-parent-ID and PoC-titled posts, &lt;code&gt;customize_changeset&lt;/code&gt;
entries, &lt;code&gt;wp2_&lt;/code&gt; logins and &lt;code&gt;@wp2shell.invalid&lt;/code&gt; emails, new non-founder admins, orphaned usermeta,
&lt;code&gt;wp_users&lt;/code&gt; id gaps, and leftover &lt;code&gt;wp2shell_*&lt;/code&gt; webshell files or directories. It does not rely on any
single naming convention.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Important — please read&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;This scanner is &lt;strong&gt;best-effort, not proof.&lt;/strong&gt; It looks for &lt;em&gt;known&lt;/em&gt; leftover traces of one specific
exploit chain, so its output can be wrong in both directions:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;Some indicators&lt;/strong&gt; or &lt;strong&gt;Multiple indicators&lt;/strong&gt; verdict is &lt;strong&gt;not&lt;/strong&gt; confirmation of a breach —
indicators can have innocent causes (&lt;strong&gt;false positives&lt;/strong&gt;), and every flagged item must be verified
by a human.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;No indicators&lt;/strong&gt; verdict is &lt;strong&gt;not&lt;/strong&gt; a guarantee — a careful attacker can remove their own traces
and a different or future attack may leave none (&lt;strong&gt;false negatives&lt;/strong&gt;).&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;It is &lt;strong&gt;not&lt;/strong&gt; a substitute for updating WordPress core or for a proper incident investigation by a
qualified professional. Do not make remediation, disclosure, or &amp;quot;all clear&amp;quot; decisions on this tool&amp;#39;s
output alone.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Legal&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;This software is provided &lt;strong&gt;&amp;quot;as is&amp;quot;, without warranty of any kind&lt;/strong&gt;, express or implied, including
merchantability, fitness for a particular purpose, and non-infringement. To the maximum extent
permitted by law, &lt;strong&gt;the authors, contributors, and distributors accept no liability&lt;/strong&gt; for any damage,
data loss, downtime, false positives, false negatives, missed detections, or for any action taken or
not taken based on its output — direct, indirect, incidental, or consequential. &lt;strong&gt;You are solely
responsible&lt;/strong&gt; for ensuring you are authorized to run it on a given site and for independently
verifying its results. Use entirely at your own risk. Licensed under the GNU GPL v3 (see &lt;code&gt;LICENSE&lt;/code&gt;).&lt;/p&gt;</content:encoded>
</item>
<item>
<title>GitHub - Icex0/wp2shell-poc: wp2shell (CVE-2026-63030 &amp; CVE-2026-60137) - full RCE chain · GitHub</title>
<link>https://github.com/Icex0/wp2shell-poc</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/705104987cdad7939025a6bf05d6519a1eefaaba9bd1fe232dd3913b858c7acc/Icex0/wp2shell-poc"></enclosure>
<guid isPermaLink="false">NSB41QZ5PBEhprznWdXfV1zc8uuMhBd4mZkVJQ==</guid>
<pubDate>Fri, 24 Jul 2026 18:42:26 +0000</pubDate>
<description>wp2shell (CVE-2026-63030 &amp; CVE-2026-60137) - full RCE chain - Icex0/wp2shell-poc</description>
<content:encoded>&lt;div&gt;&lt;h1&gt;wp2shell-poc&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;Independent proof-of-concept for the unauthenticated WordPress REST batch route-confusion
SQL injection associated with Searchlight Cyber&amp;#39;s wp2shell advisory.&lt;/p&gt;&lt;p&gt;This repository is not Searchlight Cyber&amp;#39;s official checker. &lt;code&gt;check&lt;/code&gt; confirms the SQLi path,
&lt;code&gt;read&lt;/code&gt; demonstrates database read, and &lt;code&gt;shell&lt;/code&gt; opens a plugin-backed command shell either with
supplied administrator credentials or by first exercising the SQLi-to-admin bridge.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/Icex0/wp2shell-poc/blob/main/docs/shell.svg&quot;&gt;&lt;img src=&quot;https://github.com/Icex0/wp2shell-poc/raw/main/docs/shell.svg&quot; alt=&quot;wp2shell — the shell command exercising the pre-auth SQLi-to-admin bridge&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Detection / IoCs:&lt;/strong&gt; Elastic Security Labs and Eye Security published detection guidance and indicators for this chain. See the &lt;a href=&quot;https://www.elastic.co/security-labs/wp2shell-wordpress-rce-detection-elastic-defend&quot;&gt;Elastic write-up&lt;/a&gt; and the &lt;a href=&quot;https://labs.eye.security/wp2shell-defenders-guide/&quot;&gt;Eye Security defenders guide&lt;/a&gt;.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Affected versions&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Searchlight Cyber&amp;#39;s advisory lists these wp2shell RCE exposure ranges:&lt;/p&gt;&lt;div&gt;&lt;h2&gt;How it works&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;The REST batch endpoint (&lt;code&gt;/batch/v1&lt;/code&gt;) is unauthenticated and runs several sub-requests in one
call, relying on each sub-request being validated and permission-checked on its own.&lt;/p&gt;&lt;p&gt;&lt;code&gt;serve_batch_request_v1()&lt;/code&gt; builds two parallel arrays — &lt;code&gt;$matches&lt;/code&gt; (the matched handler per
sub-request) and &lt;code&gt;$validation&lt;/code&gt; (the validation result per sub-request) — then indexes both by
the same offset when dispatching. A sub-request whose path fails &lt;code&gt;wp_parse_url()&lt;/code&gt; is appended to
&lt;code&gt;$validation&lt;/code&gt; but not to &lt;code&gt;$matches&lt;/code&gt;, so the arrays fall out of step and a sub-request is
dispatched under a &lt;strong&gt;different&lt;/strong&gt; sub-request&amp;#39;s handler. That is the route confusion.&lt;/p&gt;&lt;p&gt;The PoC nests the primitive twice:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;A &lt;code&gt;POST /wp/v2/posts&lt;/code&gt; request that carries a &lt;code&gt;requests&lt;/code&gt; body is dispatched under the batch
handler itself. Having been validated as a posts request, its &lt;code&gt;requests&lt;/code&gt; list is never checked
against the batch schema, so its sub-requests may use &lt;code&gt;GET&lt;/code&gt; — the method allow-list is
bypassed.&lt;/li&gt;
&lt;li&gt;Inside that inner batch, a &lt;code&gt;GET /wp/v2/posts/999999&lt;/code&gt; item-route request carries posts collection
query params such as &lt;code&gt;author_exclude&lt;/code&gt;, &lt;code&gt;orderby&lt;/code&gt;, and &lt;code&gt;per_page&lt;/code&gt;. The &lt;code&gt;999999&lt;/code&gt; ID does not need
to exist; it is just an unlikely post ID used to match the item route, whose schema does not
validate those collection-only params. The desync then dispatches the same request under posts
&lt;code&gt;get_items()&lt;/code&gt;, where &lt;code&gt;author_exclude&lt;/code&gt; maps to the &lt;code&gt;WP_Query&lt;/code&gt; &lt;code&gt;author__not_in&lt;/code&gt; query var, which
the vulnerable build interpolates into SQL as a string.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;The result is a boolean- and time-based blind SQL injection reachable pre-authentication. This PoC
also includes the UNION fake-post primitive used by the SQLi-to-admin chain.&lt;/p&gt;&lt;p&gt;The RCE path implemented here is:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Use UNION fake &lt;code&gt;wp_posts&lt;/code&gt; rows to render attacker-controlled content through a posts collection.
The render bridge uses the &lt;code&gt;/wp/v2/posts/999999&lt;/code&gt; item-route source — the same route the SQLi read
uses to reach &lt;code&gt;get_items()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Use that render to make WordPress create real oEmbed cache posts.&lt;/li&gt;
&lt;li&gt;Recover those real cache post IDs through the SQLi.&lt;/li&gt;
&lt;li&gt;In one poisoned batch request, recast those IDs as a customizer changeset, navigation item, and
request hook shape.&lt;/li&gt;
&lt;li&gt;Let the same request reach &lt;code&gt;POST /wp/v2/users&lt;/code&gt;, creating a generated administrator.&lt;/li&gt;
&lt;li&gt;Log in as that generated administrator and use plugin upload behavior to run a command.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Steps 1–5 are pre-authentication; the command-execution step is authenticated admin plugin upload.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Requirements&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Python 3.8+ and the standard library. No third-party dependencies.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Usage&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Run it from the repository directory:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;./wp2shell.py &amp;lt;command&amp;gt; &amp;lt;url&amp;gt; [options]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or &lt;code&gt;pip install .&lt;/code&gt; to get a &lt;code&gt;wp2shell&lt;/code&gt; command on your &lt;code&gt;PATH&lt;/code&gt;.&lt;/p&gt;&lt;div&gt;&lt;h3&gt;check — non-destructive vulnerability check&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;Prints passive WordPress markers and public version hints first, then sends a benign batch marker
probe. A vulnerable batch implementation returns HTTP 207 with the route-confusion marker pattern
&lt;code&gt;parse_path_failed&lt;/code&gt;, &lt;code&gt;block_cannot_read&lt;/code&gt;, and &lt;code&gt;rest_batch_not_allowed&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;The marker probe is based on the WordPress core fix. The malformed &lt;code&gt;///&lt;/code&gt; request creates
&lt;code&gt;parse_path_failed&lt;/code&gt;; a &lt;code&gt;/wp/v2/posts&lt;/code&gt; request acts as a batch-allowed spacer; the
&lt;code&gt;/wp/v2/block-renderer/...&lt;/code&gt; route is not batch-allowed but returns &lt;code&gt;block_cannot_read&lt;/code&gt; if its
handler is reached anonymously; &lt;code&gt;/batch/v1&lt;/code&gt; gives &lt;code&gt;rest_batch_not_allowed&lt;/code&gt;. On vulnerable builds
the parse error shifts the batch handler arrays out of step, so the spacer request is dispatched
under the block-renderer handler. Fixed builds keep the arrays aligned, so this exact all-three
pattern should not appear for the crafted probe.&lt;/p&gt;&lt;p&gt;By default, &lt;code&gt;check&lt;/code&gt; stops there and does not send an SQLi payload. Use &lt;code&gt;--confirm-sqli&lt;/code&gt; when you
also want an active SQLi confirmation. The confirmation tries the UNION read primitive first and
falls back to paired timing probes if UNION reflection is unavailable.&lt;/p&gt;&lt;p&gt;The signals are independent: a version hint is only a hint, the marker pattern shows route
confusion, and &lt;code&gt;--confirm-sqli&lt;/code&gt; shows a payload reached the database. A WAF can block the payload,
so a failed confirmation doesn&amp;#39;t prove the bug is absent.&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;./wp2shell.py check http://target
./wp2shell.py check targets.txt          # scan every URL in the file&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;read — extract data through SQL injection&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;./wp2shell.py read http://target                      # server fingerprint
./wp2shell.py read http://target --preset users       # user logins and password hashes
./wp2shell.py read http://target --query &amp;quot;SELECT @@version&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;By default extraction is &lt;code&gt;--technique auto&lt;/code&gt;, which tries the available methods in this order:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;union&lt;/strong&gt; — forges a fake &lt;code&gt;WP_Post&lt;/code&gt; row via &lt;code&gt;UNION&lt;/code&gt; and reads its title back from the REST
response as &lt;code&gt;||HEX(value)||&lt;/code&gt;. The payload uses the same &lt;code&gt;/wp/v2/posts/999999&lt;/code&gt; source route with
&lt;code&gt;orderby=none&lt;/code&gt; and &lt;code&gt;per_page=500&lt;/code&gt; so the fake row survives as a rendered post. One request per
value.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;error&lt;/strong&gt; — &lt;code&gt;EXTRACTVALUE&lt;/code&gt;/&lt;code&gt;UPDATEXML&lt;/code&gt; leak ~15 bytes per request, when the target reflects
MySQL errors (e.g. &lt;code&gt;WP_DEBUG_DISPLAY&lt;/code&gt; on).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;blind&lt;/strong&gt; — boolean binary search, ~8 requests per character; reads the posts collection
&lt;code&gt;X-WP-Total&lt;/code&gt; header as the true/false signal and needs no reflected value.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Force one with &lt;code&gt;--technique union|error|blind&lt;/code&gt;. These read paths do not write database rows.&lt;/p&gt;&lt;div&gt;&lt;h3&gt;shell — command execution&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;With &lt;code&gt;--user&lt;/code&gt; and &lt;code&gt;--password&lt;/code&gt;, &lt;code&gt;shell&lt;/code&gt; logs in with supplied administrator credentials and uses
WordPress plugin upload behavior.&lt;/p&gt;&lt;p&gt;Without credentials, &lt;code&gt;shell&lt;/code&gt; first runs the pre-auth SQLi-to-admin bridge, logs in as the generated
administrator, then uploads the plugin shell.&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;./wp2shell.py shell http://target --user admin --password &amp;#39;&amp;lt;recovered&amp;gt;&amp;#39; --cmd id
./wp2shell.py shell http://target --user admin --password &amp;#39;&amp;lt;recovered&amp;gt;&amp;#39; -i   # interactive shell
./wp2shell.py shell http://target --cmd id                                   # pre-auth bridge
./wp2shell.py shell http://target -i                                         # pre-auth interactive&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;shell&lt;/code&gt; uploads a plugin webshell (locked behind a random path and a per-run token) and prints its
path. The uploaded webshell is removed automatically. When the pre-auth bridge creates an
administrator, that generated account is removed automatically after the shell session finishes.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Options&lt;/h2&gt;&lt;/div&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Applies to&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--proxy URL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;all&lt;/td&gt;
&lt;td&gt;Route traffic through an HTTP proxy (for example, Burp).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--timeout N&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;all&lt;/td&gt;
&lt;td&gt;Request timeout in seconds.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--sleep N&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;check&lt;/td&gt;
&lt;td&gt;Delay used by the timing fallback for &lt;code&gt;--confirm-sqli&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--samples N&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;check&lt;/td&gt;
&lt;td&gt;Timing pairs used by the timing fallback for &lt;code&gt;--confirm-sqli&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--confirm-sqli&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;check&lt;/td&gt;
&lt;td&gt;Also send an active SQLi confirmation payload.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--preset&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;read&lt;/td&gt;
&lt;td&gt;&lt;code&gt;fingerprint&lt;/code&gt; or &lt;code&gt;users&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--technique&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;read&lt;/td&gt;
&lt;td&gt;&lt;code&gt;auto&lt;/code&gt; (default), &lt;code&gt;union&lt;/code&gt; (in-band, forges a fake post), &lt;code&gt;error&lt;/code&gt; (in-band, needs visible DB errors), or &lt;code&gt;blind&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--query&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;read&lt;/td&gt;
&lt;td&gt;A scalar SQL expression to read.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--prefix&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;read&lt;/td&gt;
&lt;td&gt;Database table prefix (default &lt;code&gt;wp_&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--max-length N&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;read&lt;/td&gt;
&lt;td&gt;Maximum characters read per value (default 128).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--user&lt;/code&gt; / &lt;code&gt;--password&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;shell&lt;/td&gt;
&lt;td&gt;Optional admin credentials; omit both to use the pre-auth bridge.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--cmd&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;shell&lt;/td&gt;
&lt;td&gt;Command to run (omit when using &lt;code&gt;-i&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-i&lt;/code&gt; / &lt;code&gt;--interactive&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;shell&lt;/td&gt;
&lt;td&gt;Open an interactive shell after deploying.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div&gt;&lt;h2&gt;Remediation&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Update to WordPress 7.0.2, or 6.9.5 if the site is on the 6.9 branch. Until then,
block both &lt;code&gt;/wp-json/batch/v1&lt;/code&gt; and the &lt;code&gt;rest_route=/batch/v1&lt;/code&gt; query parameter at
the edge, or require authentication for the batch endpoint via the
&lt;code&gt;rest_pre_dispatch&lt;/code&gt; filter.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Legal&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;For authorized security testing only. Use it exclusively against systems you own or have explicit
written permission to test. No warranty is provided and no liability is accepted for misuse.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;References&lt;/h2&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;WordPress 7.0.2 release announcement — &lt;a href=&quot;https://wordpress.org/news/2026/07/wordpress-7-0-2-release/&quot;&gt;https://wordpress.org/news/2026/07/wordpress-7-0-2-release/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Searchlight Cyber wp2shell advisory — &lt;a href=&quot;https://slcyber.io/research-center/wp2shell-pre-authentication-rce-in-wordpress-core/&quot;&gt;https://slcyber.io/research-center/wp2shell-pre-authentication-rce-in-wordpress-core/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hackify — wp2shell technical analysis — &lt;a href=&quot;https://hackify.nl/en/blog/wp2shell-wordpress-core-rce/&quot;&gt;https://hackify.nl/en/blog/wp2shell-wordpress-core-rce/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;sergiointel/wp2shell-poc SQLi-to-admin bridge — &lt;a href=&quot;https://github.com/sergiointel/wp2shell-poc&quot;&gt;https://github.com/sergiointel/wp2shell-poc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Elastic Security Labs — wp2shell detection &amp;amp; IoCs — &lt;a href=&quot;https://www.elastic.co/security-labs/wp2shell-wordpress-rce-detection-elastic-defend&quot;&gt;https://www.elastic.co/security-labs/wp2shell-wordpress-rce-detection-elastic-defend&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Eye Security — wp2shell defenders guide — &lt;a href=&quot;https://labs.eye.security/wp2shell-defenders-guide/&quot;&gt;https://labs.eye.security/wp2shell-defenders-guide/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
</item>
<item>
<title>GitHub - NVIDIA-AI-IOT/jetson-device-skills: Foundational Agent Skills for NVIDIA Jetson Device · GitHub</title>
<link>https://github.com/NVIDIA-AI-IOT/jetson-device-skills</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/5b339112f7c5e15066a8d3891af6f04b155521412828e726bd6eb3e808d6ab65/NVIDIA-AI-IOT/jetson-device-skills"></enclosure>
<guid isPermaLink="false">CNG_VWlZErSVF9lSwrOYZmDBQdrnONS5JYY_kw==</guid>
<pubDate>Fri, 24 Jul 2026 18:17:26 +0000</pubDate>
<description>Foundational Agent Skills for NVIDIA Jetson Device - NVIDIA-AI-IOT/jetson-device-skills</description>
<content:encoded>&lt;div&gt;&lt;h1&gt;jetson-device-skills&lt;/h1&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;Description&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;jetson-device-skills&lt;/code&gt; is a catalog of &lt;a href=&quot;https://agentskills.io/&quot;&gt;Agent Skills&lt;/a&gt; for working with a live NVIDIA Jetson device after it has booted. The skills are intended to be present on the Jetson and provide agent-readable instructions plus small helper scripts for diagnostics, memory auditing, runtime selection, model serving, benchmarking, packaging guidance, and related Jetson device workflows.&lt;/p&gt;&lt;p&gt;This repository is device-side. Skills here run on the Jetson, inspect the Jetson, or provide commands that an agent should execute on the Jetson. BSP customization before flashing belongs in the sibling &lt;a href=&quot;https://github.com/NVIDIA-AI-IOT/jetson-bsp-skills&quot;&gt;&lt;code&gt;jetson-bsp-skills&lt;/code&gt;&lt;/a&gt; repository.&lt;/p&gt;&lt;p&gt;This project is currently not accepting contributions.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Included Skills&lt;/h2&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;jetson-diagnostic&lt;/code&gt; captures a read-only device health snapshot, including Jetson identity, memory, GPU, thermal, power, storage, services, and top processes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jetson-memory-audit&lt;/code&gt; measures DRAM/NvMap usage and verifies before/after memory reclamation with live audit data.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jetson-headless-mode&lt;/code&gt; helps turn a Jetson into a headless edge node by disabling the desktop and safe background services.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jetson-inference-mem-tune&lt;/code&gt; recommends serving runtimes and memory flags for vLLM, SGLang, llama.cpp, and TensorRT Edge-LLM.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jetson-llm-serve&lt;/code&gt; provides Jetson-appropriate vLLM and SGLang serving recipes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jetson-llm-benchmark&lt;/code&gt; emits structured benchmark metrics for vLLM, llama.cpp, and &lt;code&gt;Ollama&lt;/code&gt; paths.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jetson-package&lt;/code&gt; guides Jetson-specific package, wheel, and container choices.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jetson-speculative-decoding&lt;/code&gt; adds Jetson-specific EAGLE-3 or draft-model speculative decoding guidance for vLLM.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h2&gt;Installation&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Clone the repository on the Jetson device:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;git clone https://github.com/NVIDIA-AI-IOT/jetson-device-skills.git
&lt;span&gt;cd&lt;/span&gt; jetson-device-skills&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Install the skills into the agent skill directories on the Jetson:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;./install.sh&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;By default, &lt;code&gt;install.sh&lt;/code&gt; links the skills into the user-level skill roots for Claude Code, Codex, and Cursor:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.claude/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.agents/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.cursor/skills&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;You can select specific targets or copy files instead of creating symbolic links:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;./install.sh --targets claude,cursor
./install.sh --targets cursor-project --project /path/to/project
./install.sh --copy
./install.sh --force&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For NemoClaw/OpenClaw sandboxes:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;./install.sh --targets nemoclaw --nemoclaw-sandbox jetson-skills&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Restart the agent session after installation so the new skill entries are picked up. If your agent expects a different skill directory, copy or sync the &lt;code&gt;skills/&lt;/code&gt; directory into that location. Keep each skill as a complete directory containing its &lt;code&gt;SKILL.md&lt;/code&gt;, &lt;code&gt;scripts/&lt;/code&gt;, and &lt;code&gt;references/&lt;/code&gt; content.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Usage&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Each skill lives under &lt;code&gt;skills/&amp;lt;skill-name&amp;gt;/&lt;/code&gt; and starts with a &lt;code&gt;SKILL.md&lt;/code&gt; file. After &lt;code&gt;install.sh&lt;/code&gt; links or copies the skills into the agent&amp;#39;s skill directory, agent runtimes such as Cursor, Claude Code, Codex, or NemoClaw/OpenClaw can discover the skills from their frontmatter descriptions and follow the instructions in the selected skill.&lt;/p&gt;&lt;p&gt;Some skills include helper scripts under &lt;code&gt;scripts/&lt;/code&gt;, but users normally do not need to call those scripts directly. The agent should invoke the relevant helper when a skill asks for live Jetson data, then use the returned output as the source of truth.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Repository Layout&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;jetson-device-skills/
├── README.md
├── LICENSE
├── install.sh
├── agents/
└── skills/
    ├── jetson-diagnostic/
    ├── jetson-headless-mode/
    ├── jetson-inference-mem-tune/
    ├── jetson-llm-benchmark/
    ├── jetson-llm-serve/
    ├── jetson-memory-audit/
    ├── jetson-package/
    └── jetson-speculative-decoding/&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;License&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;This code is dual-licensed with documentation under the CC-BY-4.0 AND source code under Apache-2.0 license terms. See &lt;a href=&quot;https://github.com/NVIDIA-AI-IOT/jetson-device-skills/blob/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt;.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>GitHub - NVIDIA-AI-IOT/jetson-bsp-skills: Agentic Skills for Jetson BSP Customization · GitHub</title>
<link>https://github.com/NVIDIA-AI-IOT/jetson-bsp-skills</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/2a3c90dbba5f33bee4c8001d22a76cb6c5e36d537dcdfe973454a77c572d6227/NVIDIA-AI-IOT/jetson-bsp-skills"></enclosure>
<guid isPermaLink="false">UGBDNKTWIaikMOH4pe7iskCyTGFgawSQFZ1SeA==</guid>
<pubDate>Fri, 24 Jul 2026 18:17:26 +0000</pubDate>
<description>Agentic Skills for Jetson BSP Customization. Contribute to NVIDIA-AI-IOT/jetson-bsp-skills development by creating an account on GitHub.</description>
<content:encoded>&lt;div&gt;&lt;h1&gt;Agentic Skills for Jetson BSP Customization&lt;/h1&gt;&lt;/div&gt;&lt;p&gt;This repository contains Claude Code skills for setting up and
customizing an NVIDIA Jetson Linux Board Support Package (BSP).&lt;/p&gt;&lt;p&gt;The goal is to let an engineer work from a normal project workspace:
pick a Jetson target, prepare the BSP image and sources, make BSP
customizations through guided skills, then promote, flash, and validate
the result.&lt;/p&gt;&lt;p&gt;This project is currently not accepting contributions.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Disclaimer&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;These skills help automate Jetson BSP setup and customization, but they
do not replace NVIDIA official documentation or engineering review.
Review generated plans, commands, diffs, and commit messages before
accepting them. Flashing can erase device storage or leave a target
temporarily unbootable, so keep backups and verify the active target,
BSP release, and hardware setup before deploy steps.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;What This Repo Provides&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;This repo is a skill bundle. It does not contain a Jetson BSP image,
source tarballs, or board documents. Instead, it installs instructions,
templates, and helper references into a workspace so Claude Code can
guide the BSP workflow.&lt;/p&gt;&lt;p&gt;The skills cover four broad stages:&lt;/p&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stage&lt;/th&gt;
&lt;th&gt;What happens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;Create/select the active target, download or register BSP inputs, extract the image, initialize sources, and link documents.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customize&lt;/td&gt;
&lt;td&gt;Apply BSP changes such as pinmux, USB, PCIe, UPHY, clocks, fan, nvpmodel, camera, MGBE, or memory tuning.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Build&lt;/td&gt;
&lt;td&gt;Rebuild source-side artifacts when a customization changed kernel-side sources.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deploy&lt;/td&gt;
&lt;td&gt;Promote workspace changes into the BSP image, flash the device, and validate the result.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div&gt;&lt;h2&gt;Skills at a Glance&lt;/h2&gt;&lt;/div&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;One-line introduction&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-quick-start&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Starts the setup flow, asks the core questions, and dispatches the right setup skills.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-init-target&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creates a target-platform profile and updates the active target pointer.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-set-target&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Switches the active target pointer to an existing profile.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-download-bsp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Downloads Jetson Linux BSP artifacts for the Auto Setup path.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-init-image&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Extracts the BSP image, applies binaries, and records the image path.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-init-source&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Initializes the source workspace, overlay tracker, BSP sources, and toolchain.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-link-docs&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Registers local Jetson reference documents in the active profile.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-generate-kb&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Builds a per-target markdown knowledge base from the prepared workspace.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customization&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-derive-carrier&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Forks reference carrier files and scaffolds a custom-carrier overlay.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customization&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-customize-pinmux&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Edits pinmux DTSI for SoC pin function, direction, and pull settings.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customization&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-customize-usb&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Enables or disables Jetson USB2/USB3 SS ports via kernel-DT overlay.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customization&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-customize-pcie&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Configures PCIe controller mode and link speed on the carrier.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customization&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-customize-uphy&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Allocates UPHY lanes across PCIe/USB3/MGBE on custom carriers.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customization&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-customize-mgbe&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Configures MGBE Ethernet controller, PHY, and MAC settings.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customization&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-customize-camera&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Edits camera device tree overlays for CSI sensors and tegra-camera-platform.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customization&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-customize-clocks&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Edits BSP-side clock, DVFS, governor, and BPMP DTB settings.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customization&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-customize-fan&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Edits nvfancontrol profiles, curves, governors, and boot defaults.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customization&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-customize-nvpmodel&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Edits nvpmodel power modes, clamps, and boot defaults.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customization&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-optimize-memory&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reclaims DRAM by disabling or resizing unused reserved-memory consumers.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Build&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-build-source&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Rebuilds DTBs, modules, or kernel artifacts from source-side changes.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deploy&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-promote-image&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Stages customized overlay files and build outputs into the BSP image.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deploy&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-flash-image&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Flashes a promoted BSP image to a Jetson DUT in recovery mode.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deploy&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-validate-image&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Runs static BSP checks and on-target validation after flashing.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inspection&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/jetson-print-bsp-info&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Prints a quick host-side summary of a Linux_for_Tegra BSP tree.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div&gt;&lt;h2&gt;Install the Skills Into a Workspace&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Clone this repository:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;git clone https://github.com/NVIDIA-AI-IOT/jetson-bsp-skills.git
&lt;span&gt;cd&lt;/span&gt; jetson-bsp-skills&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Install the skills into a workspace:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;./setup.sh --workspace &lt;span&gt;&amp;lt;&lt;/span&gt;workspace&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then start Claude Code from that workspace:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;cd&lt;/span&gt; &lt;span&gt;&amp;lt;&lt;/span&gt;workspace&lt;span&gt;&amp;gt;&lt;/span&gt;
claude&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Inside Claude Code, ask:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;help me setup the bsp customization workspace&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This should start &lt;code&gt;/jetson-quick-start&lt;/code&gt;, the recommended entry point
for new users and the easiest way to choose the right setup mode.&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Typical First Run&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;For a new user, the normal path is:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Install this skill bundle with &lt;code&gt;setup.sh&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Start Claude Code from the workspace.&lt;/li&gt;
&lt;li&gt;Ask &lt;code&gt;help me setup the bsp customization workspace&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Choose &lt;code&gt;Auto Setup&lt;/code&gt; for a fresh workspace, or &lt;code&gt;Guided Setup&lt;/code&gt; if you
already downloaded BSP inputs.&lt;/li&gt;
&lt;li&gt;Answer the platform, BSP release, and custom-carrier questions.&lt;/li&gt;
&lt;li&gt;Let quick-start run the setup chain.&lt;/li&gt;
&lt;li&gt;If using a custom carrier, run or allow &lt;code&gt;/jetson-derive-carrier&lt;/code&gt;
before customization skills.&lt;/li&gt;
&lt;li&gt;Run the needed &lt;code&gt;/jetson-customize-*&lt;/code&gt; skill.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;/jetson-promote-image&lt;/code&gt;, &lt;code&gt;/jetson-flash-image&lt;/code&gt;, and
&lt;code&gt;/jetson-validate-image&lt;/code&gt; when ready to deploy.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;h2&gt;License&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;This code is dual-licensed with documentation under the CC-BY-4.0 AND source code under Apache-2.0 license terms. See &lt;a href=&quot;https://github.com/NVIDIA-AI-IOT/jetson-bsp-skills/blob/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt;.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>GitHub - nusquama/n8nworkflows.xyz: N8N Workflows Catalog · GitHub</title>
<link>https://github.com/nusquama/n8nworkflows.xyz</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/6e2da18aa6623ab617f3b82af4c9d6f14e4fda5c3cb7372426a50b908f9e2f1f/nusquama/n8nworkflows.xyz"></enclosure>
<guid isPermaLink="false">5XEakrA5lWTPQURe5_GE-k_-fXAaE-VIqOk4kg==</guid>
<pubDate>Fri, 24 Jul 2026 18:16:26 +0000</pubDate>
<description>N8N Workflows Catalog. Contribute to nusquama/n8nworkflows.xyz development by creating an account on GitHub.</description>
<content:encoded>&lt;body&gt;
    &lt;div&gt;
      
      

    &lt;div&gt;
      Skip to content

      &lt;span&gt;
    
&lt;/span&gt;      
      





  
  
  






      

          

              





&lt;header&gt;
  &lt;h2&gt;Navigation Menu&lt;/h2&gt;

  

  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
        
      &lt;/div&gt;

      &lt;a href=&quot;https://github.com/&quot;&gt;
        
      &lt;/a&gt;

      &lt;div&gt;
          &lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fnusquama%2Fn8nworkflows.xyz&quot;&gt;
            Sign in
          &lt;/a&gt;
              &lt;div&gt;
            Appearance settings

  &lt;/div&gt;

      &lt;/div&gt;
    &lt;/div&gt;


    &lt;div&gt;
      &lt;div&gt;
          







  
  
  




        &lt;div&gt;
                



  &lt;div&gt;
      

    

    
&lt;div&gt;
  
      &lt;h1&gt;Search code, repositories, users, issues, pull requests...&lt;/h1&gt;
    &lt;div&gt;
      
          &lt;div&gt;        &lt;div&gt;
          
  
    &lt;div&gt;
      
        Search
      
      &lt;div&gt;
          &lt;span&gt;
            
          &lt;/span&gt;
        &lt;div&gt;
          
          &lt;div&gt;
            
            
          &lt;/div&gt;
        &lt;/div&gt;
          &lt;span&gt;
            &lt;span&gt;Clear&lt;/span&gt;
            

          &lt;/span&gt;
      &lt;/div&gt;
      



































































        &lt;div&gt;
                        

        &lt;/div&gt;
      &lt;div&gt;
        &lt;span&gt;
          
        &lt;/span&gt;
        
&lt;/div&gt;    &lt;/div&gt;
    

          &lt;div&gt;
            &lt;a href=&quot;https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax&quot;&gt;Search syntax tips&lt;/a&gt;            
          &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;

    &lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  
  &lt;div&gt;
    

  

    
    

  
    
  &lt;/div&gt;



            &lt;div&gt;
              &lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fnusquama%2Fn8nworkflows.xyz&quot;&gt;
                Sign in
              &lt;/a&gt;
            &lt;/div&gt;

              &lt;a href=&quot;https://github.com/signup?ref_cta=Sign+up&amp;amp;ref_loc=header+logged+out&amp;amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&amp;amp;source=header-repo&amp;amp;source_repo=nusquama%2Fn8nworkflows.xyz&quot;&gt;
                Sign up
              &lt;/a&gt;

                &lt;div&gt;
            Appearance settings

  &lt;/div&gt;

          
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

      &lt;div&gt;
  
        
        &lt;span&gt;You signed in with another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You signed out in another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You switched accounts on another tab or window. Reload to refresh your session.&lt;/span&gt;

    Dismiss alert


  
&lt;/div&gt;
    &lt;/div&gt;

  








    &lt;div&gt;




  
&lt;/div&gt;


    






  &lt;div&gt;
        &lt;div&gt;
    &lt;main&gt;
      
      








  

  &lt;div&gt;

      &lt;div&gt;

        &lt;div&gt;
            
  &lt;div&gt;
      
    
    &lt;span&gt;
      &lt;a href=&quot;https://github.com/nusquama&quot;&gt;
        nusquama
&lt;/a&gt;    &lt;/span&gt;
    &lt;span&gt;/&lt;/span&gt;
    &lt;strong&gt;
      &lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz&quot;&gt;n8nworkflows.xyz&lt;/a&gt;
    &lt;/strong&gt;

    &lt;span&gt;Public&lt;/span&gt;
  &lt;/div&gt;


        &lt;/div&gt;

        &lt;div&gt;
            &lt;ul&gt;
    
      

  &lt;li&gt;
            &lt;a href=&quot;https://github.com/login?return_to=%2Fnusquama%2Fn8nworkflows.xyz&quot;&gt;    Notifications
&lt;/a&gt;    You must be signed in to change notification settings

  &lt;/li&gt;

  &lt;li&gt;
          &lt;a href=&quot;https://github.com/login?return_to=%2Fnusquama%2Fn8nworkflows.xyz&quot;&gt;    Fork
    &lt;span&gt;645&lt;/span&gt;
&lt;/a&gt;
  &lt;/li&gt;

  &lt;li&gt;
        &lt;div&gt;
        &lt;a href=&quot;https://github.com/login?return_to=%2Fnusquama%2Fn8nworkflows.xyz&quot;&gt;    &lt;span&gt;
          Star
&lt;/span&gt;          &lt;span&gt;2.5k&lt;/span&gt;
&lt;/a&gt;&lt;/div&gt;
  &lt;/li&gt;

&lt;/ul&gt;

        &lt;/div&gt;
      &lt;/div&gt;

        &lt;div&gt;
&lt;/div&gt;


          

  &lt;/div&gt;
  




    &lt;div&gt;
    



    
      
    









  
  
  &lt;div&gt;  &lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz&quot;&gt;&lt;/a&gt; &lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;header&gt;&lt;div&gt;




&lt;h1&gt;nusquama/n8nworkflows.xyz&lt;/h1&gt;



&lt;/div&gt;&lt;/header&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz/branches&quot;&gt;&lt;span&gt;&lt;span&gt;Branches&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz/tags&quot;&gt;&lt;span&gt;&lt;span&gt;Tags&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz/branches&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz/tags&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Open more actions menu&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Folders and files&lt;/h2&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th colspan=&quot;2&quot;&gt;&lt;span&gt;Name&lt;/span&gt;&lt;/th&gt;&lt;th colspan=&quot;1&quot;&gt;&lt;span&gt;Name&lt;/span&gt;&lt;/th&gt;&lt;th&gt;&lt;div&gt;&lt;span&gt;Last commit message&lt;/span&gt;&lt;/div&gt;&lt;/th&gt;&lt;th colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;span&gt;Last commit date&lt;/span&gt;&lt;/div&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;&lt;div&gt;&lt;h2&gt;Latest commit&lt;/h2&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;History&lt;/h2&gt;&lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz/commits/main/&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;45,324 Commits&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz/commits/main/&quot;&gt;&lt;/a&gt;&lt;span&gt;45,324 Commits&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz/tree/main/workflows&quot;&gt;workflows&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz/tree/main/workflows&quot;&gt;workflows&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz/blob/main/README.md&quot;&gt;README.md&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz/blob/main/README.md&quot;&gt;README.md&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;Repository files navigation&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Loading&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;&lt;span&gt;About&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;N8N Workflows Catalog&lt;/p&gt;&lt;div&gt;&lt;span&gt;&lt;a href=&quot;https://n8nworkflows.xyz/&quot;&gt;n8nworkflows.xyz/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;span&gt;Topics&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/topics/n8n&quot;&gt;n8n&lt;/a&gt;&lt;a href=&quot;https://github.com/topics/n8n-automation&quot;&gt;n8n-automation&lt;/a&gt;&lt;a href=&quot;https://github.com/topics/n8n-node&quot;&gt;n8n-node&lt;/a&gt;&lt;a href=&quot;https://github.com/topics/n8n-nodes&quot;&gt;n8n-nodes&lt;/a&gt;&lt;a href=&quot;https://github.com/topics/n8n-template&quot;&gt;n8n-template&lt;/a&gt;&lt;a href=&quot;https://github.com/topics/n8n-workflow&quot;&gt;n8n-workflow&lt;/a&gt;&lt;a href=&quot;https://github.com/topics/n8n-workflows&quot;&gt;n8n-workflows&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;&lt;span&gt;Resources&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;span&gt;Readme&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz/activity&quot;&gt;&lt;span&gt;Activity&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;&lt;span&gt;Stars&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz/stargazers&quot;&gt;&lt;span&gt;&lt;strong&gt;2.5k&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; stars&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;&lt;span&gt;Watchers&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz/watchers&quot;&gt;&lt;span&gt;&lt;strong&gt;27&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; watching&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;&lt;span&gt;Forks&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/nusquama/n8nworkflows.xyz/forks&quot;&gt;&lt;span&gt;&lt;strong&gt;645&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; forks&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2Fnusquama%2Fn8nworkflows.xyz&amp;amp;report=nusquama+%28user%29&quot;&gt;&lt;span&gt;Report repository&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;&lt;span&gt;Releases&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;&lt;span&gt;Packages&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;&lt;span&gt;Contributors&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;   &lt;/div&gt;





  &lt;/div&gt;



    &lt;/main&gt;
  &lt;/div&gt;

  &lt;/div&gt;

          &lt;footer&gt;
  &lt;h2&gt;Footer&lt;/h2&gt;

  


  &lt;div&gt;
    &lt;div&gt;
      &lt;a href=&quot;https://github.com&quot;&gt;
        
&lt;/a&gt;
      &lt;span&gt;
        © 2026 GitHub, Inc.
      &lt;/span&gt;
    &lt;/div&gt;

    
  &lt;/div&gt;
&lt;/footer&gt;



    




  &lt;div&gt;
    
    
    You can’t perform that action at this time.
  &lt;/div&gt;

    

    &lt;div&gt;
  &lt;div&gt;
  &lt;/div&gt;
&lt;/div&gt;

    





    &lt;/div&gt;
    
    
  


&lt;/body&gt;</content:encoded>
</item>
<item>
<title>erasure-coding-durability/calculation.ipynb at master · Backblaze/erasure-coding-durability · GitHub</title>
<link>https://github.com/Backblaze/erasure-coding-durability/blob/master/calculation.ipynb</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/0b42a6d70aafe8b66700cab59c49675a1c05813bd773a61dea394dc1136cbbd0/Backblaze/erasure-coding-durability"></enclosure>
<guid isPermaLink="false">esbxmSCzfWW0d2yr86E1o9kVx-hJSLPb87WQXA==</guid>
<pubDate>Fri, 24 Jul 2026 18:12:05 +0000</pubDate>
<description>Python code to calculate the durability of data stored with erasure coding, such as Reed-Solomon. - Backblaze/erasure-coding-durability</description>
<content:encoded>&lt;body&gt;
    &lt;div&gt;
      
      

    &lt;div&gt;
      Skip to content

      &lt;span&gt;
    
&lt;/span&gt;      
      





  
  
  






      

          

              





&lt;header&gt;
  &lt;h2&gt;Navigation Menu&lt;/h2&gt;

  

  &lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;
        
      &lt;/div&gt;

      &lt;a href=&quot;https://github.com/&quot;&gt;
        
      &lt;/a&gt;

      &lt;div&gt;
          &lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FBackblaze%2Ferasure-coding-durability%2Fblob%2Fmaster%2Fcalculation.ipynb&quot;&gt;
            Sign in
          &lt;/a&gt;
              &lt;div&gt;
            Appearance settings

  &lt;/div&gt;

      &lt;/div&gt;
    &lt;/div&gt;


    &lt;div&gt;
      &lt;div&gt;
          







  
  
  




        &lt;div&gt;
                



  &lt;div&gt;
      

    

    
&lt;div&gt;
  
      &lt;h1&gt;Search code, repositories, users, issues, pull requests...&lt;/h1&gt;
    &lt;div&gt;
      
          &lt;div&gt;        &lt;div&gt;
          
  
    &lt;div&gt;
      
        Search
      
      &lt;div&gt;
          &lt;span&gt;
            
          &lt;/span&gt;
        &lt;div&gt;
          
          &lt;div&gt;
            
            
          &lt;/div&gt;
        &lt;/div&gt;
          &lt;span&gt;
            &lt;span&gt;Clear&lt;/span&gt;
            

          &lt;/span&gt;
      &lt;/div&gt;
      



































































        &lt;div&gt;
                        

        &lt;/div&gt;
      &lt;div&gt;
        &lt;span&gt;
          
        &lt;/span&gt;
        
&lt;/div&gt;    &lt;/div&gt;
    

          &lt;div&gt;
            &lt;a href=&quot;https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax&quot;&gt;Search syntax tips&lt;/a&gt;            
          &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;

    &lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  
  &lt;div&gt;
    

  

    
    

  
    
  &lt;/div&gt;



            &lt;div&gt;
              &lt;a href=&quot;https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FBackblaze%2Ferasure-coding-durability%2Fblob%2Fmaster%2Fcalculation.ipynb&quot;&gt;
                Sign in
              &lt;/a&gt;
            &lt;/div&gt;

              &lt;a href=&quot;https://github.com/signup?ref_cta=Sign+up&amp;amp;ref_loc=header+logged+out&amp;amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow&amp;amp;source=header-repo&amp;amp;source_repo=Backblaze%2Ferasure-coding-durability&quot;&gt;
                Sign up
              &lt;/a&gt;

                &lt;div&gt;
            Appearance settings

  &lt;/div&gt;

          
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

      &lt;div&gt;
  
        
        &lt;span&gt;You signed in with another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You signed out in another tab or window. Reload to refresh your session.&lt;/span&gt;
        &lt;span&gt;You switched accounts on another tab or window. Reload to refresh your session.&lt;/span&gt;

    Dismiss alert


  
&lt;/div&gt;
    &lt;/div&gt;

  








    &lt;div&gt;




  
&lt;/div&gt;


    






  &lt;div&gt;
        &lt;div&gt;
    &lt;main&gt;
      
      
    

    
  
  &lt;div&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;
      

      &lt;h3&gt;        Uh oh!
&lt;/h3&gt;
      &lt;p&gt;        &lt;/p&gt;&lt;p&gt;There was an error while loading. Please reload this page.&lt;/p&gt;


&lt;/div&gt;  &lt;/div&gt;
&lt;/div&gt;  &lt;/div&gt;


    








  

  &lt;div&gt;

      &lt;div&gt;

        &lt;div&gt;
            
  &lt;div&gt;
      
    
    &lt;span&gt;
      &lt;a href=&quot;https://github.com/Backblaze&quot;&gt;
        Backblaze
&lt;/a&gt;    &lt;/span&gt;
    &lt;span&gt;/&lt;/span&gt;
    &lt;strong&gt;
      &lt;a href=&quot;https://github.com/Backblaze/erasure-coding-durability&quot;&gt;erasure-coding-durability&lt;/a&gt;
    &lt;/strong&gt;

    &lt;span&gt;Public&lt;/span&gt;
  &lt;/div&gt;


        &lt;/div&gt;

        &lt;div&gt;
            &lt;ul&gt;
    
      

  &lt;li&gt;
            &lt;a href=&quot;https://github.com/login?return_to=%2FBackblaze%2Ferasure-coding-durability&quot;&gt;    Notifications
&lt;/a&gt;    You must be signed in to change notification settings

  &lt;/li&gt;

  &lt;li&gt;
          &lt;a href=&quot;https://github.com/login?return_to=%2FBackblaze%2Ferasure-coding-durability&quot;&gt;    Fork
    &lt;span&gt;12&lt;/span&gt;
&lt;/a&gt;
  &lt;/li&gt;

  &lt;li&gt;
        &lt;div&gt;
        &lt;a href=&quot;https://github.com/login?return_to=%2FBackblaze%2Ferasure-coding-durability&quot;&gt;    &lt;span&gt;
          Star
&lt;/span&gt;          &lt;span&gt;55&lt;/span&gt;
&lt;/a&gt;&lt;/div&gt;
  &lt;/li&gt;

&lt;/ul&gt;

        &lt;/div&gt;
      &lt;/div&gt;

        &lt;div&gt;
&lt;/div&gt;


          

  &lt;/div&gt;
  




    &lt;div&gt;
    



    
      
    









  
  
  &lt;div&gt;  &lt;a href=&quot;https://github.com/Backblaze/erasure-coding-durability&quot;&gt;&lt;/a&gt; &lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;  &lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;&lt;span&gt;Expand file tree&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;/&lt;/span&gt;&lt;h1&gt;calculation.ipynb&lt;/h1&gt;&lt;/div&gt;&lt;span&gt;Copy path&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;More file actions&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;More file actions&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt; &lt;div&gt;&lt;div&gt;&lt;h2&gt;Latest commit&lt;/h2&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h2&gt;History&lt;/h2&gt;&lt;a href=&quot;https://github.com/Backblaze/erasure-coding-durability/commits/master/calculation.ipynb&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;History&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Backblaze/erasure-coding-durability/commits/master/calculation.ipynb&quot;&gt;&lt;/a&gt;&lt;span&gt;History&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;224 lines (224 loc) · 10.1 KB&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;/&lt;/span&gt;&lt;h1&gt;calculation.ipynb&lt;/h1&gt;&lt;/div&gt;&lt;span&gt;Copy path&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;File metadata and controls&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;224 lines (224 loc) · 10.1 KB&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/Backblaze/erasure-coding-durability/raw/refs/heads/master/calculation.ipynb&quot;&gt;&lt;span&gt;&lt;span&gt;Raw&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Copy raw file&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Download raw file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Edit and raw actions&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt;  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;   &lt;/div&gt;





  &lt;/div&gt;



    &lt;/main&gt;
  &lt;/div&gt;

  &lt;/div&gt;

          &lt;footer&gt;
  &lt;h2&gt;Footer&lt;/h2&gt;

  


  &lt;div&gt;
    &lt;div&gt;
      &lt;a href=&quot;https://github.com&quot;&gt;
        
&lt;/a&gt;
      &lt;span&gt;
        © 2026 GitHub, Inc.
      &lt;/span&gt;
    &lt;/div&gt;

    
  &lt;/div&gt;
&lt;/footer&gt;



    




  &lt;div&gt;
    
    
    You can’t perform that action at this time.
  &lt;/div&gt;

    

    &lt;div&gt;
  &lt;div&gt;
  &lt;/div&gt;
&lt;/div&gt;

    





    &lt;/div&gt;
    
    
  


&lt;/body&gt;</content:encoded>
</item>
<item>
<title>GitHub - HazyResearch/ThunderKittens: Tile primitives for speedy kernels · GitHub</title>
<link>https://github.com/HazyResearch/ThunderKittens</link>
<enclosure type="image/jpeg" length="0" url="https://opengraph.githubassets.com/0d414e5ec87a4a7b8a7d81125c39113648b4e0f8a973f769417d57851e0dc99b/HazyResearch/ThunderKittens"></enclosure>
<guid isPermaLink="false">wer8Y--4VW1SsAQFWTtVy3bau1SCmkbdt6Skig==</guid>
<pubDate>Fri, 24 Jul 2026 18:11:56 +0000</pubDate>
<description>Tile primitives for speedy kernels. Contribute to HazyResearch/ThunderKittens development by creating an account on GitHub.</description>
<content:encoded>&lt;pre&gt;#&lt;span&gt;include&lt;/span&gt; &lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;kittens.cuh&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
#&lt;span&gt;include&lt;/span&gt; &lt;span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;prototype.cuh&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;

&lt;span&gt;using&lt;/span&gt; &lt;span&gt;namespace&lt;/span&gt; &lt;span&gt;kittens&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&lt;span&gt;using&lt;/span&gt; &lt;span&gt;namespace&lt;/span&gt; &lt;span&gt;kittens&lt;/span&gt;::prototype&lt;span&gt;;&lt;/span&gt;
&lt;span&gt;using&lt;/span&gt; &lt;span&gt;namespace&lt;/span&gt; &lt;span&gt;kittens&lt;/span&gt;::prototype::lcf&lt;span&gt;;&lt;/span&gt;

&lt;span&gt;template&lt;/span&gt;&amp;lt;&lt;span&gt;int&lt;/span&gt; &lt;span&gt;M_BLOCK&lt;/span&gt;, &lt;span&gt;int&lt;/span&gt; &lt;span&gt;N_BLOCK&lt;/span&gt;&amp;gt;
&lt;span&gt;struct&lt;/span&gt; &lt;span&gt;matmul_layout&lt;/span&gt; {
    &lt;span&gt;using&lt;/span&gt;  base_tile      = st_bf&amp;lt;&lt;span&gt;64&lt;/span&gt;, &lt;span&gt;64&lt;/span&gt;&amp;gt;;
    &lt;span&gt;using&lt;/span&gt;  global_layout  = gl&amp;lt;&lt;span&gt;bf16&lt;/span&gt;, &lt;span&gt;1&lt;/span&gt;, &lt;span&gt;1&lt;/span&gt;, -&lt;span&gt;1&lt;/span&gt;, -&lt;span&gt;1&lt;/span&gt;, base_tile&amp;gt;;
    &lt;span&gt;struct&lt;/span&gt; &lt;span&gt;globals&lt;/span&gt;        { global_layout A, B, C; };
    &lt;span&gt;struct&lt;/span&gt; &lt;span&gt;input_block&lt;/span&gt;    { base_tile a[&lt;span&gt;M_BLOCK&lt;/span&gt;], b[&lt;span&gt;N_BLOCK&lt;/span&gt;]; };
    &lt;span&gt;struct&lt;/span&gt; &lt;span&gt;finish_block&lt;/span&gt;   { base_tile c[&lt;span&gt;M_BLOCK&lt;/span&gt;][&lt;span&gt;N_BLOCK&lt;/span&gt;]; };
    &lt;span&gt;struct&lt;/span&gt; &lt;span&gt;common_state&lt;/span&gt;   { &lt;span&gt;int2&lt;/span&gt; coord; };
    &lt;span&gt;struct&lt;/span&gt; &lt;span&gt;consumer_state&lt;/span&gt; { rt_fl&amp;lt;&lt;span&gt;16&lt;/span&gt;, &lt;span&gt;N_BLOCK&lt;/span&gt;*base_tile::cols&amp;gt; accum; };
};
&lt;span&gt;template&lt;/span&gt;&amp;lt;&lt;span&gt;int&lt;/span&gt; _M_BLOCK=&lt;span&gt;2&lt;/span&gt;, &lt;span&gt;int&lt;/span&gt; _N_BLOCK=&lt;span&gt;4&lt;/span&gt;, &lt;span&gt;int&lt;/span&gt; _SUPER_M=&lt;span&gt;12&lt;/span&gt;&amp;gt;
&lt;span&gt;struct&lt;/span&gt; &lt;span&gt;matmul_template&lt;/span&gt; {
    &lt;span&gt;static&lt;/span&gt; &lt;span&gt;constexpr&lt;/span&gt; &lt;span&gt;int&lt;/span&gt; &lt;span&gt;M_BLOCK&lt;/span&gt; = _M_BLOCK, &lt;span&gt;N_BLOCK&lt;/span&gt; = _N_BLOCK, &lt;span&gt;SUPER_M&lt;/span&gt; = _SUPER_M;
    &lt;span&gt;using&lt;/span&gt; layout    = matmul_layout&amp;lt;&lt;span&gt;M_BLOCK&lt;/span&gt;, &lt;span&gt;N_BLOCK&lt;/span&gt;&amp;gt;;
    &lt;span&gt;using&lt;/span&gt; wide_tile = st_bf&amp;lt;&lt;span&gt;64&lt;/span&gt;, &lt;span&gt;64&lt;/span&gt;*&lt;span&gt;N_BLOCK&lt;/span&gt;&amp;gt;;
    &lt;span&gt;static&lt;/span&gt; &lt;span&gt;constexpr&lt;/span&gt; &lt;span&gt;int&lt;/span&gt; &lt;span&gt;NUM_CONSUMER_WARPS&lt;/span&gt;=&lt;span&gt;M_BLOCK&lt;/span&gt;*&lt;span&gt;4&lt;/span&gt;, &lt;span&gt;INPUT_PIPE_STAGES&lt;/span&gt;=&lt;span&gt;4&lt;/span&gt;, &lt;span&gt;PRODUCER_BARRIER_ARRIVALS&lt;/span&gt;=&lt;span&gt;1&lt;/span&gt;;
    &lt;span&gt;&lt;span&gt;//&lt;/span&gt; Helper functions&lt;/span&gt;
    &lt;span&gt;template&lt;/span&gt;&amp;lt;&lt;span&gt;bool&lt;/span&gt; &lt;span&gt;PERISISTENT_GRID&lt;/span&gt;=&lt;span&gt;true&lt;/span&gt;&amp;gt; &lt;span&gt;__host__&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; &lt;span&gt;inline&lt;/span&gt; &lt;span&gt;dim3&lt;/span&gt; &lt;span&gt;grid&lt;/span&gt;(&lt;span&gt;int&lt;/span&gt; M, &lt;span&gt;int&lt;/span&gt; N, &lt;span&gt;int&lt;/span&gt; K) {
        &lt;span&gt;return&lt;/span&gt; &lt;span&gt;dim3&lt;/span&gt;(&lt;span&gt;PERISISTENT_GRID&lt;/span&gt; ? &lt;span&gt;132&lt;/span&gt; : M*N/(&lt;span&gt;M_BLOCK&lt;/span&gt;*&lt;span&gt;N_BLOCK&lt;/span&gt;*layout::base_tile::num_elements));
    }
    &lt;span&gt;&lt;span&gt;//&lt;/span&gt; ThunderKittens template functions&lt;/span&gt;
    &lt;span&gt;__device__&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; &lt;span&gt;inline&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; &lt;span&gt;common_setup&lt;/span&gt;(common_setup_args&amp;lt;layout&amp;gt; args) {
        &lt;span&gt;int&lt;/span&gt; Rblocks = args.&lt;span&gt;globals&lt;/span&gt;.&lt;span&gt;C&lt;/span&gt;.&lt;span&gt;rows&lt;/span&gt;() / (&lt;span&gt;M_BLOCK&lt;/span&gt;*&lt;span&gt;64&lt;/span&gt;), Cblocks = args.&lt;span&gt;globals&lt;/span&gt;.&lt;span&gt;C&lt;/span&gt;.&lt;span&gt;cols&lt;/span&gt;() / (&lt;span&gt;N_BLOCK&lt;/span&gt;*&lt;span&gt;64&lt;/span&gt;);
        &lt;span&gt;int&lt;/span&gt; super_rows = (Rblocks/&lt;span&gt;SUPER_M&lt;/span&gt;)*&lt;span&gt;SUPER_M&lt;/span&gt;,
            final_rows = Rblocks - super_rows,
            super_repeat = &lt;span&gt;SUPER_M&lt;/span&gt;*Cblocks;
        &lt;span&gt;int&lt;/span&gt; task_id = args.&lt;span&gt;task_iter&lt;/span&gt;*&lt;span&gt;gridDim&lt;/span&gt;.&lt;span&gt;x&lt;/span&gt; + &lt;span&gt;blockIdx&lt;/span&gt;.&lt;span&gt;x&lt;/span&gt;;
        &lt;span&gt;if&lt;/span&gt; (task_id &amp;lt; super_rows * Cblocks)
            args.&lt;span&gt;common&lt;/span&gt;.&lt;span&gt;coord&lt;/span&gt; = { &lt;span&gt;SUPER_M&lt;/span&gt;*(task_id/super_repeat) + task_id%&lt;span&gt;SUPER_M&lt;/span&gt;,
                           (task_id%super_repeat)/&lt;span&gt;SUPER_M&lt;/span&gt; };
        &lt;span&gt;else&lt;/span&gt; &lt;span&gt;if&lt;/span&gt; (task_id &amp;lt; Rblocks*Cblocks) {
            &lt;span&gt;int&lt;/span&gt; remainder_id = task_id - super_rows*Cblocks;
            args.&lt;span&gt;common&lt;/span&gt;.&lt;span&gt;coord&lt;/span&gt; = { super_rows + (remainder_id%final_rows), remainder_id/final_rows };
        }
        &lt;span&gt;else&lt;/span&gt; { &lt;span&gt;&lt;span&gt;//&lt;/span&gt; Id is too high, no more work to do&lt;/span&gt;
            args.&lt;span&gt;num_iters&lt;/span&gt; = -&lt;span&gt;1&lt;/span&gt;;
            &lt;span&gt;return&lt;/span&gt;;
        }
        args.&lt;span&gt;num_iters&lt;/span&gt; = args.&lt;span&gt;globals&lt;/span&gt;.&lt;span&gt;A&lt;/span&gt;.&lt;span&gt;cols&lt;/span&gt;()/&lt;span&gt;64&lt;/span&gt;;
        &lt;span&gt;int&lt;/span&gt; id = &lt;span&gt;warpgroup::groupid&lt;/span&gt;() == &lt;span&gt;NUM_CONSUMER_WARPS&lt;/span&gt;/&lt;span&gt;4&lt;/span&gt; ? &lt;span&gt;0&lt;/span&gt; : &lt;span&gt;warpgroup::groupid&lt;/span&gt;(); &lt;span&gt;&lt;span&gt;//&lt;/span&gt; producer sets as 0&lt;/span&gt;
        args.&lt;span&gt;common&lt;/span&gt;.&lt;span&gt;coord&lt;/span&gt; = { args.&lt;span&gt;common&lt;/span&gt;.&lt;span&gt;coord&lt;/span&gt;.&lt;span&gt;x&lt;/span&gt;*&lt;span&gt;M_BLOCK&lt;/span&gt; + id, args.&lt;span&gt;common&lt;/span&gt;.&lt;span&gt;coord&lt;/span&gt;.&lt;span&gt;y&lt;/span&gt;*&lt;span&gt;N_BLOCK&lt;/span&gt; };
    }
    &lt;span&gt;struct&lt;/span&gt; &lt;span&gt;producer&lt;/span&gt; {
        &lt;span&gt;__device__&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; &lt;span&gt;setup&lt;/span&gt;(producer_setup_args&amp;lt;layout&amp;gt; args) {
            warpgroup::decrease_registers&amp;lt;&lt;span&gt;40&lt;/span&gt;&amp;gt;(); &lt;span&gt;&lt;span&gt;//&lt;/span&gt; decrease registers for producers&lt;/span&gt;
        }
        &lt;span&gt;__device__&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; &lt;span&gt;load&lt;/span&gt;(producer_load_args&amp;lt;layout&amp;gt; args) {
            &lt;span&gt;if&lt;/span&gt; (&lt;span&gt;warpgroup::laneid&lt;/span&gt;() == &lt;span&gt;0&lt;/span&gt;) {
                &lt;span&gt;tma::expect&lt;/span&gt;(args.&lt;span&gt;inputs_arrived&lt;/span&gt;, args.&lt;span&gt;input&lt;/span&gt;);
                &lt;span&gt;for&lt;/span&gt;(&lt;span&gt;int&lt;/span&gt; i = &lt;span&gt;0&lt;/span&gt;; i &amp;lt; &lt;span&gt;M_BLOCK&lt;/span&gt;; i++)
                    &lt;span&gt;tma::load_async&lt;/span&gt;(args.&lt;span&gt;input&lt;/span&gt;.&lt;span&gt;a&lt;/span&gt;[i], args.&lt;span&gt;globals&lt;/span&gt;.&lt;span&gt;A&lt;/span&gt;,
                                    {args.&lt;span&gt;common&lt;/span&gt;.&lt;span&gt;coord&lt;/span&gt;.&lt;span&gt;x&lt;/span&gt;+i, args.&lt;span&gt;iter&lt;/span&gt;}, args.&lt;span&gt;inputs_arrived&lt;/span&gt;);
                &lt;span&gt;for&lt;/span&gt;(&lt;span&gt;int&lt;/span&gt; i = &lt;span&gt;0&lt;/span&gt;; i &amp;lt; &lt;span&gt;N_BLOCK&lt;/span&gt;; i++)
                    &lt;span&gt;tma::load_async&lt;/span&gt;(args.&lt;span&gt;input&lt;/span&gt;.&lt;span&gt;b&lt;/span&gt;[i], args.&lt;span&gt;globals&lt;/span&gt;.&lt;span&gt;B&lt;/span&gt;,
                                    {args.&lt;span&gt;iter&lt;/span&gt;, args.&lt;span&gt;common&lt;/span&gt;.&lt;span&gt;coord&lt;/span&gt;.&lt;span&gt;y&lt;/span&gt;+i}, args.&lt;span&gt;inputs_arrived&lt;/span&gt;);
            }
        }
    };
    &lt;span&gt;struct&lt;/span&gt; &lt;span&gt;consumer&lt;/span&gt; {
        &lt;span&gt;__device__&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; &lt;span&gt;setup&lt;/span&gt;(consumer_setup_args&amp;lt;layout&amp;gt; args) {
            warpgroup::increase_registers&amp;lt;&lt;span&gt;232&lt;/span&gt;&amp;gt;(); &lt;span&gt;&lt;span&gt;//&lt;/span&gt; increase registers for consumers&lt;/span&gt;
            &lt;span&gt;kittens::warp::zero&lt;/span&gt;(args.&lt;span&gt;state&lt;/span&gt;.&lt;span&gt;accum&lt;/span&gt;);
        }
        &lt;span&gt;__device__&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; &lt;span&gt;compute&lt;/span&gt;(consumer_compute_args&amp;lt;layout&amp;gt; args) {
            &lt;span&gt;warpgroup::mma_AB&lt;/span&gt;(
                args.&lt;span&gt;state&lt;/span&gt;.&lt;span&gt;accum&lt;/span&gt;, &lt;span&gt;&lt;span&gt;//&lt;/span&gt; dest registers&lt;/span&gt;
                args.&lt;span&gt;input&lt;/span&gt;.&lt;span&gt;a&lt;/span&gt;[&lt;span&gt;warpgroup::groupid&lt;/span&gt;()], &lt;span&gt;&lt;span&gt;//&lt;/span&gt; A matrix&lt;/span&gt;
                &lt;span&gt;reinterpret_cast&lt;/span&gt;&amp;lt;wide_tile&amp;amp;&amp;gt;(args.&lt;span&gt;input&lt;/span&gt;.&lt;span&gt;b&lt;/span&gt;) &lt;span&gt;&lt;span&gt;//&lt;/span&gt; B matrix&lt;/span&gt;
            );
            &lt;span&gt;warpgroup::mma_async_wait&lt;/span&gt;();
            &lt;span&gt;if&lt;/span&gt; (&lt;span&gt;warp::laneid&lt;/span&gt;() == &lt;span&gt;0&lt;/span&gt;) &lt;span&gt;arrive&lt;/span&gt;(args.&lt;span&gt;inputs_finished&lt;/span&gt;);
        }
        &lt;span&gt;__device__&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; &lt;span&gt;finish&lt;/span&gt;(consumer_finish_args&amp;lt;layout&amp;gt; args) {
            &lt;span&gt;warpgroup::store&lt;/span&gt;(&lt;span&gt;reinterpret_cast&lt;/span&gt;&amp;lt;wide_tile&amp;amp;&amp;gt;(args.&lt;span&gt;finish&lt;/span&gt;.&lt;span&gt;c&lt;/span&gt;[&lt;span&gt;warpgroup::groupid&lt;/span&gt;()]), args.&lt;span&gt;state&lt;/span&gt;.&lt;span&gt;accum&lt;/span&gt;);
            &lt;span&gt;warpgroup::sync&lt;/span&gt;(&lt;span&gt;warpgroup::groupid&lt;/span&gt;()+&lt;span&gt;4&lt;/span&gt;);
            &lt;span&gt;if&lt;/span&gt; (&lt;span&gt;warpgroup::laneid&lt;/span&gt;() == &lt;span&gt;0&lt;/span&gt;) &lt;span&gt;for&lt;/span&gt;(&lt;span&gt;int&lt;/span&gt; i = &lt;span&gt;0&lt;/span&gt;; i &amp;lt; &lt;span&gt;N_BLOCK&lt;/span&gt;; i++) {
                &lt;span&gt;tma::store_async&lt;/span&gt;(args.&lt;span&gt;globals&lt;/span&gt;.&lt;span&gt;C&lt;/span&gt;, args.&lt;span&gt;finish&lt;/span&gt;.&lt;span&gt;c&lt;/span&gt;[&lt;span&gt;warpgroup::groupid&lt;/span&gt;()][i],
                                             {args.&lt;span&gt;common&lt;/span&gt;.&lt;span&gt;coord&lt;/span&gt;.&lt;span&gt;x&lt;/span&gt;, args.&lt;span&gt;common&lt;/span&gt;.&lt;span&gt;coord&lt;/span&gt;.&lt;span&gt;y&lt;/span&gt;+i});
                &lt;span&gt;tma::store_async_read_wait&lt;/span&gt;(); &lt;span&gt;&lt;span&gt;//&lt;/span&gt; wait that store is finished before reusing finish memory&lt;/span&gt;
            }
            &lt;span&gt;kittens::warp::zero&lt;/span&gt;(args.&lt;span&gt;state&lt;/span&gt;.&lt;span&gt;accum&lt;/span&gt;);
            &lt;span&gt;if&lt;/span&gt; (&lt;span&gt;warp::laneid&lt;/span&gt;() == &lt;span&gt;0&lt;/span&gt;) &lt;span&gt;arrive&lt;/span&gt;(args.&lt;span&gt;finish_finished&lt;/span&gt;);
        }
    };
};&lt;/pre&gt;</content:encoded>
</item>
</channel>
</rss>
