Skip to content

ml-kem: Update to FIPS 203 - #47

Merged
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203
Aug 16, 2024
Merged

ml-kem: Update to FIPS 203#47
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203

Conversation

@bifurcation

Copy link
Copy Markdown
Contributor

Fixes#46

This PR implements the two changes noted in Appendix C of FIPS 203:

  • Domain separation in K-PKE.KeyGen
  • Reversing the order of indices in array sampling

It turns out that we had already made the latter change in order to pass the existing test vectors.

Marking as WIP right now because I don't think updated test vectors have been published, and the current code fails on the current test vectors. Should be a quick copy/paste update once the test vectors are available.

@tarcieri

Copy link
Copy Markdown
Member

At some point the documentation (README.md, Cargo.toml) should also be updated to note it's no longer the draft construction

@tarcieri

Copy link
Copy Markdown
Member

@bifurcation
bifurcation marked this pull request as ready for review August 16, 2024 18:11
@bifurcation

Copy link
Copy Markdown
ContributorAuthor

@tarcieri - docs and test vectors updated, think this is ready for review

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

I went a little more radical on the test vector refactor than I might have, but honestly (a) the first effort was kinda half-assed, and (b) this way if NIST updates the vectors, we can just pull JSON files and not have to copy/paste a bunch of hex strings.

@newpavlov

Copy link
Copy Markdown
Member

The JSON files are quite big (831 KB and 558 KB). I think we should either exclude them (and respective tests) from published crates (e.g. see the cmac crate), or compress them better.

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

Good point @newpavlov, added those tests to the exclude list.

@tarcieri
tarcieri merged commit 26e8c8a into RustCrypto:masterAug 16, 2024
@tarcieritarcieri mentioned this pull request Aug 16, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ml-kem: update to FIPS 203 final

3 participants

@bifurcation@tarcieri@newpavlov
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
ml-kem: Update to FIPS 203 by bifurcation · Pull Request #47 · RustCrypto/KEMs · GitHub
Skip to content

ml-kem: Update to FIPS 203 - #47

Merged
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203
Aug 16, 2024
Merged

ml-kem: Update to FIPS 203#47
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203

Conversation

@bifurcation

Copy link
Copy Markdown
Contributor

Fixes#46

This PR implements the two changes noted in Appendix C of FIPS 203:

  • Domain separation in K-PKE.KeyGen
  • Reversing the order of indices in array sampling

It turns out that we had already made the latter change in order to pass the existing test vectors.

Marking as WIP right now because I don't think updated test vectors have been published, and the current code fails on the current test vectors. Should be a quick copy/paste update once the test vectors are available.

@tarcieri

Copy link
Copy Markdown
Member

At some point the documentation (README.md, Cargo.toml) should also be updated to note it's no longer the draft construction

@tarcieri

Copy link
Copy Markdown
Member

@bifurcation
bifurcation marked this pull request as ready for review August 16, 2024 18:11
@bifurcation

Copy link
Copy Markdown
ContributorAuthor

@tarcieri - docs and test vectors updated, think this is ready for review

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

I went a little more radical on the test vector refactor than I might have, but honestly (a) the first effort was kinda half-assed, and (b) this way if NIST updates the vectors, we can just pull JSON files and not have to copy/paste a bunch of hex strings.

@newpavlov

Copy link
Copy Markdown
Member

The JSON files are quite big (831 KB and 558 KB). I think we should either exclude them (and respective tests) from published crates (e.g. see the cmac crate), or compress them better.

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

Good point @newpavlov, added those tests to the exclude list.

@tarcieri
tarcieri merged commit 26e8c8a into RustCrypto:masterAug 16, 2024
@tarcieritarcieri mentioned this pull request Aug 16, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ml-kem: update to FIPS 203 final

3 participants

@bifurcation@tarcieri@newpavlov
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' ml-kem: Update to FIPS 203 by bifurcation · Pull Request #47 · RustCrypto/KEMs · GitHub
Skip to content

