1 // GoGOST -- Pure Go GOST cryptographic functions library
2 // Copyright (C) 2015-2024 Sergey Matveev <stargrave@stargrave.org>
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, version 3 of the License.
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
13 // You should have received a copy of the GNU General Public License
14 // along with this program. If not, see <http://www.gnu.org/licenses/>.
22 func (c *Curve) IsEdwards() bool {
26 func (c *Curve) EdwardsST() (*big.Int, *big.Int) {
49 // Convert Weierstrass X,Y coordinates to twisted Edwards U,V
50 func XY2UV(c *Curve, x, y *big.Int) (*big.Int, *big.Int) {
52 panic("non twisted Edwards curve")
54 edS, edT := c.EdwardsST()
62 v := big.NewInt(0).Set(&t)
72 // Convert twisted Edwards U,V coordinates to Weierstrass X,Y
73 func UV2XY(c *Curve, u, v *big.Int) (*big.Int, *big.Int) {
75 panic("non twisted Edwards curve")
77 edS, edT := c.EdwardsST()
85 x.ModInverse(&ty, c.P)