mirror of
https://github.com/arnaucube/go-iden3-crypto.git
synced 2026-02-07 11:36:41 +01:00
Compare commits
2 Commits
feature/pk
...
feature/ex
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
71dbddb5f1 | ||
|
|
0a5c6acba3 |
@@ -222,13 +222,26 @@ func (p *Point) Compress() [32]byte {
|
|||||||
// Decompress a compressed Point into p, and also returns the decompressed
|
// Decompress a compressed Point into p, and also returns the decompressed
|
||||||
// Point. Returns error if the compressed Point is invalid.
|
// Point. Returns error if the compressed Point is invalid.
|
||||||
func (p *Point) Decompress(leBuf [32]byte) (*Point, error) {
|
func (p *Point) Decompress(leBuf [32]byte) (*Point, error) {
|
||||||
|
var sign bool
|
||||||
|
sign, p.Y = CompressedPointToSignAndY(leBuf)
|
||||||
|
return PointFromSignAndY(sign, p.Y)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CompressedPointToSignAndY returns the sign and coordinate Y from a given
|
||||||
|
// compressed point. This method does not check that the Point belongs to the
|
||||||
|
// BabyJubJub curve, thus does not return error in such case. This method is
|
||||||
|
// intended to obtain the sign and the Y coordinate without checking if the
|
||||||
|
// point belongs to the curve, if the objective is to uncompress a point
|
||||||
|
// Decompress method should be used instead.
|
||||||
|
func CompressedPointToSignAndY(leBuf [32]byte) (bool, *big.Int) {
|
||||||
sign := false
|
sign := false
|
||||||
|
y := big.NewInt(0)
|
||||||
if (leBuf[31] & 0x80) != 0x00 { //nolint:gomnd
|
if (leBuf[31] & 0x80) != 0x00 { //nolint:gomnd
|
||||||
sign = true
|
sign = true
|
||||||
leBuf[31] = leBuf[31] & 0x7F //nolint:gomnd
|
leBuf[31] = leBuf[31] & 0x7F //nolint:gomnd
|
||||||
}
|
}
|
||||||
utils.SetBigIntFromLEBytes(p.Y, leBuf[:])
|
utils.SetBigIntFromLEBytes(y, leBuf[:])
|
||||||
return PointFromSignAndY(sign, p.Y)
|
return sign, y
|
||||||
}
|
}
|
||||||
|
|
||||||
// PointFromSignAndY returns a Point from a Sign and the Y coordinate
|
// PointFromSignAndY returns a Point from a Sign and the Y coordinate
|
||||||
|
|||||||
Reference in New Issue
Block a user