Commit Graph
115 Commits
Author SHA1 Message Date
David Symonds 41998200eb go.crypto/ssh/test: Replace FailNow with Fail where it is obvious that the test doesn't want to fail now.
Improve a couple of test error messages too.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/8661045
2013-04-23 12:15:38 +10:00
David Symonds 952dc41929 go.crypto/ssh/test: Fix distracting nil pointer dereference in a test.
If cgo is disabled (such as it appears to be on a subset of builders),
username() panics, and s.cmd is nil; let's not panic while recovering
from a different panic.

R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/8820043
2013-04-17 17:40:33 +10:00
David Symonds c7af4ef7d9 go.crypto/ssh/test: improve diagnostics for test failing to get username.
R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/8817043
2013-04-17 16:22:42 +10:00
Albert Strasheim 62eb5d3fac go.crypto/ssh/test: wait on sshd process in tests
R=dave
CC=golang-dev
https://golang.org/cl/8449043
2013-04-07 19:26:33 +10:00
Eric Roshan-Eisner d52ec73510 go.crypto/sha3: change keccakF to stateless function
Taken from my implementation: https://bitbucket.org/ede/sha3
Performance gain from using less memory and more registers.

benchmark                       old ns/op    new ns/op    delta
BenchmarkPermutationFunction         1484         1118  -24.66%
BenchmarkBulkKeccak512             374993       295178  -21.28%
BenchmarkBulkKeccak256             215496       172335  -20.03%

benchmark                        old MB/s     new MB/s  speedup
BenchmarkPermutationFunction       134.76       178.80    1.33x
BenchmarkBulkKeccak512              43.69        55.51    1.27x
BenchmarkBulkKeccak256              76.03        95.07    1.25x

R=jcb, agl
CC=golang-dev, nigeltao
https://golang.org/cl/8088044
2013-04-02 10:41:35 -04:00
Nigel Tao 44f6c2e4a2 go.crypto/sha3: fix typo; remove 4 million map lookups (5% of "go test"
time); delete some comments that didn't add much and were incorrect
anyway (the test specification was tc, not t).

R=jcb
CC=agl, golang-dev
https://golang.org/cl/7665045
2013-03-23 10:10:15 +11:00
Adam Langley 1ddfbba54b go.crypto/ssh: fix tests with -cpu 1,2.
When running the ssh tests several times (e.g. with -cpu 1,2), the
second run would fail because testing globals had been altered. This
change avoids altering the globals since the default worked anyway.

Fixes golang/go#4715.

R=golang-dev, minux.ma
CC=golang-dev
https://golang.org/cl/7903045
2013-03-22 15:51:39 -04:00
Joseph Bonneau 0bc0bccba9 go.crypto/sha3: new package
Added a pure Go implementation of SHA3 (Keccak) which implements the hash.Hash interface.
A test file is included with performance benchmarks and standard test vectors.

R=agl, nigeltao
CC=golang-dev
https://golang.org/cl/7760044
2013-03-22 14:59:59 -04:00
Adam Langley dc703e91d7 ssh/test: deflake session test.
The session test previously had a one second timeout for the output of
stty and this was leading to flakiness. This change removes the timeout
since go test has a generic timeout mechanism.

Additionally, the test was looking for "-echo" in the output to test
the value of the echo flag. However, there are also typically "echoe",
"echok" and "echonl" flags, and "-echo" could be a prefix of any of
time. Thus we now also match a trailing space.

R=golang-dev, rsc, extraterrestrial.neighbour
CC=golang-dev
https://golang.org/cl/7579043
2013-03-08 10:09:40 -05:00
Shenghou Ma eccdd1285a go.crypto/bcrypt: fix interger overflow for cost == 31
Fixes golang/go#4803.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/7329043
2013-02-19 19:16:34 +08:00
Shenghou Ma bf5456312c go.crypto/{curve25519,poly1305,salsa20/salsa}: add //go:noescape annotation
R=golang-dev, rsc, agl
CC=golang-dev
https://golang.org/cl/7319045
2013-02-19 19:15:01 +08:00
Adam Langley db732cbcc6 ssh/terminal: add darwin support.
terminal contains a number of utility functions that are currently only
implemented for Linux. Darwin uses different named constants for
getting and setting the terminal state so this change splits them off
as constants and defines them for each arch.

