Skip to content

cipher: revert SeekNum::from_block_byte change - #439

Merged
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes
Dec 30, 2020
Merged

cipher: revert SeekNum::from_block_byte change#439
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts the implementation of SeekNum::from_block_byte which was merged as part of #435.

I'm not exactly sure what the issue is and it's somewhat difficult to debug in that it's code that involves both generics and macros causing an error as part of any failure in a long chain of checked arithmetic, which I'm trying to debug from the context of a concrete stream cipher impl (both chacha20 and salsa20) where it's operating over a generic type.

The error manifests as OverflowError:

RustCrypto/stream-ciphers#205 (comment)

This commit reverts to the previous implementation, which is at least much simpler.

This reverts the implementation of `SeekNum::from_block_byte` which was
merged as part of #435.
I'm not exactly sure what the issue is and it's somewhat difficult to
debug in that it's code that involves both generics and macros causing
an error as part of any failure in a long chain of checked arithmetic,
which I'm trying to debug from the context of a concrete stream cipher
impl (both `chacha20` and `salsa20`) where it's operating over a generic
type.
The error manifests as `OverflowError`:
RustCrypto/stream-ciphers#205 (comment)
This commit reverts to the previous implementation, which is at least
much simpler.
@tarcieri

Copy link
Copy Markdown
MemberAuthor

I've confirmed this fixes the test failures in the chacha20 and salsa20 crates locally.

@tarcieri
tarcieri merged commit 2f6287c into masterDec 30, 2020
@tarcieri
tarcieri deleted the cipher/revert-seeknum-changes branch December 30, 2020 04:09
@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov this appears to be a bug in the new implementation of this logic, although I'm not sure what specifically the problem was

@newpavlov

Copy link
Copy Markdown
Member

I will try to look into it.

@newpavlov

Copy link
Copy Markdown
Member

Ah, I've changed how block-buffer handles counters to simplify downstream implementations. Let's say we have two counters (block_counter, buffer_counter), assuming we process one byte at a time previously we had sequence (0, 0), (0, 1), (0, 2), etc. In the new version we have the following sequence instead: (0, 0), (1, 1), (1, 2), etc. It allows to merge block counter increment and generation of a new block.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov is there something that needs to change in chacha20 and salsa20? I was confused why their test suites were failing with OverflowError:

RustCrypto/stream-ciphers#205 (comment)

@newpavlov

Copy link
Copy Markdown
Member

Probably, yes. I will need some time to refresh my memory of how they structured. When working on the cipher PR i was mostly working with the ctr crate, so I am not sure how compatible the introduced changes with chacha20 and other stream ciphers.

@tarcieri

tarcieri commented Dec 30, 2020

Copy link
Copy Markdown
MemberAuthor

Both chacha20 and salsa20 contain what was originally copypasta from the ctr crate, so it likely needs to be updated in both.

Hopefully they can lean more heavily on block-buffer going forward to simplify these updates.

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.

2 participants

@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" + '
cipher: revert SeekNum::from_block_byte change by tarcieri · Pull Request #439 · RustCrypto/traits · GitHub
Skip to content

cipher: revert SeekNum::from_block_byte change - #439

Merged
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes
Dec 30, 2020
Merged

cipher: revert SeekNum::from_block_byte change#439
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts the implementation of SeekNum::from_block_byte which was merged as part of #435.

I'm not exactly sure what the issue is and it's somewhat difficult to debug in that it's code that involves both generics and macros causing an error as part of any failure in a long chain of checked arithmetic, which I'm trying to debug from the context of a concrete stream cipher impl (both chacha20 and salsa20) where it's operating over a generic type.

The error manifests as OverflowError:

RustCrypto/stream-ciphers#205 (comment)

This commit reverts to the previous implementation, which is at least much simpler.

This reverts the implementation of `SeekNum::from_block_byte` which was
merged as part of #435.
I'm not exactly sure what the issue is and it's somewhat difficult to
debug in that it's code that involves both generics and macros causing
an error as part of any failure in a long chain of checked arithmetic,
which I'm trying to debug from the context of a concrete stream cipher
impl (both `chacha20` and `salsa20`) where it's operating over a generic
type.
The error manifests as `OverflowError`:
RustCrypto/stream-ciphers#205 (comment)
This commit reverts to the previous implementation, which is at least
much simpler.
@tarcieri

Copy link
Copy Markdown
MemberAuthor

I've confirmed this fixes the test failures in the chacha20 and salsa20 crates locally.

@tarcieri
tarcieri merged commit 2f6287c into masterDec 30, 2020
@tarcieri
tarcieri deleted the cipher/revert-seeknum-changes branch December 30, 2020 04:09
@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov this appears to be a bug in the new implementation of this logic, although I'm not sure what specifically the problem was

@newpavlov

Copy link
Copy Markdown
Member

I will try to look into it.

@newpavlov

Copy link
Copy Markdown
Member

Ah, I've changed how block-buffer handles counters to simplify downstream implementations. Let's say we have two counters (block_counter, buffer_counter), assuming we process one byte at a time previously we had sequence (0, 0), (0, 1), (0, 2), etc. In the new version we have the following sequence instead: (0, 0), (1, 1), (1, 2), etc. It allows to merge block counter increment and generation of a new block.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov is there something that needs to change in chacha20 and salsa20? I was confused why their test suites were failing with OverflowError:

RustCrypto/stream-ciphers#205 (comment)

@newpavlov

Copy link
Copy Markdown
Member

Probably, yes. I will need some time to refresh my memory of how they structured. When working on the cipher PR i was mostly working with the ctr crate, so I am not sure how compatible the introduced changes with chacha20 and other stream ciphers.

@tarcieri

tarcieri commented Dec 30, 2020

Copy link
Copy Markdown
MemberAuthor

Both chacha20 and salsa20 contain what was originally copypasta from the ctr crate, so it likely needs to be updated in both.

Hopefully they can lean more heavily on block-buffer going forward to simplify these updates.

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.

2 participants

@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('^' + ".*" + ' cipher: revert SeekNum::from_block_byte change by tarcieri · Pull Request #439 · RustCrypto/traits · GitHub
Skip to content

cipher: revert SeekNum::from_block_byte change - #439

Merged
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes
Dec 30, 2020
Merged

cipher: revert SeekNum::from_block_byte change#439
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts the implementation of SeekNum::from_block_byte which was merged as part of #435.

I'm not exactly sure what the issue is and it's somewhat difficult to debug in that it's code that involves both generics and macros causing an error as part of any failure in a long chain of checked arithmetic, which I'm trying to debug from the context of a concrete stream cipher impl (both chacha20 and salsa20) where it's operating over a generic type.

The error manifests as OverflowError:

RustCrypto/stream-ciphers#205 (comment)

This commit reverts to the previous implementation, which is at least much simpler.

This reverts the implementation of `SeekNum::from_block_byte` which was
merged as part of #435.
I'm not exactly sure what the issue is and it's somewhat difficult to
debug in that it's code that involves both generics and macros causing
an error as part of any failure in a long chain of checked arithmetic,
which I'm trying to debug from the context of a concrete stream cipher
impl (both `chacha20` and `salsa20`) where it's operating over a generic
type.
The error manifests as `OverflowError`:
RustCrypto/stream-ciphers#205 (comment)
This commit reverts to the previous implementation, which is at least
much simpler.
@tarcieri

Copy link
Copy Markdown
MemberAuthor

I've confirmed this fixes the test failures in the chacha20 and salsa20 crates locally.

@tarcieri
tarcieri merged commit 2f6287c into masterDec 30, 2020
@tarcieri
tarcieri deleted the cipher/revert-seeknum-changes branch December 30, 2020 04:09
@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov this appears to be a bug in the new implementation of this logic, although I'm not sure what specifically the problem was

@newpavlov

Copy link
Copy Markdown
Member

I will try to look into it.

@newpavlov

Copy link
Copy Markdown
Member

Ah, I've changed how block-buffer handles counters to simplify downstream implementations. Let's say we have two counters (block_counter, buffer_counter), assuming we process one byte at a time previously we had sequence (0, 0), (0, 1), (0, 2), etc. In the new version we have the following sequence instead: (0, 0), (1, 1), (1, 2), etc. It allows to merge block counter increment and generation of a new block.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov is there something that needs to change in chacha20 and salsa20? I was confused why their test suites were failing with OverflowError:

RustCrypto/stream-ciphers#205 (comment)

@newpavlov

Copy link
Copy Markdown
Member

Probably, yes. I will need some time to refresh my memory of how they structured. When working on the cipher PR i was mostly working with the ctr crate, so I am not sure how compatible the introduced changes with chacha20 and other stream ciphers.

@tarcieri

tarcieri commented Dec 30, 2020

Copy link
Copy Markdown
MemberAuthor

Both chacha20 and salsa20 contain what was originally copypasta from the ctr crate, so it likely needs to be updated in both.

Hopefully they can lean more heavily on block-buffer going forward to simplify these updates.

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.

2 participants

@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('^' + ".*" + ' cipher: revert SeekNum::from_block_byte change by tarcieri · Pull Request #439 · RustCrypto/traits · GitHub
Skip to content

cipher: revert SeekNum::from_block_byte change - #439

Merged
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes
Dec 30, 2020
Merged

cipher: revert SeekNum::from_block_byte change#439
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts the implementation of SeekNum::from_block_byte which was merged as part of #435.

I'm not exactly sure what the issue is and it's somewhat difficult to debug in that it's code that involves both generics and macros causing an error as part of any failure in a long chain of checked arithmetic, which I'm trying to debug from the context of a concrete stream cipher impl (both chacha20 and salsa20) where it's operating over a generic type.

The error manifests as OverflowError:

RustCrypto/stream-ciphers#205 (comment)

This commit reverts to the previous implementation, which is at least much simpler.

This reverts the implementation of `SeekNum::from_block_byte` which was
merged as part of #435.
I'm not exactly sure what the issue is and it's somewhat difficult to
debug in that it's code that involves both generics and macros causing
an error as part of any failure in a long chain of checked arithmetic,
which I'm trying to debug from the context of a concrete stream cipher
impl (both `chacha20` and `salsa20`) where it's operating over a generic
type.
The error manifests as `OverflowError`:
RustCrypto/stream-ciphers#205 (comment)
This commit reverts to the previous implementation, which is at least
much simpler.
@tarcieri

Copy link
Copy Markdown
MemberAuthor

I've confirmed this fixes the test failures in the chacha20 and salsa20 crates locally.

@tarcieri
tarcieri merged commit 2f6287c into masterDec 30, 2020
@tarcieri
tarcieri deleted the cipher/revert-seeknum-changes branch December 30, 2020 04:09
@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov this appears to be a bug in the new implementation of this logic, although I'm not sure what specifically the problem was

@newpavlov

Copy link
Copy Markdown
Member

I will try to look into it.

@newpavlov

Copy link
Copy Markdown
Member

Ah, I've changed how block-buffer handles counters to simplify downstream implementations. Let's say we have two counters (block_counter, buffer_counter), assuming we process one byte at a time previously we had sequence (0, 0), (0, 1), (0, 2), etc. In the new version we have the following sequence instead: (0, 0), (1, 1), (1, 2), etc. It allows to merge block counter increment and generation of a new block.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov is there something that needs to change in chacha20 and salsa20? I was confused why their test suites were failing with OverflowError:

RustCrypto/stream-ciphers#205 (comment)

@newpavlov

Copy link
Copy Markdown
Member

Probably, yes. I will need some time to refresh my memory of how they structured. When working on the cipher PR i was mostly working with the ctr crate, so I am not sure how compatible the introduced changes with chacha20 and other stream ciphers.

@tarcieri

tarcieri commented Dec 30, 2020

Copy link
Copy Markdown
MemberAuthor

Both chacha20 and salsa20 contain what was originally copypasta from the ctr crate, so it likely needs to be updated in both.

Hopefully they can lean more heavily on block-buffer going forward to simplify these updates.

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.

2 participants

@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" + ' cipher: revert SeekNum::from_block_byte change by tarcieri · Pull Request #439 · RustCrypto/traits · GitHub
Skip to content

cipher: revert SeekNum::from_block_byte change - #439

Merged
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes
Dec 30, 2020
Merged

cipher: revert SeekNum::from_block_byte change#439
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts the implementation of SeekNum::from_block_byte which was merged as part of #435.

I'm not exactly sure what the issue is and it's somewhat difficult to debug in that it's code that involves both generics and macros causing an error as part of any failure in a long chain of checked arithmetic, which I'm trying to debug from the context of a concrete stream cipher impl (both chacha20 and salsa20) where it's operating over a generic type.

The error manifests as OverflowError:

RustCrypto/stream-ciphers#205 (comment)

This commit reverts to the previous implementation, which is at least much simpler.

This reverts the implementation of `SeekNum::from_block_byte` which was
merged as part of #435.
I'm not exactly sure what the issue is and it's somewhat difficult to
debug in that it's code that involves both generics and macros causing
an error as part of any failure in a long chain of checked arithmetic,
which I'm trying to debug from the context of a concrete stream cipher
impl (both `chacha20` and `salsa20`) where it's operating over a generic
type.
The error manifests as `OverflowError`:
RustCrypto/stream-ciphers#205 (comment)
This commit reverts to the previous implementation, which is at least
much simpler.
@tarcieri

Copy link
Copy Markdown
MemberAuthor

I've confirmed this fixes the test failures in the chacha20 and salsa20 crates locally.

@tarcieri
tarcieri merged commit 2f6287c into masterDec 30, 2020
@tarcieri
tarcieri deleted the cipher/revert-seeknum-changes branch December 30, 2020 04:09
@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov this appears to be a bug in the new implementation of this logic, although I'm not sure what specifically the problem was

@newpavlov

Copy link
Copy Markdown
Member

I will try to look into it.

@newpavlov

Copy link
Copy Markdown
Member

Ah, I've changed how block-buffer handles counters to simplify downstream implementations. Let's say we have two counters (block_counter, buffer_counter), assuming we process one byte at a time previously we had sequence (0, 0), (0, 1), (0, 2), etc. In the new version we have the following sequence instead: (0, 0), (1, 1), (1, 2), etc. It allows to merge block counter increment and generation of a new block.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov is there something that needs to change in chacha20 and salsa20? I was confused why their test suites were failing with OverflowError:

RustCrypto/stream-ciphers#205 (comment)

@newpavlov

Copy link
Copy Markdown
Member

Probably, yes. I will need some time to refresh my memory of how they structured. When working on the cipher PR i was mostly working with the ctr crate, so I am not sure how compatible the introduced changes with chacha20 and other stream ciphers.

@tarcieri

tarcieri commented Dec 30, 2020

Copy link
Copy Markdown
MemberAuthor

Both chacha20 and salsa20 contain what was originally copypasta from the ctr crate, so it likely needs to be updated in both.

Hopefully they can lean more heavily on block-buffer going forward to simplify these updates.

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.

2 participants

@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('^' + ".*" + ' cipher: revert SeekNum::from_block_byte change by tarcieri · Pull Request #439 · RustCrypto/traits · GitHub
Skip to content

cipher: revert SeekNum::from_block_byte change - #439

Merged
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes
Dec 30, 2020
Merged

cipher: revert SeekNum::from_block_byte change#439
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts the implementation of SeekNum::from_block_byte which was merged as part of #435.

I'm not exactly sure what the issue is and it's somewhat difficult to debug in that it's code that involves both generics and macros causing an error as part of any failure in a long chain of checked arithmetic, which I'm trying to debug from the context of a concrete stream cipher impl (both chacha20 and salsa20) where it's operating over a generic type.

The error manifests as OverflowError:

RustCrypto/stream-ciphers#205 (comment)

This commit reverts to the previous implementation, which is at least much simpler.

This reverts the implementation of `SeekNum::from_block_byte` which was
merged as part of #435.
I'm not exactly sure what the issue is and it's somewhat difficult to
debug in that it's code that involves both generics and macros causing
an error as part of any failure in a long chain of checked arithmetic,
which I'm trying to debug from the context of a concrete stream cipher
impl (both `chacha20` and `salsa20`) where it's operating over a generic
type.
The error manifests as `OverflowError`:
RustCrypto/stream-ciphers#205 (comment)
This commit reverts to the previous implementation, which is at least
much simpler.
@tarcieri

Copy link
Copy Markdown
MemberAuthor

I've confirmed this fixes the test failures in the chacha20 and salsa20 crates locally.

@tarcieri
tarcieri merged commit 2f6287c into masterDec 30, 2020
@tarcieri
tarcieri deleted the cipher/revert-seeknum-changes branch December 30, 2020 04:09
@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov this appears to be a bug in the new implementation of this logic, although I'm not sure what specifically the problem was

@newpavlov

Copy link
Copy Markdown
Member

I will try to look into it.

@newpavlov

Copy link
Copy Markdown
Member

Ah, I've changed how block-buffer handles counters to simplify downstream implementations. Let's say we have two counters (block_counter, buffer_counter), assuming we process one byte at a time previously we had sequence (0, 0), (0, 1), (0, 2), etc. In the new version we have the following sequence instead: (0, 0), (1, 1), (1, 2), etc. It allows to merge block counter increment and generation of a new block.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov is there something that needs to change in chacha20 and salsa20? I was confused why their test suites were failing with OverflowError:

RustCrypto/stream-ciphers#205 (comment)

@newpavlov

Copy link
Copy Markdown
Member

Probably, yes. I will need some time to refresh my memory of how they structured. When working on the cipher PR i was mostly working with the ctr crate, so I am not sure how compatible the introduced changes with chacha20 and other stream ciphers.

@tarcieri

tarcieri commented Dec 30, 2020

Copy link
Copy Markdown
MemberAuthor

Both chacha20 and salsa20 contain what was originally copypasta from the ctr crate, so it likely needs to be updated in both.

Hopefully they can lean more heavily on block-buffer going forward to simplify these updates.

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.

2 participants

@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('^' + ".*" + ' cipher: revert SeekNum::from_block_byte change by tarcieri · Pull Request #439 · RustCrypto/traits · GitHub
Skip to content

cipher: revert SeekNum::from_block_byte change - #439

Merged
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes
Dec 30, 2020
Merged

cipher: revert SeekNum::from_block_byte change#439
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts the implementation of SeekNum::from_block_byte which was merged as part of #435.

I'm not exactly sure what the issue is and it's somewhat difficult to debug in that it's code that involves both generics and macros causing an error as part of any failure in a long chain of checked arithmetic, which I'm trying to debug from the context of a concrete stream cipher impl (both chacha20 and salsa20) where it's operating over a generic type.

The error manifests as OverflowError:

RustCrypto/stream-ciphers#205 (comment)

This commit reverts to the previous implementation, which is at least much simpler.

This reverts the implementation of `SeekNum::from_block_byte` which was
merged as part of #435.
I'm not exactly sure what the issue is and it's somewhat difficult to
debug in that it's code that involves both generics and macros causing
an error as part of any failure in a long chain of checked arithmetic,
which I'm trying to debug from the context of a concrete stream cipher
impl (both `chacha20` and `salsa20`) where it's operating over a generic
type.
The error manifests as `OverflowError`:
RustCrypto/stream-ciphers#205 (comment)
This commit reverts to the previous implementation, which is at least
much simpler.
@tarcieri

Copy link
Copy Markdown
MemberAuthor

I've confirmed this fixes the test failures in the chacha20 and salsa20 crates locally.

@tarcieri
tarcieri merged commit 2f6287c into masterDec 30, 2020
@tarcieri
tarcieri deleted the cipher/revert-seeknum-changes branch December 30, 2020 04:09
@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov this appears to be a bug in the new implementation of this logic, although I'm not sure what specifically the problem was

@newpavlov

Copy link
Copy Markdown
Member

I will try to look into it.

@newpavlov

Copy link
Copy Markdown
Member

Ah, I've changed how block-buffer handles counters to simplify downstream implementations. Let's say we have two counters (block_counter, buffer_counter), assuming we process one byte at a time previously we had sequence (0, 0), (0, 1), (0, 2), etc. In the new version we have the following sequence instead: (0, 0), (1, 1), (1, 2), etc. It allows to merge block counter increment and generation of a new block.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov is there something that needs to change in chacha20 and salsa20? I was confused why their test suites were failing with OverflowError:

RustCrypto/stream-ciphers#205 (comment)

@newpavlov

Copy link
Copy Markdown
Member

Probably, yes. I will need some time to refresh my memory of how they structured. When working on the cipher PR i was mostly working with the ctr crate, so I am not sure how compatible the introduced changes with chacha20 and other stream ciphers.

@tarcieri

tarcieri commented Dec 30, 2020

Copy link
Copy Markdown
MemberAuthor

Both chacha20 and salsa20 contain what was originally copypasta from the ctr crate, so it likely needs to be updated in both.

Hopefully they can lean more heavily on block-buffer going forward to simplify these updates.

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.

2 participants

@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); } })(); })(); cipher: revert SeekNum::from_block_byte change by tarcieri · Pull Request #439 · RustCrypto/traits · GitHub
Skip to content

