Commit dd5adcc3 authored by Adam Langley's avatar Adam Langley

crypto/openpgp: bug fixes and fix misnamed function.

R=rsc, bradfitzwork
CC=golang-dev
https://golang.org/cl/4244066
parent daf33c3e
...@@ -169,7 +169,7 @@ func readHeader(r io.Reader) (tag packetType, length int64, contents io.Reader, ...@@ -169,7 +169,7 @@ func readHeader(r io.Reader) (tag packetType, length int64, contents io.Reader,
// serialiseHeader writes an OpenPGP packet header to w. See RFC 4880, section // serialiseHeader writes an OpenPGP packet header to w. See RFC 4880, section
// 4.2. // 4.2.
func serialiseHeader(w io.Writer, ptype packetType, length int) (err os.Error) { func serialiseHeader(w io.Writer, ptype packetType, length int) (err os.Error) {
var buf [5]byte var buf [6]byte
var n int var n int
buf[0] = 0x80 | 0x40 | byte(ptype) buf[0] = 0x80 | 0x40 | byte(ptype)
...@@ -178,16 +178,16 @@ func serialiseHeader(w io.Writer, ptype packetType, length int) (err os.Error) { ...@@ -178,16 +178,16 @@ func serialiseHeader(w io.Writer, ptype packetType, length int) (err os.Error) {
n = 2 n = 2
} else if length < 8384 { } else if length < 8384 {
length -= 192 length -= 192
buf[1] = byte(length >> 8) buf[1] = 192 + byte(length>>8)
buf[2] = byte(length) buf[2] = byte(length)
n = 3 n = 3
} else { } else {
buf[0] = 255 buf[1] = 255
buf[1] = byte(length >> 24) buf[2] = byte(length >> 24)
buf[2] = byte(length >> 16) buf[3] = byte(length >> 16)
buf[3] = byte(length >> 8) buf[4] = byte(length >> 8)
buf[4] = byte(length) buf[5] = byte(length)
n = 5 n = 6
} }
_, err = w.Write(buf[:n]) _, err = w.Write(buf[:n])
......
...@@ -190,3 +190,23 @@ func TestReadHeader(t *testing.T) { ...@@ -190,3 +190,23 @@ func TestReadHeader(t *testing.T) {
} }
} }
} }
func TestSerialiseHeader(t *testing.T) {
tag := packetTypePublicKey
lengths := []int{0, 1, 2, 64, 192, 193, 8000, 8384, 8385, 10000}
for _, length := range lengths {
buf := bytes.NewBuffer(nil)
serialiseHeader(buf, tag, length)
tag2, length2, _, err := readHeader(buf)
if err != nil {
t.Errorf("length %d, err: %s", length, err)
}
if tag2 != tag {
t.Errorf("length %d, tag incorrect (got %d, want %d)", length, tag2, tag)
}
if int(length2) != length {
t.Errorf("length %d, length incorrect (got %d)", length, length2)
}
}
}
...@@ -39,7 +39,7 @@ func DetachSignText(w io.Writer, signer *Entity, message io.Reader) os.Error { ...@@ -39,7 +39,7 @@ func DetachSignText(w io.Writer, signer *Entity, message io.Reader) os.Error {
// ArmoredDetachSignText signs message (after canonicalising the line endings) // ArmoredDetachSignText signs message (after canonicalising the line endings)
// with the private key from signer (which must already have been decrypted) // with the private key from signer (which must already have been decrypted)
// and writes an armored signature to w. // and writes an armored signature to w.
func SignTextDetachedArmored(w io.Writer, signer *Entity, message io.Reader) os.Error { func ArmoredDetachSignText(w io.Writer, signer *Entity, message io.Reader) os.Error {
return armoredDetachSign(w, signer, message, packet.SigTypeText) return armoredDetachSign(w, signer, message, packet.SigTypeText)
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment