From 8281f6bd1b02b52c8233fbcc6b54b697896d0155 Mon Sep 17 00:00:00 2001 From: Adam Langley Date: Wed, 23 Nov 2011 09:44:29 -0500 Subject: [PATCH] crypto/openpgp/packet: fix private key checksum I misinterpreted http://tools.ietf.org/html/rfc4880#section-5.5.3 and implemented the sum of 16-bit values, rather than the 16-bit sum of 8-bit values. Thanks to Szabolcs Nagy for pointing it out. R=bradfitz, r, rsc CC=golang-dev https://golang.org/cl/5372091 --- src/pkg/crypto/openpgp/packet/private_key.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/pkg/crypto/openpgp/packet/private_key.go b/src/pkg/crypto/openpgp/packet/private_key.go index c0ff82b413..5ef3db2a74 100644 --- a/src/pkg/crypto/openpgp/packet/private_key.go +++ b/src/pkg/crypto/openpgp/packet/private_key.go @@ -99,13 +99,9 @@ func (pk *PrivateKey) parse(r io.Reader) (err error) { } func mod64kHash(d []byte) uint16 { - h := uint16(0) - for i := 0; i < len(d); i += 2 { - v := uint16(d[i]) << 8 - if i+1 < len(d) { - v += uint16(d[i+1]) - } - h += v + var h uint16 + for _, b := range d { + h += uint16(b) } return h } -- 2.48.1