mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 07:38:48 +00:00
core/crypto/aes: Disable bounds checking for the CTR loops
This commit is contained in:
@@ -47,7 +47,7 @@ xor_bytes_ctr :: proc(ctx: ^Context_CTR, dst, src: []byte) {
|
|||||||
panic("crypto/aes: dst and src alias inexactly")
|
panic("crypto/aes: dst and src alias inexactly")
|
||||||
}
|
}
|
||||||
|
|
||||||
for remaining := len(src); remaining > 0; {
|
#no_bounds_check for remaining := len(src); remaining > 0; {
|
||||||
// Process multiple blocks at once
|
// Process multiple blocks at once
|
||||||
if ctx._off == BLOCK_SIZE {
|
if ctx._off == BLOCK_SIZE {
|
||||||
if nr_blocks := remaining / BLOCK_SIZE; nr_blocks > 0 {
|
if nr_blocks := remaining / BLOCK_SIZE; nr_blocks > 0 {
|
||||||
@@ -85,7 +85,7 @@ keystream_bytes_ctr :: proc(ctx: ^Context_CTR, dst: []byte) {
|
|||||||
assert(ctx._is_initialized)
|
assert(ctx._is_initialized)
|
||||||
|
|
||||||
dst := dst
|
dst := dst
|
||||||
for remaining := len(dst); remaining > 0; {
|
#no_bounds_check for remaining := len(dst); remaining > 0; {
|
||||||
// Process multiple blocks at once
|
// Process multiple blocks at once
|
||||||
if ctx._off == BLOCK_SIZE {
|
if ctx._off == BLOCK_SIZE {
|
||||||
if nr_blocks := remaining / BLOCK_SIZE; nr_blocks > 0 {
|
if nr_blocks := remaining / BLOCK_SIZE; nr_blocks > 0 {
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ open_gcm :: proc(ctx: ^Context_GCM, dst, nonce, aad, ciphertext, tag: []byte) ->
|
|||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset_ctr sanitizes the Context_GCM. The Context_GCM must be
|
// reset_gcm sanitizes the Context_GCM. The Context_GCM must be
|
||||||
// re-initialized to be used again.
|
// re-initialized to be used again.
|
||||||
reset_gcm :: proc "contextless" (ctx: ^Context_GCM) {
|
reset_gcm :: proc "contextless" (ctx: ^Context_GCM) {
|
||||||
reset_impl(&ctx._impl)
|
reset_impl(&ctx._impl)
|
||||||
|
|||||||
Reference in New Issue
Block a user