Commit Graph
51 Commits
Author SHA1 Message Date
Peter Armitage dd83c0b64f bcrypt: Documentation
If you supply a cost < MinCost this package will use DefaultCost, not MinCost

R=golang-dev, jeff
CC=golang-dev
https://golang.org/cl/6354100
2012-07-16 09:37:31 -04:00
Adam Langley e6db49c37b xts: add package.
Package xts implements the XTS cipher mode as specified in IEEE
P1619/D16.

R=golang-dev, r, dchest
CC=golang-dev
https://golang.org/cl/6392050
2012-07-12 11:14:12 -04:00
Gary Burd f997e8a33c go.crypto/ssh: add ClientAuthAgent
ClientAuthAgent adapts a *AgentClient to a ClientAuth.

R=golang-dev, agl
CC=golang-dev
https://golang.org/cl/6352056
2012-06-29 13:05:23 -04:00
Christine Hansmann cde552e05f ssh: added RequestSubsystem().
RequestSubsystem requests the association of a subsystem with the ssh
session on the remote host. A subsystem is a predefined command that
runs in the background when the ssh session is initiated (i.e. sftp).

R=golang-dev, agl
CC=golang-dev, gustav.paul
https://golang.org/cl/6295096
2012-06-18 12:11:37 -04:00
Adam Langley 929dedf39d otr: add package
otr implements the Off-the-Record messaging protocol from
http://www.cypherpunks.ca/otr/. It's often used on IRC and Jabber
for private conversations.

R=golang-dev, rsc, dchest
CC=golang-dev
https://golang.org/cl/6300064
2012-06-14 13:36:13 -04:00
Daniel Theophanes f8bd48becc go.crypto/ssh: allow server to respond to client init key exchange.
A windows SSH client, PuTTY, by default re-keys after every 60 minutes
or 1G of data transfer.

R=dave, agl
CC=golang-dev
https://golang.org/cl/6301071
2012-06-12 16:34:46 -04:00
Dave Cheney 55aa08130e go.crypto/ssh: allow zero sized window adjustments
The RFC doesn't prohibit zero sized window adjustments and
there is evidence of well known clients using them in the
wild.

R=agl, kardianos, gustav.paul
CC=golang-dev
https://golang.org/cl/6209082
2012-05-22 12:04:51 +10:00
Dave Cheney 36d74d6fed go.crypto/ssh: fix panic unmarshalling channelOpenFailureMsg
I introduced this problem in change set 33 when I redefined
RejectionReason from a uint32 to an int. I have added a test
to verify the message can be marshaled correctly.

This was a bit hard to track down as the recover in clientConn
mainLoop would catch the panic and shutdown the connection. We
probably shouldn't be using panic inside marshal/unmarshal, at
least not without a way to let the user know why the recover
logic tripped.

R=agl, kardianos, gustav.paul
CC=golang-dev
https://golang.org/cl/6210063
2012-05-18 09:11:31 +10:00
Dave Cheney e6ded17971 go.crypto/ssh: introduce a circular buffer for chanReader
R=agl, gustav.paul, kardianos
CC=golang-dev
https://golang.org/cl/6207051
2012-05-16 08:03:54 +10:00
Dave Cheney 8a2e7c966a go.crypto/ssh: make {client,server}Chan use common window management
R=agl, gustav.paul, kardianos
CC=golang-dev
https://golang.org/cl/6208043
2012-05-11 05:56:44 +10:00
Dave Cheney 523290a72d go.crypto/ssh: move common channel methods into an embedded struct
This CL introduces a new struct, channel to hold common shared
functions.

* add a new channel struct, which is embeded in {client,server}Chan.
* move common methods from {client,server}Chan into channel.
* remove unneeded used of serverConn.lock in serverChan
 (transport.writePacket has its own mutex).
* remove filteredConn, introduce conn.

R=agl, gustav.paul
CC=golang-dev
https://golang.org/cl/6128059
2012-05-09 08:20:05 +10:00
Dave Cheney 68e64b8f78 go.crypto/ssh: struct renaming
This CL is in preparation for 6128059.

* rename channel -> serverChan
* rename chanlist -> chanList
* normalise theirId/MyId/id/peersId -> localId/remoteId

R=agl
CC=golang-dev
https://golang.org/cl/6174046
2012-05-05 07:59:48 +10:00
Dave Cheney 9e30a3e1c5 go.crypto/ssh: hide private forwardList methods
This was my mistake. I should have checked godoc before
submitting the previous CL.

R=agl
CC=golang-dev
https://golang.org/cl/6140051
2012-05-02 08:27:09 +10:00
Dave Cheney b4b42222af go.crypto/ssh: add support for client side global requests
* Add support for RFC4254 section 4 global requests.
* Improve clientConn.Listen to process responses properly.

R=agl, gustav.paul
CC=golang-dev
https://golang.org/cl/6130050
2012-05-01 15:43:58 +10:00
Adam Langley 2e60680932 ssh: fix flaky TestInvalidServerMessage
When shutting down the test, we sometimes see EOF on the server's side
of the connection and sometimes ECONNRESET. In the latter case, based
on timing, it was possible that the server loop would hit Errorf during
shutdown and cause the test to fail.

R=dave
CC=golang-dev
https://golang.org/cl/6125047
2012-04-26 17:19:18 -04:00
Jonathan Pittman 8ab8312ac8 go.crypto/ssh: prevent concurrent reads and concurrent writes over the same agent connection
minor fix for v01 cert parsing when algo is not supported

R=golang-dev, agl, dave
CC=golang-dev
https://golang.org/cl/6116052
2012-04-26 17:13:49 -04:00
Adam Langley 0d3cfff99f ssh: fix deadlock
The code was taking locks in the wrong order.

Fixes golang/go#3570.

R=fullung
CC=golang-dev
https://golang.org/cl/6123058
2012-04-26 12:05:35 -04:00
Dave Cheney b333fd1d05 go.crypto/ssh: add support for remote tcpip forwarding
Add support for server (remote) forwarded tcpip channels.
See RFC4254 Section 7.1

R=gustav.paul, jeff, agl, lieqiewang
CC=golang-dev
https://golang.org/cl/6038047
2012-04-26 20:37:06 +10:00
Adam Langley bcdd6a2fd3 ssh: handle bad servers better.
This change prevents bad servers from crashing a client by sending an
invalid channel ID. It also makes the client disconnect in more cases
of invalid messages from a server and cleans up the client channels
in the event of a disconnect.

R=dave
CC=golang-dev
https://golang.org/cl/6099050
2012-04-24 13:46:22 -04:00
Dave Cheney 58afe880f1 go.crypto/ssh: server_test should bind to localhost only
Hopefully fix build error under windows.

Binding to the wildcard is poor form for our darwin users
as it triggers the firewall popup. Dialing the wildcard
looks like it's implementation specific as well.

R=agl, kardianos
CC=golang-dev
https://golang.org/cl/6104046
2012-04-21 10:44:56 +10:00
Adam Langley 63f855d724 ssh: cosmetic cleanups
These are the cosmetic cleanups from the bits of code that I
rereviewed.

1) stringLength now takes a int; the length of the string. Too many
   callers were allocating with stringLength([]byte(s)) and
   stringLength only needs to call len().

2) agent.go now has sendAndReceive to remove logic that was
   duplicated.

3) We now reject negative DH values

4) We now reject empty packets rather than crashing.

R=dave, jonathan.mark.pittman
CC=golang-dev
https://golang.org/cl/6061052
2012-04-20 15:17:42 -04:00
Daniel Theophanes 81e0b644eb go.crypt/ssh: Add additional test for server.
R=golang-dev, agl
CC=golang-dev
https://golang.org/cl/6075046
2012-04-19 16:46:46 -04:00
Adam Langley cfd75bc309 crypto/ssh: fix several logic errors.
These are the obvious mistakes from my read through. I'll save the
more cosmetic changes for a later CL.

