From 5d6df51d96f29e1188cb7a4a8bec06a9d970484b Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Fri, 19 Jun 2020 15:58:30 +0300 Subject: [PATCH] PrivateKeyReverseDigest and PrivateKeyReverseDigestAndSignature --- VERSION | 2 +- gost3410/private.go | 35 +++++++++++++++++++++++++++++++++++ install.texi | 2 +- news.texi | 6 ++++++ 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index f2c6cb6..cf78d5b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.2.3 +4.2.4 diff --git a/gost3410/private.go b/gost3410/private.go index ae54424..645881b 100644 --- a/gost3410/private.go +++ b/gost3410/private.go @@ -119,3 +119,38 @@ func (prv *PrivateKey) Public() crypto.PublicKey { } 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 441c9a1..9ce6459 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 d2d1e82..7d139e1 100644 --- a/news.texi +++ b/news.texi @@ -3,6 +3,12 @@ @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. -- 2.44.0