Skip to content

Commit 457ee04

Browse files
committed
ssh: rename methods in packetCipher interface
The new name readCipherPacket/writeCipherPacket disambiguates method calls from packetConn.{read,write}Packet, which has a different signature, and is called in different layers of the stack. Change-Id: I02ca83e28f74f0a347a1cde665efdfb78f3f51bb Reviewed-on: https://go-review.googlesource.com/c/crypto/+/171657 Reviewed-by: Brad Fitzpatrick <[email protected]>
1 parent 38d8ce5 commit 457ee04

File tree

3 files changed

+26
-26
lines changed

3 files changed

+26
-26
lines changed

Diff for: ssh/cipher.go

+12-12
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@ type streamPacketCipher struct {
149149
macResult []byte
150150
}
151151

152-
// readPacket reads and decrypt a single packet from the reader argument.
153-
func (s *streamPacketCipher) readPacket(seqNum uint32, r io.Reader) ([]byte, error) {
152+
// readCipherPacket reads and decrypt a single packet from the reader argument.
153+
func (s *streamPacketCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) {
154154
if _, err := io.ReadFull(r, s.prefix[:]); err != nil {
155155
return nil, err
156156
}
@@ -221,8 +221,8 @@ func (s *streamPacketCipher) readPacket(seqNum uint32, r io.Reader) ([]byte, err
221221
return s.packetData[:length-paddingLength-1], nil
222222
}
223223

224-
// writePacket encrypts and sends a packet of data to the writer argument
225-
func (s *streamPacketCipher) writePacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error {
224+
// writeCipherPacket encrypts and sends a packet of data to the writer argument
225+
func (s *streamPacketCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error {
226226
if len(packet) > maxPacket {
227227
return errors.New("ssh: packet too large")
228228
}
@@ -327,7 +327,7 @@ func newGCMCipher(key, iv, unusedMacKey []byte, unusedAlgs directionAlgorithms)
327327

328328
const gcmTagSize = 16
329329

330-
func (c *gcmCipher) writePacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error {
330+
func (c *gcmCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error {
331331
// Pad out to multiple of 16 bytes. This is different from the
332332
// stream cipher because that encrypts the length too.
333333
padding := byte(packetSizeMultiple - (1+len(packet))%packetSizeMultiple)
@@ -370,7 +370,7 @@ func (c *gcmCipher) incIV() {
370370
}
371371
}
372372

373-
func (c *gcmCipher) readPacket(seqNum uint32, r io.Reader) ([]byte, error) {
373+
func (c *gcmCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) {
374374
if _, err := io.ReadFull(r, c.prefix[:]); err != nil {
375375
return nil, err
376376
}
@@ -486,8 +486,8 @@ type cbcError string
486486

487487
func (e cbcError) Error() string { return string(e) }
488488

489-
func (c *cbcCipher) readPacket(seqNum uint32, r io.Reader) ([]byte, error) {
490-
p, err := c.readPacketLeaky(seqNum, r)
489+
func (c *cbcCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) {
490+
p, err := c.readCipherPacketLeaky(seqNum, r)
491491
if err != nil {
492492
if _, ok := err.(cbcError); ok {
493493
// Verification error: read a fixed amount of
@@ -500,7 +500,7 @@ func (c *cbcCipher) readPacket(seqNum uint32, r io.Reader) ([]byte, error) {
500500
return p, err
501501
}
502502

503-
func (c *cbcCipher) readPacketLeaky(seqNum uint32, r io.Reader) ([]byte, error) {
503+
func (c *cbcCipher) readCipherPacketLeaky(seqNum uint32, r io.Reader) ([]byte, error) {
504504
blockSize := c.decrypter.BlockSize()
505505

506506
// Read the header, which will include some of the subsequent data in the
@@ -576,7 +576,7 @@ func (c *cbcCipher) readPacketLeaky(seqNum uint32, r io.Reader) ([]byte, error)
576576
return c.packetData[prefixLen:paddingStart], nil
577577
}
578578

579-
func (c *cbcCipher) writePacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error {
579+
func (c *cbcCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error {
580580
effectiveBlockSize := maxUInt32(cbcMinPacketSizeMultiple, c.encrypter.BlockSize())
581581

582582
// Length of encrypted portion of the packet (header, payload, padding).
@@ -665,7 +665,7 @@ func newChaCha20Cipher(key, unusedIV, unusedMACKey []byte, unusedAlgs directionA
665665
return c, nil
666666
}
667667

668-
func (c *chacha20Poly1305Cipher) readPacket(seqNum uint32, r io.Reader) ([]byte, error) {
668+
func (c *chacha20Poly1305Cipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) {
669669
nonce := [3]uint32{0, 0, bits.ReverseBytes32(seqNum)}
670670
s := chacha20.New(c.contentKey, nonce)
671671
var polyKey [32]byte
@@ -723,7 +723,7 @@ func (c *chacha20Poly1305Cipher) readPacket(seqNum uint32, r io.Reader) ([]byte,
723723
return plain, nil
724724
}
725725

726-
func (c *chacha20Poly1305Cipher) writePacket(seqNum uint32, w io.Writer, rand io.Reader, payload []byte) error {
726+
func (c *chacha20Poly1305Cipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, payload []byte) error {
727727
nonce := [3]uint32{0, 0, bits.ReverseBytes32(seqNum)}
728728
s := chacha20.New(c.contentKey, nonce)
729729
var polyKey [32]byte

Diff for: ssh/cipher_test.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ func testPacketCipher(t *testing.T, cipher, mac string) {
5656
want := "bla bla"
5757
input := []byte(want)
5858
buf := &bytes.Buffer{}
59-
if err := client.writePacket(0, buf, rand.Reader, input); err != nil {
60-
t.Fatalf("writePacket(%q, %q): %v", cipher, mac, err)
59+
if err := client.writeCipherPacket(0, buf, rand.Reader, input); err != nil {
60+
t.Fatalf("writeCipherPacket(%q, %q): %v", cipher, mac, err)
6161
}
6262

63-
packet, err := server.readPacket(0, buf)
63+
packet, err := server.readCipherPacket(0, buf)
6464
if err != nil {
65-
t.Fatalf("readPacket(%q, %q): %v", cipher, mac, err)
65+
t.Fatalf("readCipherPacket(%q, %q): %v", cipher, mac, err)
6666
}
6767

6868
if string(packet) != want {
@@ -85,8 +85,8 @@ func TestCBCOracleCounterMeasure(t *testing.T) {
8585
want := "bla bla"
8686
input := []byte(want)
8787
buf := &bytes.Buffer{}
88-
if err := client.writePacket(0, buf, rand.Reader, input); err != nil {
89-
t.Errorf("writePacket: %v", err)
88+
if err := client.writeCipherPacket(0, buf, rand.Reader, input); err != nil {
89+
t.Errorf("writeCipherPacket: %v", err)
9090
}
9191

9292
packetSize := buf.Len()
@@ -106,9 +106,9 @@ func TestCBCOracleCounterMeasure(t *testing.T) {
106106
fresh.Bytes()[i] ^= 0x01
107107

108108
before := fresh.Len()
109-
_, err = server.readPacket(0, fresh)
109+
_, err = server.readCipherPacket(0, fresh)
110110
if err == nil {
111-
t.Errorf("corrupt byte %d: readPacket succeeded ", i)
111+
t.Errorf("corrupt byte %d: readCipherPacket succeeded ", i)
112112
continue
113113
}
114114
if _, ok := err.(cbcError); !ok {

Diff for: ssh/transport.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,14 @@ type transport struct {
5353
// packetCipher represents a combination of SSH encryption/MAC
5454
// protocol. A single instance should be used for one direction only.
5555
type packetCipher interface {
56-
// writePacket encrypts the packet and writes it to w. The
56+
// writeCipherPacket encrypts the packet and writes it to w. The
5757
// contents of the packet are generally scrambled.
58-
writePacket(seqnum uint32, w io.Writer, rand io.Reader, packet []byte) error
58+
writeCipherPacket(seqnum uint32, w io.Writer, rand io.Reader, packet []byte) error
5959

60-
// readPacket reads and decrypts a packet of data. The
60+
// readCipherPacket reads and decrypts a packet of data. The
6161
// returned packet may be overwritten by future calls of
6262
// readPacket.
63-
readPacket(seqnum uint32, r io.Reader) ([]byte, error)
63+
readCipherPacket(seqnum uint32, r io.Reader) ([]byte, error)
6464
}
6565

6666
// connectionState represents one side (read or write) of the
@@ -127,7 +127,7 @@ func (t *transport) readPacket() (p []byte, err error) {
127127
}
128128

129129
func (s *connectionState) readPacket(r *bufio.Reader) ([]byte, error) {
130-
packet, err := s.packetCipher.readPacket(s.seqNum, r)
130+
packet, err := s.packetCipher.readCipherPacket(s.seqNum, r)
131131
s.seqNum++
132132
if err == nil && len(packet) == 0 {
133133
err = errors.New("ssh: zero length packet")
@@ -175,7 +175,7 @@ func (t *transport) writePacket(packet []byte) error {
175175
func (s *connectionState) writePacket(w *bufio.Writer, rand io.Reader, packet []byte) error {
176176
changeKeys := len(packet) > 0 && packet[0] == msgNewKeys
177177

178-
err := s.packetCipher.writePacket(s.seqNum, w, rand, packet)
178+
err := s.packetCipher.writeCipherPacket(s.seqNum, w, rand, packet)
179179
if err != nil {
180180
return err
181181
}

0 commit comments

Comments
 (0)