R=dave, kardianos
CC=golang-dev
https://golang.org/cl/6049050
2012-04-19 11:16:57 -04:00
Nigel Tao e0c50b633f go.crypto: add PATENTS file to the subrepo.
R=r
CC=golang-dev
https://golang.org/cl/6023044
2012-04-16 11:25:08 +10:00
Dave Cheney bd686358fc go.crypto/ssh: replace window channel with an atomic variable and condition
Fixes golang/go#3479.

Using a channel to model window size was a mistake. Unlike stdin and
stdout, which are streams of data, window size is an variable and
should be modeled as such.

R=golang-dev, agl, gustav.paul, kardianos, dvyukov
CC=golang-dev
https://golang.org/cl/5986053
2012-04-15 20:30:45 +10:00
Dave Cheney 15577f9df4 go.crypto/ssh: improve error message when no authentication methods remain
R=golang-dev
CC=golang-dev
https://golang.org/cl/5960044
2012-04-01 10:50:09 -04:00
David Symonds 521edf84a0 go.crypto: add exp/terminal as code.google.com/p/go.crypto/ssh/terminal.
This removes the sole "exp/foo" import in the Go subrepos.
A separate CL will remove exp/terminal from the standard Go repository.

R=golang-dev, dave, r
CC=golang-dev
https://golang.org/cl/5966045
2012-03-30 15:27:01 +11:00
Fazlul Shahriar df1b4d2fcd go.crypto/ssh: fix example in documentation
R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/5905048
2012-03-27 14:40:42 -04:00
Daniel Theophanes 452b645a37 go.crypto/ssh: respect adjust window msg on server.
R=golang-dev
CC=agl, golang-dev
https://golang.org/cl/5908048
2012-03-26 12:44:23 -04:00
Rob Pike a1a1826210 LICENSE: add
R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/5845056
2012-03-17 15:19:30 +11:00
Adam Langley 124e52db8d go.crypto/curve25519: add package.
This consists of ~2000 lines of amd64 assembly and a, much slower,
generic Go version in curve25519.go. The assembly has been ported from
djb's public domain sources and the only semantic alterations are to
deal with Go's split stacks.

R=rsc
CC=golang-dev
https://golang.org/cl/5786045
2012-03-12 10:59:04 -04:00
Daniel Theophanes 36a967d321 go.crypto/ssh: add support for diffie-hellman-group1-sha1.
Fixes golang/go#2903.

R=golang-dev
CC=agl, golang-dev
https://golang.org/cl/5755054
2012-03-06 11:25:32 -05:00
Dave Cheney 79d53bd55e go.crypto/ssh: improve marshal performance
Atom N450, 6g

benchmark                         old ns/op    new ns/op    delta
BenchmarkMarshalKexInitMsg            96446        66675  -30.87%
BenchmarkUnmarshalKexInitMsg         155341       142715   -8.13%
BenchmarkMarshalKexDHInitMsg           9499         8340  -12.20%
BenchmarkUnmarshalKexDHInitMsg         4973         5145   +3.46%

Intel E3-1270, 6g

benchmark                         old ns/op    new ns/op    delta
BenchmarkMarshalKexInitMsg            23218        16903  -27.20%
BenchmarkUnmarshalKexInitMsg          31384        31640   +0.82%
BenchmarkMarshalKexDHInitMsg           1943         1661  -14.51%
BenchmarkUnmarshalKexDHInitMsg          915          941   +2.84%

R=agl, minux.ma, remyoudompheng
CC=golang-dev
https://golang.org/cl/5728053
2012-03-04 14:34:24 -08:00
Dave Cheney 73a4e109cb go.crypto/ssh: add benchmarks for marshal and unmarshal
R=agl
CC=golang-dev
https://golang.org/cl/5730045
2012-03-04 14:01:23 -08:00
Jonathan Pittman 67456e2aa3 go.crypto/ssh: Initial checkin of ssh agent support.
R=agl, dave, djm
CC=golang-dev
https://golang.org/cl/5695081
2012-03-02 14:16:57 -05:00
Dave Cheney 6de97b525f go.crypto/ssh: improve support for MAC algorithms
Also, add support for hmac-sha1.

