+// Unmarshal big-endian private key. "raw" must be c.PointSize() length.
+func NewPrivateKeyBE(c *Curve, raw []byte) (*PrivateKey, error) {
+ pointSize := c.PointSize()
+ if len(raw) != pointSize {
+ return nil, fmt.Errorf("gogost/gost3410: len(key)=%d != %d", len(raw), pointSize)
+ }
+ k := bytes2big(raw)
+ if k.Cmp(zero) == 0 {
+ return nil, errors.New("gogost/gost3410: zero private key")
+ }
+ return &PrivateKey{c, k.Mod(k, c.Q)}, nil
+}
+
+// This is an alias for NewPrivateKeyLE().
+func NewPrivateKey(c *Curve, raw []byte) (*PrivateKey, error) {
+ return NewPrivateKeyLE(c, raw)
+}
+