cipher: revert SeekNum::from_block_byte change - #439

Merged
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes
Dec 30, 2020
Merged

cipher: revert SeekNum::from_block_byte change#439
tarcieri merged 1 commit into
masterfrom
cipher/revert-seeknum-changes

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts the implementation of SeekNum::from_block_byte which was merged as part of #435.

I'm not exactly sure what the issue is and it's somewhat difficult to debug in that it's code that involves both generics and macros causing an error as part of any failure in a long chain of checked arithmetic, which I'm trying to debug from the context of a concrete stream cipher impl (both chacha20 and salsa20) where it's operating over a generic type.

The error manifests as OverflowError:

RustCrypto/stream-ciphers#205 (comment)

This commit reverts to the previous implementation, which is at least much simpler.

This reverts the implementation of `SeekNum::from_block_byte` which was
merged as part of #435.
I'm not exactly sure what the issue is and it's somewhat difficult to
debug in that it's code that involves both generics and macros causing
an error as part of any failure in a long chain of checked arithmetic,
which I'm trying to debug from the context of a concrete stream cipher
impl (both `chacha20` and `salsa20`) where it's operating over a generic
type.
The error manifests as `OverflowError`:
RustCrypto/stream-ciphers#205 (comment)
This commit reverts to the previous implementation, which is at least
much simpler.
@tarcieri

