]> Cypherpunks repositories - gostls13.git/commitdiff
crypto/openpgp: bug fixes and fix misnamed function.
authorAdam Langley <agl@golang.org>
Thu, 10 Mar 2011 15:14:31 +0000 (10:14 -0500)
committerAdam Langley <agl@golang.org>
Thu, 10 Mar 2011 15:14:31 +0000 (10:14 -0500)
R=rsc, bradfitzwork
CC=golang-dev
https://golang.org/cl/4244066

src/pkg/crypto/openpgp/packet/packet.go
src/pkg/crypto/openpgp/packet/packet_test.go
src/pkg/crypto/openpgp/write.go

index 269603ba4985557a0885db6c43a85697cf22a318..aacbb666ecb08ed69411fe5770543246ddfa9399 100644 (file)
@@ -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
 // 4.2.
 func serialiseHeader(w io.Writer, ptype packetType, length int) (err os.Error) {
-       var buf [5]byte
+       var buf [6]byte
        var n int
 
        buf[0] = 0x80 | 0x40 | byte(ptype)
@@ -178,16 +178,16 @@ func serialiseHeader(w io.Writer, ptype packetType, length int) (err os.Error) {
                n = 2
        } else if length < 8384 {
                length -= 192
-               buf[1] = byte(length >> 8)
+               buf[1] = 192 + byte(length>>8)
                buf[2] = byte(length)
                n = 3
        } else {
-               buf[0] = 255
-               buf[1] = byte(length >> 24)
-               buf[2] = byte(length >> 16)
-               buf[3] = byte(length >> 8)
-               buf[4] = byte(length)
-               n = 5
+               buf[1] = 255
+               buf[2] = byte(length >> 24)
+               buf[3] = byte(length >> 16)
+               buf[4] = byte(length >> 8)
+               buf[5] = byte(length)
+               n = 6
        }
 
        _, err = w.Write(buf[:n])
index 6789d2abc792b30967bc999b1b0c1f6b6ec0b5bc..40c6b67d348879f27d55f5bc8866dd9cff5282d8 100644 (file)
@@ -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)
+               }
+       }
+}
index 1a2e2bf040782b516ed7d1028f7745a19fe5e0de..9bef5e3b0bc12451cbe26bb5ee8ba06fb40f1303 100644 (file)
@@ -39,7 +39,7 @@ func DetachSignText(w io.Writer, signer *Entity, message io.Reader) os.Error {
 // ArmoredDetachSignText signs message (after canonicalising the line endings)
 // with the private key from signer (which must already have been decrypted)
 // 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)
 }