VERSION | 2 +- gost3410/private.go | 35 +++++++++++++++++++++++++++++++++++ install.texi | 2 +- news.texi | 6 ++++++ diff --git a/VERSION b/VERSION index fee4582f77aca97abcf501894498f5dbd35aa8a7e54fcd4e8f11b78debfe3cc5..976c3ef46cb8b05ad32a9279ef35015e87cbc2cb2c059307536ff2c458ca7167 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.2.3 +4.2.4 diff --git a/gost3410/private.go b/gost3410/private.go index 597f229b1d9a787be7d85cf2690961e69f7021fe960d22e34b832086afb8fd1b..c6bcc822128c5f8c85fb6fb642769015ab3a6ec81f2bfe14cf08da9b3e67ba5e 100644 --- a/gost3410/private.go +++ b/gost3410/private.go @@ -119,3 +119,38 @@ panic(err) } return pub } + +type PrivateKeyReverseDigest struct { + Prv *PrivateKey +} + +func (prv *PrivateKeyReverseDigest) Public() crypto.PublicKey { + return prv.Prv.Public() +} + +func (prv *PrivateKeyReverseDigest) Sign(rand io.Reader, digest []byte, opts crypto.SignerOpts) ([]byte, error) { + d := make([]byte, len(digest)) + copy(d, digest) + reverse(d) + return prv.Prv.Sign(rand, d, opts) +} + +type PrivateKeyReverseDigestAndSignature struct { + Prv *PrivateKey +} + +func (prv *PrivateKeyReverseDigestAndSignature) Public() crypto.PublicKey { + return prv.Prv.Public() +} + +func (prv *PrivateKeyReverseDigestAndSignature) Sign(rand io.Reader, digest []byte, opts crypto.SignerOpts) ([]byte, error) { + d := make([]byte, len(digest)) + copy(d, digest) + reverse(d) + sign, err := prv.Prv.Sign(rand, d, opts) + if err != nil { + return sign, err + } + reverse(sign) + return sign, err +} diff --git a/install.texi b/install.texi index 695143ff23a3d6945ab80a845921a9ab15d06d3a594877b330ea2ce1bd3b9970..1eba1011bf7b07d65ec0c7591630ae27001538097253d039bf71b780c8edd1f7 100644 --- a/install.texi +++ b/install.texi @@ -1,7 +1,7 @@ @node Download @unnumbered Download -@set VERSION 4.2.3 +@set VERSION 4.2.4 Preferable way is to download tarball with the signature from website and, for example, run tests with benchmarks: diff --git a/news.texi b/news.texi index 7e4b13cbe684ae2c8415719dcfbb2ad84b885014dc1bdf4080aeabec968e90f7..f748611ab59327628b15d6effef18acd6e8ff62251208c775155f909619ccc30 100644 --- a/news.texi +++ b/news.texi @@ -3,6 +3,12 @@ @unnumbered News @table @strong +@anchor{Release 4.2.4} +@item 4.2.4 + @code{gost3410.PrivateKeyReverseDigest} reversed digests and + @code{PrivateKeyReverseDigestAndSignature} with also reversed signatures + signers appeared for convenience. + @anchor{Release 4.2.3} @item 4.2.3 Panic on all possible hash @code{Write} errors.