R=golang-dev, minux.ma
CC=golang-dev
https://golang.org/cl/7286043
2013-02-04 10:36:09 -05:00
Dmitry Chestnykh 97488752ad scrypt: 2x faster.
Work on uint32 slices instead of bytes.
Replace usage of Salsa20/8 from salsa package with
the specialized version.

benchmark       old ns/op    new ns/op    delta
BenchmarkKey    266430525    126657130  -52.46%

R=agl
CC=golang-dev
https://golang.org/cl/7139050
2013-01-17 11:42:30 -05:00
Adam Langley 03be8f3bf0 ssh/terminal: add GetState and make ReadPassword work in raw mode.
GetState is useful for restoring the terminal in a signal handler.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6990043
2012-12-22 11:02:28 -05:00
Casey Marshall 50ff460fe1 openpgp: remove TeeReader from packet.Read
This is a followup to issue 6927044. I *really* don't want to
break streaming for large encrypted data packets.

Removing the automatic re-parsing. OpaqueReader can be
used for recovering useful information from mangled/unsupported packets.

R=agl
CC=golang-dev
https://golang.org/cl/6944056
2012-12-18 17:57:21 -05:00
Eric Milliken 61ab4d36df go.crypto/ssh: support OpenSSH keepalives
Fixes golang/go#4552.

R=minux.ma, agl
CC=golang-dev
https://golang.org/cl/6948059
2012-12-18 11:33:58 -05:00
Jonathan Pittman d95b28330d go.crypto/ssh: some cleanup
Simplify MarshalAuthorizedKey by using the algoName func.
Make the algoName func be very specific about supported key types in openssh certs.
Generalize some of the commentary that previously mentioned specific key types.