At the suggestion of AGL hmac-md5, and hmac-md5-96
support was not included.

Fixes golang/go#3095.

R=golang-dev, agl, huin
CC=golang-dev
https://golang.org/cl/5696065
2012-02-27 19:40:52 -05:00
Jonathan Pittman 9b05c27191 go.crypto/ssh: add client support for OpenSSH certificates
Refactor key parsing, marshaling, and serialization to be a bit more flexible

R=agl, dave, djm
CC=golang-dev
https://golang.org/cl/5650067
2012-02-24 12:52:06 -05:00
Adam Langley d33bbf2cb3 ssh: use *rsa.PublicKey or *dsa.PublicKey in interfaces.
Everywhere else in the code base, when we have an interface{} which is
a stand in for a public key, we use *foo.PublicKey rather than
foo.PublicKey. This change makes ssh reflect that.

R=dave, r
CC=golang-dev
https://golang.org/cl/5686067
2012-02-23 10:42:21 -05:00
Adam Langley 63736bd2bf openpgp: fix error strings and typos.
Fixes golang/go#2841.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5688054
2012-02-21 09:52:37 -05:00
Adam Langley ae4d10368a crypto/oscp: update in light of cl/5625045
R=rsc
CC=golang-dev
https://golang.org/cl/5608055
2012-02-20 10:56:33 -05:00
Adam Langley 54eafe1dea openpgp: eliminate implicit rand.Reader and time.Now
Fixes golang/go#2501.

R=rsc, bradfitz
CC=golang-dev
https://golang.org/cl/5653067
2012-02-20 10:48:21 -05:00
Daniel Theophanes 6c548e9506 go.crypto/ssh: add Stderr() in Channel interface.
Adds support for piping Stderr to the client.

R=golang-dev, dave, agl
CC=golang-dev
https://golang.org/cl/5674081
2012-02-20 10:42:43 -05:00
Adam Langley 7f524f2468 ssh: fix locking in channel.Write
Since a lock is retaken before sync.Cond.Wait returns, this could
deadlock when the for loop attempts to take the lock again. (Reported
by sanjay.m.)

theirWindow was used outside of the lock, therefore concurrent writers
could overrun the window.

theirWindow was never updated to reflect the data written.

R=dave, balasanjay
CC=golang-dev
https://golang.org/cl/5671084
2012-02-18 13:49:50 -05:00
David Symonds 3d6f310da6 go.crypto: Update for new crypto/x509 error.
R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/5674046
2012-02-15 13:00:29 +11:00
Andrew Gerrand 1e43631a6e go.crypto/openpgp/armor: update for NewBufferSize signature change
Fixes the go.crypto build.

R=r
CC=golang-dev
https://golang.org/cl/5641049
2012-02-08 14:15:21 +11:00
Adam Langley 303976f059 crypto/openpgp: add clear-signing support.
Clear signed messages are often seen in email and are formatted so
that the plaintext of the signed message is readable without any
special tools.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5604043
2012-02-03 16:46:11 -05:00
Adam Langley a1e605a210 openpgp/packet: move OCFB code here.
The code has been moved from crypto/cipher in CL 5629044.

R=rsc
CC=golang-dev
https://golang.org/cl/5627045
2012-02-03 15:08:12 -05:00
Luit van Drongelen 907750ef23 go.crypto/pbkdf2: New package
Implements PKCS#5 v2.0 and potentially the future v2.1.

R=agl, rsc
CC=golang-dev
https://golang.org/cl/5587050
2012-02-01 14:20:27 -05:00
Daniel Theophanes 2b43ac23a9 go.crypto/ssh: add User to ServerConn and pass *ServerConn to callbacks.
R=golang-dev, dave, agl
CC=golang-dev
https://golang.org/cl/5577070
2012-01-30 15:30:11 -05:00
Russ Cox 470549d502 go.crypto: initial code
Manual edits to README.
Moved from main Go repository, deleted Makefiles, ran gofix -r go1rename.

Tested with: go test code.google.com/p/go.crypto/...

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5564059
2012-01-25 15:31:12 -05:00