aboutsummaryrefslogtreecommitdiff
path: root/bcrypt/bcrypt_test.go
diff options
context:
space:
mode:
authorRoland Shoemaker <roland@golang.org>2022-11-14 12:15:57 -0800
committerGopher Robot <gobot@golang.org>2022-12-21 17:19:30 +0000
commitbc7d1d1eb54b3530da4f5ec31625c95d7df40231 (patch)
treeaa325551f9830160d59efd50429661288436bfd7 /bcrypt/bcrypt_test.go
parent7e3ac2043e18f9cbc0c089cb28e73caac2c9d9d1 (diff)
downloadgo-x-crypto-bc7d1d1eb54b3530da4f5ec31625c95d7df40231.tar.xz
bcrypt: reject passwords longer than 72 bytes
By design, bcrypt only uses the first 72 bytes of a password when generating a hash. Most implementations, including the reference one, simply silently ignore any trailing input when provided passwords longer than 72 bytes. This can cause confusion for users who expect the entire password to be used to generate the hash. In GenerateFromPassword, reject passwords longer than 72 bytes. CompareHashAndPassword will still accept these passwords, since we cannot break hashes that have already been stored. Fixes golang/go#36546 Change-Id: I039addd2a2961a7fa9d1e4a3e892a9e3c8bf4c9a Reviewed-on: https://go-review.googlesource.com/c/crypto/+/450415 Reviewed-by: Damien Neil <dneil@google.com> Reviewed-by: Jason McNeil <jmcneil@x2studios.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Filippo Valsorda <filippo@golang.org> Auto-Submit: Roland Shoemaker <roland@golang.org> Run-TryBot: Roland Shoemaker <roland@golang.org>
Diffstat (limited to 'bcrypt/bcrypt_test.go')
-rw-r--r--bcrypt/bcrypt_test.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/bcrypt/bcrypt_test.go b/bcrypt/bcrypt_test.go
index b7162d8..8b589e3 100644
--- a/bcrypt/bcrypt_test.go
+++ b/bcrypt/bcrypt_test.go
@@ -241,3 +241,10 @@ func TestNoSideEffectsFromCompare(t *testing.T) {
t.Errorf("got=%q want=%q", got, want)
}
}
+
+func TestPasswordTooLong(t *testing.T) {
+ _, err := GenerateFromPassword(make([]byte, 73), 1)
+ if err != ErrPasswordTooLong {
+ t.Errorf("unexpected error: got %q, want %q", err, ErrPasswordTooLong)
+ }
+}