X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=patches%2Fsig.diff;h=1626d11292e5d9e01e8238bf8d4dd1f47a00e1cf;hb=9f813549e2ae467ff1d476fe3a92f27301f5abca;hp=d3c49b562bd724f47bc8eae42b4ae69abd70497b;hpb=f1ab5079added604c2d1f8a043a75613755e3dec;p=epoint diff --git a/patches/sig.diff b/patches/sig.diff index d3c49b5..1626d11 100644 --- a/patches/sig.diff +++ b/patches/sig.diff @@ -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 Fri Dec 30 22:56:55 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,7 +32,24 @@ diff -r 7ec969250bfc src/pkg/crypto/openpgp/packet/signature.go // Key expiration time, section 5.2.3.6 if !isHashed { return -@@ -556,5 +552,59 @@ +@@ -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 ++ // Assuming Q.BitLen() is a multiple of 8 ++ n := len(digest) ++ k := dsaPrivateKey.Q.BitLen() / 8 ++ if n > k { ++ n = k ++ } ++ r, s, err := dsa.Sign(rand.Reader, dsaPrivateKey, digest[:n]) + if err == nil { + sig.DSASigR.bytes = r.Bytes() + sig.DSASigR.bitLength = uint16(8 * len(sig.DSASigR.bytes)) +@@ -556,5 +560,59 @@ subpackets = append(subpackets, outputSubpacket{true, issuerSubpacket, false, keyId}) }