X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;ds=sidebyside;f=gost3410%2Fpublic.go;h=d2c01bc67acbd2990378f3bd3d1e578617a05e2b;hb=0ad3c46736ab347028125436c7d8435003969f53;hp=957293e61f7830b266a7f0731729b989dac8d0d0;hpb=a37ce7c9168b565aae06e3e66ff34f67f4f0e891;p=gogost.git diff --git a/gost3410/public.go b/gost3410/public.go index 957293e..d2c01bc 100644 --- a/gost3410/public.go +++ b/gost3410/public.go @@ -27,6 +27,7 @@ type PublicKey struct { Y *big.Int } +// Unmarshal LE(X)||LE(Y) public key. "raw" must be 2*c.PointSize() length. func NewPublicKey(c *Curve, raw []byte) (*PublicKey, error) { pointSize := c.PointSize() key := make([]byte, 2*pointSize) @@ -43,9 +44,10 @@ func NewPublicKey(c *Curve, raw []byte) (*PublicKey, error) { }, nil } -func (pub *PublicKey) Raw() []byte { +// Marshal LE(X)||LE(Y) public key. raw will be 2*pub.C.PointSize() length. +func (pub *PublicKey) Raw() (raw []byte) { pointSize := pub.C.PointSize() - raw := append( + raw = append( pad(pub.Y.Bytes(), pointSize), pad(pub.X.Bytes(), pointSize)..., )