minor dsa patch fix
[epoint] / patches / sig.diff
index 7d00a73..1626d11 100644 (file)
@@ -1,6 +1,6 @@
 diff -r 7ec969250bfc src/pkg/crypto/openpgp/packet/signature.go
 --- a/src/pkg/crypto/openpgp/packet/signature.go       Tue Dec 27 09:49:19 2011 -0500
-+++ b/src/pkg/crypto/openpgp/packet/signature.go       Sat Dec 31 02:23:37 2011 +0100
++++ b/src/pkg/crypto/openpgp/packet/signature.go       Sat Dec 31 02:32:41 2011 +0100
 @@ -164,7 +164,7 @@
  const (
        creationTimeSubpacket        signatureSubpacketType = 2
@@ -32,15 +32,16 @@ diff -r 7ec969250bfc src/pkg/crypto/openpgp/packet/signature.go
                // Key expiration time, section 5.2.3.6
                if !isHashed {
                        return
-@@ -443,7 +439,14 @@
+@@ -443,7 +439,15 @@
                sig.RSASignature.bytes, err = rsa.SignPKCS1v15(rand.Reader, priv.PrivateKey.(*rsa.PrivateKey), sig.Hash, digest)
                sig.RSASignature.bitLength = uint16(8 * len(sig.RSASignature.bytes))
        case PubKeyAlgoDSA:
 -              r, s, err := dsa.Sign(rand.Reader, priv.PrivateKey.(*dsa.PrivateKey), digest)
 +              dsaPrivateKey := priv.PrivateKey.(*dsa.PrivateKey)
-+              // hash truncation according to FIPS 186-3 section 4.6
++              // Hash truncation according to FIPS 186-3 section 4.6
++              // Assuming Q.BitLen() is a multiple of 8
 +              n := len(digest)
-+              k := (dsaPrivateKey.Q.BitLen() + 7) / 8
++              k := dsaPrivateKey.Q.BitLen() / 8
 +              if n > k {
 +                      n = k
 +              }
@@ -48,7 +49,7 @@ diff -r 7ec969250bfc src/pkg/crypto/openpgp/packet/signature.go
                if err == nil {
                        sig.DSASigR.bytes = r.Bytes()
                        sig.DSASigR.bitLength = uint16(8 * len(sig.DSASigR.bytes))
-@@ -556,5 +559,59 @@
+@@ -556,5 +560,59 @@
                subpackets = append(subpackets, outputSubpacket{true, issuerSubpacket, false, keyId})
        }