Browse Source

core/crypto/aes: Disable bounds checking for the CTR loops

Yawning Angel 1 year ago
parent
commit
b1d6e4139e
2 changed files with 3 additions and 3 deletions
  1. 2 2
      core/crypto/aes/aes_ctr.odin
  2. 1 1
      core/crypto/aes/aes_gcm.odin

+ 2 - 2
core/crypto/aes/aes_ctr.odin

@@ -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 {

+ 1 - 1
core/crypto/aes/aes_gcm.odin

@@ -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)