Dmitry Chestnykh b7f382b979 go.crypto/blowfish: support salts larger than 16 bytes.
Supporting larger salts makes it possible to implement bcrypt-pbkdf
(http://www.tedunangst.com/flak/post/bcrypt-pbkdf), which is used in
the latest OpenSSH versions to encrypt key files.

This change makes expandKeyWithSalt (and thus NewSaltedCipher) about
20% slower, but since it isn't used in the "heavy" phase of computation
in bcrypt (it uses ExpandKey, which didn't change), the effect on
bcrypt performance is negligible.

The 16-byte limit was an artifact of optimization and due to the fact
that it was enough for bcrypt; Eksblowfish spec or other
implementations don't limit the salt size.

Additionally, there was a bug in the previous implementation: it only
generated correct results for salts consisting of 4, 8, or 16 bytes, and panicked if salt had zero length.

LGTM=agl
R=golang-codereviews, gobot, agl
CC=golang-codereviews
https://golang.org/cl/102720045
2014-08-01 14:09:20 -07:00
2013-06-07 16:05:15 -04:00
2014-05-25 13:56:25 -07:00
2012-01-25 15:31:12 -05:00
2012-02-01 14:20:27 -05:00
2012-01-25 15:31:12 -05:00
2013-01-17 11:42:30 -05:00
2012-12-10 11:00:48 -05:00
2012-12-10 11:00:48 -05:00
2012-07-12 11:14:12 -04:00
2012-03-17 15:19:30 +11:00
2012-01-25 15:31:12 -05:00

This repository holds supplementary Go cryptography libraries.

To submit changes to this repository, see http://golang.org/doc/contribute.html.
S
Description
Mirror of ys-ll/crypto (GitHub), kept for paraterm builds
https://golang.org/x/crypto
Readme BSD-3-Clause
8.1 MiB
Languages
Go 88.6%
Assembly 11.1%
C 0.3%