...

Source file src/crypto/cipher/xor_amd64.go

Documentation: crypto/cipher

		 1  // Copyright 2018 The Go Authors. All rights reserved.
		 2  // Use of this source code is governed by a BSD-style
		 3  // license that can be found in the LICENSE file.
		 4  
		 5  package cipher
		 6  
		 7  // xorBytes xors the bytes in a and b. The destination should have enough
		 8  // space, otherwise xorBytes will panic. Returns the number of bytes xor'd.
		 9  func xorBytes(dst, a, b []byte) int {
		10  	n := len(a)
		11  	if len(b) < n {
		12  		n = len(b)
		13  	}
		14  	if n == 0 {
		15  		return 0
		16  	}
		17  	_ = dst[n-1]
		18  	xorBytesSSE2(&dst[0], &a[0], &b[0], n) // amd64 must have SSE2
		19  	return n
		20  }
		21  
		22  func xorWords(dst, a, b []byte) {
		23  	xorBytes(dst, a, b)
		24  }
		25  
		26  //go:noescape
		27  func xorBytesSSE2(dst, a, b *byte, n int)
		28  

View as plain text