R=agl, dave
CC=golang-dev
https://golang.org/cl/6938067
2012-12-16 10:47:10 -05:00
Casey Marshall 2da167fbbe openpgp: improve parser resilience & flexibility, add PublicKey.BitLength()
These are improvements I've made as necessary to develop Hockeypuck,
an OpenPGP keyserver (https://launchpad.net/hockeypuck).

The max armor line length was increased to 96 because some keyservers (SKS)
will output armor with lines greater than 64 (the prior max).

I've exposed packet.ReadEntity to support stream-parsing, useful for
large SKS dump files.

ReadKeyRing attempts to recover in the event of malformed data.

Because many packet types are not yet supported, I added OpaquePacket to
capture unsupported types for offline storage and later reparsing.

R=agl
CC=golang-dev
https://golang.org/cl/6927044
2012-12-15 14:30:05 -05:00
Adam Langley 84f97f92d0 go.crypto/bn256: updates tests in light of b2b2ae1f5140.
https://golang.org/cl/6850091 fixed the bug in question.
This change updates the tests so that they are broken without
that change.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/6846091
2012-12-15 14:19:38 -05:00
Mikio Hara eeef66c528 go.crypto: gofmt -w -s
R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/6948057
2012-12-15 14:19:17 +09:00
Jonathan Pittman 54c65aebf4 go.crypto/ssh: Miscellaneous changes up for discussion.
Export key and certificate algorithm names.
Switch from string literals over to using the constants for any key/cert algorithm references.
Make URL references visible in the godoc web display.
Standardize url reference names with surrounding [].

R=dave, agl, jonathan.mark.pittman
CC=golang-dev
https://golang.org/cl/6944047
2012-12-14 10:11:06 -05:00
Alex Brainman 97c15b3da8 go.crypto/ssh/test: move some variables into common os source file to fix windows build
R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/6944048
2012-12-14 18:45:36 +11:00
Jonathan Pittman 94c9f92c92 go.crypto/ssh: Add support for ECDSA keys and certs.
R=agl, dave
CC=golang-dev
https://golang.org/cl/6873060
2012-12-14 05:52:19 +11:00
Adam Langley 4002be2701 go.crypto/ssh: run gofmt
gofmt got better at removing trailing whitespace.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6929044
2012-12-10 18:12:36 -05:00
Shawn Ledbetter 887809b6be ssh: add functions for public keys in wire & auth keys format.
This allows easy import/export of public keys in the format
expected by OpenSSH for authorized_keys files, as well as
allowing comparisons with ServerConfig's PublickeyCallback.
Fixes golang/go#3908.

R=agl, dave, golang-dev, bradfitz
CC=agl, golang-dev
https://golang.org/cl/6855107
2012-12-10 17:43:09 -05:00
Damian Gryski 62944567d8 go.crypto: remove cipher.Reset()
The go.crypto repo was missed when this function was removed from the
ciphers in the standard library.

R=agl
CC=golang-dev
https://golang.org/cl/6904062
2012-12-10 11:00:48 -05:00
Adam Langley 4c5258d8b6 go.crypto/bn256: ensure that t is initialised correctly.
t caches the value of z squared, but wasn't getting correctly
initialised when the value of z was reset.

R=golang-dev
CC=golang-dev
https://golang.org/cl/6850091
2012-11-22 13:44:59 -05:00
Joel Sing ae58a7bde0 go.crypto/ssh: make tests work on non-cgo platforms.
user.Current() currently requires cgo - if an error is returned
attempt to get the username from the environment.

R=golang-dev, minux.ma, bradfitz, dave
CC=golang-dev
https://golang.org/cl/6819113
2012-11-12 02:50:33 +11:00
Ian Lance Taylor 153731a6de go.crypto/ssh/test: don't kill process if it was never started
This case arises if s.cmd.Start fails when called by
server.Dial.

R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/6821097
2012-11-08 09:08:33 -08:00
Ian Lance Taylor 6779fad1d0 go.crypto: add and adjust +build lines for 386 and gccgo
R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/6827061
2012-11-07 22:50:39 -08:00
Jeff Hodges 2c5e207468 go.crypto/bcrypt: add Cost function
Extracts the cost used to generate a bcrypt hash from the hash itself.

R=agl, agl, dchest
CC=golang-dev
https://golang.org/cl/6810051
2012-10-31 12:35:46 -04:00
Dave Cheney 1582bf0781 go.crypto/ssh: never negotiate unsupported ciphers
Fixes golang/go#4285.

Adding a new cipher that is supported by the remote end, but not supported by our client causes that cipher to be considered a valid candidate. This fails later in setupKeys when there is no cipherModes configuration.

In summary, unsupported ciphers cannot be willed into existence by adding them to the client config. This change enforces this.

R=golang-dev, agl
CC=golang-dev
https://golang.org/cl/6780047
2012-10-30 18:13:59 +11:00
Willem van der Schyff 2fccde5d00 go.crypto/ssh: add terminal modes to ssh.RequestPty()
R=dave, agl
CC=golang-dev
https://golang.org/cl/6655046
2012-10-21 16:16:55 +11:00
Adam Langley c9c0e06eed go.crypto/otr: expose IsEncrypted.
It's useful to expose this bit of state because, although callers can
keep track of it themselves, it's already in the Conversation so it
seems wasteful to make them do so.

R=golang-dev, ioerror
CC=golang-dev
https://golang.org/cl/6724056
2012-10-17 14:58:16 -04:00
Dave Cheney 4ce1924ebb go.crypto: various: fix appengine compatibility
Fixes golang/go#4102.

R=russross, minux.ma, rsc, agl
CC=golang-dev
https://golang.org/cl/6623053
2012-10-09 13:15:42 +11:00
Dmitry Chestnykh dc67354e86 go.crypto/blowfish: document that only 16 bytes of salt are used.
Also fix salt expansion code to fill the properly sized array,
since the following code never uses more than 4 uints.

Also remove unused expandedKey array.

R=golang-dev, agl
CC=golang-dev
https://golang.org/cl/6622050
2012-10-06 10:03:43 -04:00
Dave Cheney 0b9766a68d go.crypto/ssh: new test subpackage
This proposal is an attempt to improve the state of functional testing in the ssh package. The previous functional tests required the user to give away some personal details, like their password and private key to run the tests, and so were probably not run as frequently as they should.

R=agl, gustav.paul, kardianos, fullung
CC=golang-dev
https://golang.org/cl/6601043
2012-10-05 11:11:10 +10:00
Gustav Paul 1aa39d6262 go.crypto/ssh: Read returns all unread bytes before returning io.EOF.
Fixes golang/go#4158.

R=dave, agl
CC=golang-dev
https://golang.org/cl/6586060
2012-10-03 09:25:25 +10:00
Russ Cox b1c91de896 curve25519: fix asm comment
As suggested in review of CL 6544048.

TBR=seed
CC=golang-dev
https://golang.org/cl/6553065
2012-09-24 11:15:53 -04:00
Russ Cox 750c6a9860 go.crypto: match asm variable names to Go func declarations
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/6544048
2012-09-21 00:36:01 -04:00
Dmitry Chestnykh 6ba10a7acb go.crypto/scrypt: add package
R=golang-dev, agl, r
CC=golang-dev
https://golang.org/cl/6535043
2012-09-18 16:59:45 -04:00
Dmitry Chestnykh 815dd50d91 go.crypto/salsa20: add salsa.Core208.
R=golang-dev, agl, r
CC=golang-dev
https://golang.org/cl/6530044
2012-09-18 13:46:45 -04:00
Adam Langley 9c0a3ae199 go.crypto/poly1305: enable AMD64 assembly
This change alters the assembly to use FSUBD instructions such that
6l will actually emit the correct FSUBRD instructions and enables
the assembly code.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/6514044
2012-09-14 17:00:38 -04:00
Dave Cheney 591d65c664 go.crypto/ssh: sanity check incoming packet length
The check for a sensible packet length was removed a while ago
when the window size and channel packet size checks were moved
into channel.go. While the RFC suggests that any packet of size
less than uint32 -1 is valid, most implmentations limit the size
to a smaller value. OpenSSH chose 256kb, so that sounds like a
sensible default.

R=agl, huin, kardianos
CC=golang-dev
https://golang.org/cl/6490098
2012-09-10 06:57:24 +10:00
Adam Langley f09bfbbb56 go.crypto/nacl: add package
R=golang-dev, dchest, r, rsc
CC=golang-dev
https://golang.org/cl/6497101
2012-09-09 11:18:00 -04:00
Adam Langley 6814ed3bb5 go.crypto/poly1305: add package.
(Reference implementation by dchest. amd64 disabled pending 6l fix.)

R=golang-dev, dchest
CC=golang-dev
https://golang.org/cl/6494105
2012-09-08 14:24:19 -04:00
Adam Langley 62fc357018 go.crypto/salsa20: add package.
Package salsa20 implements the Salsa20 stream cipher as specified in
http://cr.yp.to/snuffle/spec.pdf.

(Reference implementation by dchest.)

R=golang-dev, dchest
CC=golang-dev
https://golang.org/cl/6496083
2012-09-08 10:41:44 -04:00
Dave Cheney 552202b8e3 go.crypto/ssh: assorted close related fixes
Fixes golang/go#3810.

Fixes chanWriter Write after close behaviour bug.

Fixes serverChan writePacket after close bug.

Addresses final comments by agl on 6405064, plus various cleanups.

R=agl, kardianos, gustav.paul, fullung
CC=golang-dev
https://golang.org/cl/6479056
2012-09-05 09:47:02 +10:00
Dave Cheney 06790d30c2 go.crypto/ssh: improve test reliability
Fixes golang/go#3989.

Tested for several hours on an 8 core ec2 instance with
random GOMAXPROC values.

Also, rolls server_test.go into session_test using the
existing dial() framework.

R=fullung, agl, kardianos
CC=golang-dev
https://golang.org/cl/6475063
2012-08-28 08:06:15 +10:00
Dave Cheney d1710933d8 go.crypto/ssh: fix test failure on windows
Use a handler that does not attempt to send a status message
as the failing test closes the connection abruptly.

Also, check the err response on all shell.ReadLine operations.

R=agl, minux.ma, kardianos
CC=golang-dev
https://golang.org/cl/6487043
2012-08-25 17:52:59 +10:00