xts: fix incorrect length check

This change does two things:
 1. Fix a length checking bug in the Decrypt function.
 2. Use binary.LittleEndian for byte conversions.

Fixes golang/go#19881

Change-Id: I9d33b92f2bd7e6ca8f69308388f1e8a5c6df2be8
Reviewed-on: https://go-review.googlesource.com/39954
Reviewed-by: Adam Langley <agl@golang.org>
This commit is contained in:
Andreas Auernhammer
2017-06-01 17:27:53 +00:00
committed by Adam Langley
parent 080743b219
commit 976dfd0a58
2 changed files with 39 additions and 20 deletions
+20
View File
@@ -83,3 +83,23 @@ func TestXTS(t *testing.T) {
}
}
}
func TestShorterCiphertext(t *testing.T) {
// Decrypt used to panic if the input was shorter than the output. See
// https://go-review.googlesource.com/c/39954/
c, err := NewCipher(aes.NewCipher, make([]byte, 32))
if err != nil {
t.Fatalf("NewCipher failed: %s", err)
}
plaintext := make([]byte, 32)
encrypted := make([]byte, 48)
decrypted := make([]byte, 48)
c.Encrypt(encrypted, plaintext, 0)
c.Decrypt(decrypted, encrypted[:len(plaintext)], 0)
if !bytes.Equal(plaintext, decrypted[:len(plaintext)]) {
t.Errorf("En/Decryption is not inverse")
}
}