ml-kem: Update to FIPS 203 - #47

Merged
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203
Aug 16, 2024
Merged

ml-kem: Update to FIPS 203#47
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203

Conversation

@bifurcation

Copy link
Copy Markdown
Contributor

Fixes#46

This PR implements the two changes noted in Appendix C of FIPS 203:

  • Domain separation in K-PKE.KeyGen
  • Reversing the order of indices in array sampling

It turns out that we had already made the latter change in order to pass the existing test vectors.

Marking as WIP right now because I don't think updated test vectors have been published, and the current code fails on the current test vectors. Should be a quick copy/paste update once the test vectors are available.

@tarcieri

Copy link
Copy Markdown
Member

At some point the documentation (README.md, Cargo.toml) should also be updated to note it's no longer the draft construction

@tarcieri

Copy link
Copy Markdown
Member

@bifurcation
bifurcation marked this pull request as ready for review August 16, 2024 18:11
@bifurcation

Copy link
Copy Markdown
ContributorAuthor

@tarcieri - docs and test vectors updated, think this is ready for review

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

I went a little more radical on the test vector refactor than I might have, but honestly (a) the first effort was kinda half-assed, and (b) this way if NIST updates the vectors, we can just pull JSON files and not have to copy/paste a bunch of hex strings.

@newpavlov

Copy link
Copy Markdown
Member

The JSON files are quite big (831 KB and 558 KB). I think we should either exclude them (and respective tests) from published crates (e.g. see the cmac crate), or compress them better.

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

Good point @newpavlov, added those tests to the exclude list.

@tarcieri
tarcieri merged commit 26e8c8a into RustCrypto:masterAug 16, 2024
@tarcieritarcieri mentioned this pull request Aug 16, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ml-kem: update to FIPS 203 final

3 participants

@bifurcation@tarcieri@newpavlov
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' ml-kem: Update to FIPS 203 by bifurcation · Pull Request #47 · RustCrypto/KEMs · GitHub
Skip to content

ml-kem: Update to FIPS 203 - #47

Merged
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203
Aug 16, 2024
Merged

ml-kem: Update to FIPS 203#47
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203

Conversation

@bifurcation

Copy link
Copy Markdown
Contributor

Fixes#46

This PR implements the two changes noted in Appendix C of FIPS 203:

  • Domain separation in K-PKE.KeyGen
  • Reversing the order of indices in array sampling

It turns out that we had already made the latter change in order to pass the existing test vectors.

Marking as WIP right now because I don't think updated test vectors have been published, and the current code fails on the current test vectors. Should be a quick copy/paste update once the test vectors are available.

@tarcieri

Copy link
Copy Markdown
Member

At some point the documentation (README.md, Cargo.toml) should also be updated to note it's no longer the draft construction

@tarcieri

Copy link
Copy Markdown
Member

@bifurcation
bifurcation marked this pull request as ready for review August 16, 2024 18:11
@bifurcation

Copy link
Copy Markdown
ContributorAuthor

@tarcieri - docs and test vectors updated, think this is ready for review

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

I went a little more radical on the test vector refactor than I might have, but honestly (a) the first effort was kinda half-assed, and (b) this way if NIST updates the vectors, we can just pull JSON files and not have to copy/paste a bunch of hex strings.

@newpavlov

Copy link
Copy Markdown
Member

The JSON files are quite big (831 KB and 558 KB). I think we should either exclude them (and respective tests) from published crates (e.g. see the cmac crate), or compress them better.

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

Good point @newpavlov, added those tests to the exclude list.

@tarcieri
tarcieri merged commit 26e8c8a into RustCrypto:masterAug 16, 2024
@tarcieritarcieri mentioned this pull request Aug 16, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ml-kem: update to FIPS 203 final

3 participants

@bifurcation@tarcieri@newpavlov
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' ml-kem: Update to FIPS 203 by bifurcation · Pull Request #47 · RustCrypto/KEMs · GitHub
Skip to content