Copy link
Copy Markdown
MemberAuthor

I've confirmed this fixes the test failures in the chacha20 and salsa20 crates locally.

@tarcieri
tarcieri merged commit 2f6287c into masterDec 30, 2020
@tarcieri
tarcieri deleted the cipher/revert-seeknum-changes branch December 30, 2020 04:09
@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov this appears to be a bug in the new implementation of this logic, although I'm not sure what specifically the problem was

@newpavlov

Copy link
Copy Markdown
Member

I will try to look into it.

@newpavlov

Copy link
Copy Markdown
Member

Ah, I've changed how block-buffer handles counters to simplify downstream implementations. Let's say we have two counters (block_counter, buffer_counter), assuming we process one byte at a time previously we had sequence (0, 0), (0, 1), (0, 2), etc. In the new version we have the following sequence instead: (0, 0), (1, 1), (1, 2), etc. It allows to merge block counter increment and generation of a new block.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@newpavlov is there something that needs to change in chacha20 and salsa20? I was confused why their test suites were failing with OverflowError:

RustCrypto/stream-ciphers#205 (comment)

@newpavlov

Copy link
Copy Markdown
Member

Probably, yes. I will need some time to refresh my memory of how they structured. When working on the cipher PR i was mostly working with the ctr crate, so I am not sure how compatible the introduced changes with chacha20 and other stream ciphers.

@tarcieri

tarcieri commented Dec 30, 2020

Copy link
Copy Markdown
MemberAuthor

Both chacha20 and salsa20 contain what was originally copypasta from the ctr crate, so it likely needs to be updated in both.

Hopefully they can lean more heavily on block-buffer going forward to simplify these updates.

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.

2 participants

@tarcieri@newpavlov