ml-kem: Update to FIPS 203 - #47

Merged
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203
Aug 16, 2024
Merged

ml-kem: Update to FIPS 203#47
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203

Conversation

@bifurcation

Copy link
Copy Markdown
Contributor

Fixes#46

This PR implements the two changes noted in Appendix C of FIPS 203:

  • Domain separation in K-PKE.KeyGen
  • Reversing the order of indices in array sampling

It turns out that we had already made the latter change in order to pass the existing test vectors.

Marking as WIP right now because I don't think updated test vectors have been published, and the current code fails on the current test vectors. Should be a quick copy/paste update once the test vectors are available.

@tarcieri

Copy link
Copy Markdown
Member

At some point the documentation (README.md, Cargo.toml) should also be updated to note it's no longer the draft construction

@tarcieri

Copy link
Copy Markdown
Member

@bifurcation
bifurcation marked this pull request as ready for review August 16, 2024 18:11
@bifurcation

Copy link
Copy Markdown
ContributorAuthor

@tarcieri - docs and test vectors updated, think this is ready for review

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

I went a little more radical on the test vector refactor than I might have, but honestly (a) the first effort was kinda half-assed, and (b) this way if NIST updates the vectors, we can just pull JSON files and not have to copy/paste a bunch of hex strings.

@newpavlov

Copy link
Copy Markdown
Member

The JSON files are quite big (831 KB and 558 KB). I think we should either exclude them (and respective tests) from published crates (e.g. see the cmac crate), or compress them better.

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

Good point @newpavlov, added those tests to the exclude list.

@tarcieri
tarcieri merged commit 26e8c8a into RustCrypto:masterAug 16, 2024
@tarcieritarcieri mentioned this pull request Aug 16, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ml-kem: update to FIPS 203 final

3 participants

@bifurcation@tarcieri@newpavlov
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' ml-kem: Update to FIPS 203 by bifurcation · Pull Request #47 · RustCrypto/KEMs · GitHub
Skip to content

ml-kem: Update to FIPS 203 - #47

Merged
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203
Aug 16, 2024
Merged

ml-kem: Update to FIPS 203#47
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203

Conversation

@bifurcation

Copy link
Copy Markdown
Contributor

Fixes#46

This PR implements the two changes noted in Appendix C of FIPS 203:

  • Domain separation in K-PKE.KeyGen
  • Reversing the order of indices in array sampling

It turns out that we had already made the latter change in order to pass the existing test vectors.

Marking as WIP right now because I don't think updated test vectors have been published, and the current code fails on the current test vectors. Should be a quick copy/paste update once the test vectors are available.

@tarcieri

Copy link
Copy Markdown
Member

At some point the documentation (README.md, Cargo.toml) should also be updated to note it's no longer the draft construction

@tarcieri

Copy link
Copy Markdown
Member

@bifurcation
bifurcation marked this pull request as ready for review August 16, 2024 18:11
@bifurcation

Copy link
Copy Markdown
ContributorAuthor

@tarcieri - docs and test vectors updated, think this is ready for review

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

I went a little more radical on the test vector refactor than I might have, but honestly (a) the first effort was kinda half-assed, and (b) this way if NIST updates the vectors, we can just pull JSON files and not have to copy/paste a bunch of hex strings.

@newpavlov

Copy link
Copy Markdown
Member

The JSON files are quite big (831 KB and 558 KB). I think we should either exclude them (and respective tests) from published crates (e.g. see the cmac crate), or compress them better.

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

Good point @newpavlov, added those tests to the exclude list.

@tarcieri
tarcieri merged commit 26e8c8a into RustCrypto:masterAug 16, 2024
@tarcieritarcieri mentioned this pull request Aug 16, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ml-kem: update to FIPS 203 final

3 participants

@bifurcation@tarcieri@newpavlov
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' ml-kem: Update to FIPS 203 by bifurcation · Pull Request #47 · RustCrypto/KEMs · GitHub
Skip to content

ml-kem: Update to FIPS 203 - #47

Merged
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203
Aug 16, 2024
Merged

ml-kem: Update to FIPS 203#47
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203

Conversation

@bifurcation

Copy link
Copy Markdown
Contributor

Fixes#46

This PR implements the two changes noted in Appendix C of FIPS 203:

  • Domain separation in K-PKE.KeyGen
  • Reversing the order of indices in array sampling

It turns out that we had already made the latter change in order to pass the existing test vectors.

Marking as WIP right now because I don't think updated test vectors have been published, and the current code fails on the current test vectors. Should be a quick copy/paste update once the test vectors are available.

@tarcieri

Copy link
Copy Markdown
Member

At some point the documentation (README.md, Cargo.toml) should also be updated to note it's no longer the draft construction

@tarcieri

Copy link
Copy Markdown
Member

@bifurcation
bifurcation marked this pull request as ready for review August 16, 2024 18:11
@bifurcation

Copy link
Copy Markdown
ContributorAuthor

@tarcieri - docs and test vectors updated, think this is ready for review

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

I went a little more radical on the test vector refactor than I might have, but honestly (a) the first effort was kinda half-assed, and (b) this way if NIST updates the vectors, we can just pull JSON files and not have to copy/paste a bunch of hex strings.

@newpavlov

Copy link
Copy Markdown
Member

The JSON files are quite big (831 KB and 558 KB). I think we should either exclude them (and respective tests) from published crates (e.g. see the cmac crate), or compress them better.

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

Good point @newpavlov, added those tests to the exclude list.

@tarcieri
tarcieri merged commit 26e8c8a into RustCrypto:masterAug 16, 2024
@tarcieritarcieri mentioned this pull request Aug 16, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ml-kem: update to FIPS 203 final

3 participants

@bifurcation@tarcieri@newpavlov
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); ml-kem: Update to FIPS 203 by bifurcation · Pull Request #47 · RustCrypto/KEMs · GitHub
Skip to content

ml-kem: Update to FIPS 203 - #47

Merged
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203
Aug 16, 2024
Merged

ml-kem: Update to FIPS 203#47
tarcieri merged 5 commits into
RustCrypto:masterfrom
bifurcation:fips-203

Conversation

@bifurcation

Copy link
Copy Markdown
Contributor

Fixes#46

This PR implements the two changes noted in Appendix C of FIPS 203:

  • Domain separation in K-PKE.KeyGen
  • Reversing the order of indices in array sampling

It turns out that we had already made the latter change in order to pass the existing test vectors.

Marking as WIP right now because I don't think updated test vectors have been published, and the current code fails on the current test vectors. Should be a quick copy/paste update once the test vectors are available.

@tarcieri

Copy link
Copy Markdown
Member

At some point the documentation (README.md, Cargo.toml) should also be updated to note it's no longer the draft construction

@tarcieri

Copy link
Copy Markdown
Member

@bifurcation
bifurcation marked this pull request as ready for review August 16, 2024 18:11
@bifurcation

Copy link
Copy Markdown
ContributorAuthor

@tarcieri - docs and test vectors updated, think this is ready for review

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

I went a little more radical on the test vector refactor than I might have, but honestly (a) the first effort was kinda half-assed, and (b) this way if NIST updates the vectors, we can just pull JSON files and not have to copy/paste a bunch of hex strings.

@newpavlov

Copy link
Copy Markdown
Member

The JSON files are quite big (831 KB and 558 KB). I think we should either exclude them (and respective tests) from published crates (e.g. see the cmac crate), or compress them better.

@bifurcation

Copy link
Copy Markdown
ContributorAuthor

Good point @newpavlov, added those tests to the exclude list.

@tarcieri
tarcieri merged commit 26e8c8a into RustCrypto:masterAug 16, 2024
@tarcieritarcieri mentioned this pull request Aug 16, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ml-kem: update to FIPS 203 final

3 participants

@bifurcation@tarcieri@newpavlov