This is an automated email from the ASF dual-hosted git repository.

kmccusker pushed a commit to branch develop
in repository 
https://gitbox.apache.org/repos/asf/incubator-milagro-crypto-rust.git

commit cc1b6e87e401455ff3703e0fa31c653930b9f149
Author: Kirk Baird <[email protected]>
AuthorDate: Mon May 4 16:18:29 2020 +1000

    Update to hash to curve version 7
    
    Signed-off-by: Kirk Baird <[email protected]>
---
 src/bls381.rs                                      | 132 ++-------------------
 src/fp.rs                                          |  21 ++--
 src/fp2.rs                                         |  17 ++-
 src/hash256.rs                                     |  10 +-
 src/hash384.rs                                     |  10 +-
 src/hash512.rs                                     |  10 +-
 src/hash_to_curve.rs                               |  87 ++++++++------
 src/roms/rom_bls381g1_32.rs                        |   4 +-
 src/roms/rom_bls381g1_64.rs                        |   6 +-
 src/roms/rom_bls381g2_32.rs                        |   6 +-
 src/roms/rom_bls381g2_64.rs                        |   6 +-
 .../BLS12381G1_XMD:SHA-256_SSWU_NU_.json           |  43 ++++---
 .../BLS12381G1_XMD:SHA-256_SSWU_RO_.json           |  67 ++++++-----
 .../BLS12381G1_XMD:SHA-256_SVDW_NU_.json           |  43 ++++---
 .../BLS12381G1_XMD:SHA-256_SVDW_RO_.json           |  67 ++++++-----
 .../BLS12381G2_XMD:SHA-256_SSWU_NU_.json           |  43 ++++---
 .../BLS12381G2_XMD:SHA-256_SSWU_RO_.json           |  67 ++++++-----
 .../BLS12381G2_XMD:SHA-256_SVDW_NU_.json           |  43 ++++---
 .../BLS12381G2_XMD:SHA-256_SVDW_RO_.json           |  67 ++++++-----
 src/test_utils/test_vector_structs.rs              |   1 -
 20 files changed, 319 insertions(+), 431 deletions(-)

diff --git a/src/bls381.rs b/src/bls381.rs
index f03576d..b6a11ea 100644
--- a/src/bls381.rs
+++ b/src/bls381.rs
@@ -29,7 +29,9 @@ use super::ecp::ECP;
 use super::ecp2::ECP2;
 use super::fp::FP;
 use super::fp2::FP2;
-use super::hash_to_curve::*;
+use super::hash_to_curve::{
+    hash_to_field_fp, hash_to_field_fp2, simplified_swu_fp, simplified_swu_fp2,
+};
 use super::pair;
 use super::rom::*;
 
@@ -106,7 +108,7 @@ pub fn verify(sig: &[u8], m: &str, w: &[u8]) -> isize {
 /// Hash to Curve
 ///
 /// Takes a message as input and converts it to a Curve Point
-/// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-06#section-3
+/// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-07#section-3
 pub fn hash_to_curve_g1(msg: &[u8]) -> ECP {
     let u =
         hash_to_field_fp(msg, 2, DST).expect("hash to field should not fail 
for given parameters");
@@ -120,7 +122,8 @@ pub fn hash_to_curve_g1(msg: &[u8]) -> ECP {
 // Simplified SWU for Pairing-Friendly Curves
 //
 // Take a field point and map it to a Curve Point.
-// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-06#section-6.6.2
+// SSWU - 
https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-07#section-6.6.2
+// ISO11 - 
https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-07#appendix-C.2
 fn map_to_curve_g1(u: FP) -> ECP {
     let (x, y) = simplified_swu_fp(u);
     iso11_to_ecp(&x, &y)
@@ -132,7 +135,7 @@ fn map_to_curve_g1(u: FP) -> ECP {
 /// Hash to Curve
 ///
 /// Takes a message as input and converts it to a Curve Point
-/// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-06#section-3
+/// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-07#section-3
 pub fn hash_to_curve_g2(msg: &[u8]) -> ECP2 {
     let u =
         hash_to_field_fp2(msg, 2, DST).expect("hash to field should not fail 
for given parameters");
@@ -146,7 +149,8 @@ pub fn hash_to_curve_g2(msg: &[u8]) -> ECP2 {
 // Simplified SWU for Pairing-Friendly Curves
 //
 // Take a field point and map it to a Curve Point.
-// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-06#section-6.6.2
+// SSWU - 
https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-07#section-6.6.2
+// ISO3 - 
https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-07#appendix-C.3
 fn map_to_curve_g2(u: FP2) -> ECP2 {
     let (x, y) = simplified_swu_fp2(u);
     iso3_to_ecp2(&x, &y)
@@ -157,124 +161,6 @@ mod tests {
     use super::*;
     use crate::test_utils::*;
 
-    // The following tests were exported from
-    // https://github.com/kwantam/bls_sigs_ref/tree/master/python-impl
-    // Format: [(input, output)]
-    // input: [u0_a, u0_b, u1_a, u1_b]
-    // output: [x_a, x_b, y_a, y_b]
-    pub const TESTS: [([&str; 4], [&str; 4]); 4] =
-        [
-            // Test 0
-            (
-                // Input
-                [
-                    
"004ad233c619209060e40059b81e4c1f92796b05aa1bc6358d65e53dc0d657dfbc713d4030b0b6d9234a6634fd1944e7",
-                    
"0e2386c82713441bc3b06a460bd81850f4bf376ea89c80b18c0881e855c58dc8e83b2fd23af983f4786508e30c42af01",
-                    
"08a6a75e0a8d32f1e096f29047ea879dd34a5504218d7ce92c32c244786822fb73fbf708d167ad86537468249ec6df48",
-                    
"07016d0e5e13cd65780042c6f7b4c74ae1c58da438c99582696818b5c229895b893318dcb87d2a65e557d4ebeb408b70"
-                ],
-                // Output
-                [
-                    
"04861c41efcc5fc56e62273692b48da25d950d2a0aaffb34eff80e8dbdc2d41ca38555ceb8554368436aea47d16056b5",
-                    
"09db5217528c55d982cf05fc54242bdcd25f1ebb73372e00e16d8e0f19dc3aeabdeef2d42d693405a04c37d60961526a",
-                    
"177d05b95e7879a7ddbd83c15114b5a4e9846fde72b2263072dc9e60db548ccbadaacb92cc4952d4f47425fe3c5e0172",
-                    
"0fc82c99b928ed9df12a74f9215c3df8ae1e9a3fa54c00897889296890b23a0edcbb9653f9170bf715f882b35c0b4647"
-                ]
-            ),
-            // Test 1
-            (
-                // Input
-                [
-                    
"083c57b3ee2ecba5bbf874bb03897827f949096efceea00f002c979de7e5e9429fcf1f3323d4c8c548cd6f8ecb1a5c1d",
-                    
"0344fdfe8e1401867a275b3bef7e6ec52450968ab8a1293938fe3d5712dda67c85afeb91d85ab83fcdbebba4dc913e44",
-                    
"1361b5ee134c6bee4e287e63f852b6e48546dcf0684af7cf3e7653a3427a609f769ce4d9d99a638b6ae432130fa43104",
-                    
"18425b12c2ab5de136eb493b88ca950a45cab942505b5dd59a8b3ae8ec34c40ada65ff2719b1fcda9769fb22882002f9"
-                ],
-                // Output
-                [
-                    
"15f7a5c1168ad5ab67ff285c80fa8dd932ca88d9f8b3803c6c7b1f525d2dd5d01f2418259ae167c17c514d55e4707ddb",
-                    
"04378269c7364a6cefcdafdb87b004d3ebf6853f46687e46f29f23196d47a176c6f858be34c9f9a3608c74e804f6c686",
-                    
"023d9d46abe82bc0ac7c104d9519c037ff72893b8371d72ab92378f60a2361d7171df6b33500828c88923ddb1aab7fa5",
-                    
"1015adfeece3613836bf82541ea560c701e197b3d081e2c242b217d809f4ac0ca787b402537a66c0d1f6b76e1b19e94b"
-                ]
-            ),
-            // Test 2
-            (
-                // Input
-                [
-                    
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
-                    
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
-                    
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
-                    
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
-                ],
-                // Output
-                [
-                    
"19da1b4d47efeeb154f8968b43da2125376e0999ba722141419b03fd857490562fa42a5d0973956d1932dd20c1e0a284",
-                    
"18426da25dadd359adfda64fbaddac4414da2a841cb467935289877db450fac424361efb2e7fb141b7b98e6b2f888aef",
-                    
"0c2f8d431770d9be9b087c36fc5b66bb83ce6372669f48294193ef646105e0f21d17b134e7d1ad9c18f54b81f6a3707b",
-                    
"03257c3be77016e69b75905a97871008a6dfd2e324a6748c48d3304380156987bd0905991824936fcfe34ab25c3b6caa"
-                ]
-            ),
-            // Test 3
-            (
-                // Input
-                [
-                    
"05495a3dfa360cb809c1904530db1986aea4bf356e634b40b51e0ee5fcb6cb75085a72a0626873a426470067627c6418",
-                    
"11e63b587bedb59c2140518565950bdf881d75c0cccdcedcd9f4b71f2cfede3e5fdbe0261b015562d5edeaa11b7b2b76",
-                    
"116c87bbeece66871eb6c2a51bc4327b10ffe470b49c28ef8eef624da766caa2cc9ff6c7042b26b2efd3404f5a81a140",
-                    
"010450a90c17ba2997b645ef340fb5b207d6c915b34a93d93e75ee905d6d203d4aac046e10bd4d94a215604ade7afa8e"
-                ],
-                // Output
-                [
-                    
"0f1614a6e91c3e00799098fded2f2cfd72cb585cbdaec41b478509913c6772266a764f00b24a7f99607948a4b69b4d8f",
-                    
"13ca2148705ca7ba49c92ab8985d7babcc8afc6bf8e397fb829f5fe3f49e51c41332ba4389f5ba66667310b22bea16c9",
-                    
"026a743ee00eec8c7ef63351f4a3b26b2f029c10130385efc56ce53d0788db32ff5296ab77f9c389bd196cce8fc1e888",
-                    
"0d458d80897e922f3e7e15cfa66a0d3645d95788bddb7478af3f1b5ca662c348b0e9ffdb88fabfdb74f103fea0c2d793"
-                ]
-            )
-        ];
-
-    #[test]
-    fn test_map_to_curve_g2() {
-        // Only run when signatures are on G2
-        if BLS_SIG_G1 {
-            return;
-        }
-
-        for test in &TESTS {
-            // Input u0 and u1
-            let a = Big::frombytes(&hex::decode(test.0[0]).unwrap());
-            let b = Big::frombytes(&hex::decode(test.0[1]).unwrap());
-            let u0 = FP2::new_bigs(a, b);
-            let a = Big::frombytes(&hex::decode(test.0[2]).unwrap());
-            let b = Big::frombytes(&hex::decode(test.0[3]).unwrap());
-            let u1 = FP2::new_bigs(a, b);
-
-            // Map to Curve
-            let (iso3_0_x, iso3_0_y) = simplified_swu_fp2(u0);
-            let (iso3_1_x, iso3_1_y) = simplified_swu_fp2(u1);
-
-            // 3-Isogeny Map
-            let mut q0 = iso3_to_ecp2(&iso3_0_x, &iso3_0_y);
-            let q1 = iso3_to_ecp2(&iso3_1_x, &iso3_1_y);
-            q0.add(&q1);
-
-            // Clear Cofactor
-            q0.clear_cofactor();
-
-            // Check expected values
-            let a = Big::frombytes(&hex::decode(test.1[0]).unwrap());
-            let b = Big::frombytes(&hex::decode(test.1[1]).unwrap());
-            let check_x = FP2::new_bigs(a, b);
-            let a = Big::frombytes(&hex::decode(test.1[2]).unwrap());
-            let b = Big::frombytes(&hex::decode(test.1[3]).unwrap());
-            let check_y = FP2::new_bigs(a, b);
-            let check_e = ECP2::new_fp2s(check_x, check_y);
-
-            assert!(q0.equals(&check_e));
-        }
-    }
-
     #[test]
     #[cfg(feature = "bls381g2")]
     fn test_hash_to_curve_g2() {
diff --git a/src/fp.rs b/src/fp.rs
index 058d7a4..94e1a64 100644
--- a/src/fp.rs
+++ b/src/fp.rs
@@ -221,7 +221,7 @@ impl FP {
         self.xes = 1;
     }
 
-    /// test this=0?
+    /// Check if self is 0
     pub fn iszilch(&self) -> bool {
         let mut a = self.clone();
         a.reduce();
@@ -694,12 +694,19 @@ impl FP {
         return w.jacobi(&p);
     }
 
-    /// Checks if the field value is negative
+    /// Checks sign of a field element
     ///
-    /// Negative if a > -a
-    pub fn is_neg(&mut self) -> bool {
-        let mut neg_a = self.clone();
-        neg_a.neg();
-        Big::comp(&self.redc(), &neg_a.redc()) > 0
+    /// true if Negative, if a % 2 == 1
+    /// false if Positive, if a % 2 == 0
+    ///
+    /// Not constant time.
+    /// 
https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-07#section-4.1
+    pub fn sgn0(&self) -> bool {
+        let x = self.redc();
+        if x.parity() == 0 {
+            false
+        } else {
+            true
+        }
     }
 }
diff --git a/src/fp2.rs b/src/fp2.rs
index 82a10a9..3b94761 100644
--- a/src/fp2.rs
+++ b/src/fp2.rs
@@ -401,11 +401,18 @@ impl FP2 {
         self.b.sub(&b);
     }
 
-    // b > -b OR if b is 0 then a > -a
-    pub fn is_neg(&mut self) -> bool {
-        if self.b.iszilch() {
-            return self.a.is_neg();
+    /// Checks sign of a field element
+    ///
+    /// true if Negative
+    /// false if Positive
+    ///
+    /// Not constant time.
+    /// 
https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-07#section-4.1
+    pub fn sgn0(&self) -> bool {
+        if self.a.iszilch() {
+            self.b.sgn0()
+        } else {
+            self.a.sgn0()
         }
-        self.b.is_neg()
     }
 }
diff --git a/src/hash256.rs b/src/hash256.rs
index 5860524..f8c9b6a 100644
--- a/src/hash256.rs
+++ b/src/hash256.rs
@@ -38,13 +38,13 @@ const HASH256_K: [u32; 64] = [
 ];
 
 /// The block size of each round.
-const BLOCK_SIZE: usize = 64;
-/// Ipad Byte
+pub const BLOCK_SIZE: usize = 64;
+/// Hash Length in Bytes
+pub const HASH_BYTES: usize = 32;
+// Ipad Byte
 const IPAD_BYTE: u8 = 0x36;
-/// Opad Byte
+// Opad Byte
 const OPAD_BYTE: u8 = 0x5c;
-/// Hash Length in Bytes
-const HASH_BYTES: usize = 32;
 
 pub struct HASH256 {
     length: [u32; 2],
diff --git a/src/hash384.rs b/src/hash384.rs
index 5c349a1..bc57b24 100644
--- a/src/hash384.rs
+++ b/src/hash384.rs
@@ -110,13 +110,13 @@ const HASH384_K: [u64; 80] = [
 ];
 
 /// The block size of each round.
-const BLOCK_SIZE: usize = 128;
-/// Ipad Byte
+pub const BLOCK_SIZE: usize = 128;
+/// Hash Length in Bytes
+pub const HASH_BYTES: usize = 48;
+// Ipad Byte
 const IPAD_BYTE: u8 = 0x36;
-/// Opad Byte
+// Opad Byte
 const OPAD_BYTE: u8 = 0x5c;
-/// Hash Length in Bytes
-const HASH_BYTES: usize = 48;
 
 pub struct HASH384 {
     length: [u64; 2],
diff --git a/src/hash512.rs b/src/hash512.rs
index 34970a7..5244475 100644
--- a/src/hash512.rs
+++ b/src/hash512.rs
@@ -110,13 +110,13 @@ const HASH512_K: [u64; 80] = [
 ];
 
 /// The block size of each round.
-const BLOCK_SIZE: usize = 128;
-/// Ipad Byte
+pub const BLOCK_SIZE: usize = 128;
+/// Hash Length in Bytes
+pub const HASH_BYTES: usize = 64;
+// Ipad Byte
 const IPAD_BYTE: u8 = 0x36;
-/// Opad Byte
+// Opad Byte
 const OPAD_BYTE: u8 = 0x5c;
-/// Hash Length in Bytes
-const HASH_BYTES: usize = 64;
 
 pub struct HASH512 {
     length: [u64; 2],
diff --git a/src/hash_to_curve.rs b/src/hash_to_curve.rs
index 8adf370..a7628b9 100644
--- a/src/hash_to_curve.rs
+++ b/src/hash_to_curve.rs
@@ -3,14 +3,13 @@ use super::dbig::DBig;
 use super::fp::FP;
 use super::fp2::FP2;
 use super::rom::{
-    HASH_ALGORITHM, HASH_TYPE, L, MODULUS, SSWU_A1, SSWU_A2, SSWU_B1, SSWU_B2, 
SSWU_Z1, SSWU_Z2,
-    Z_PAD,
+    HASH_ALGORITHM, L, MODULUS, SSWU_A1, SSWU_A2, SSWU_B1, SSWU_B2, SSWU_Z1, 
SSWU_Z2,
 };
 
 use errors::AmclError;
-use hash256::HASH256;
-use hash384::HASH384;
-use hash512::HASH512;
+use hash256::{BLOCK_SIZE as SHA256_BLOCK_SIZE, HASH256, HASH_BYTES as 
SHA256_HASH_BYTES};
+use hash384::{BLOCK_SIZE as SHA384_BLOCK_SIZE, HASH384, HASH_BYTES as 
SHA384_HASH_BYTES};
+use hash512::{BLOCK_SIZE as SHA512_BLOCK_SIZE, HASH512, HASH_BYTES as 
SHA512_HASH_BYTES};
 
 /// Oversized DST padding
 pub const OVERSIZED_DST: &[u8] = b"H2C-OVERSIZE-DST-";
@@ -22,6 +21,24 @@ pub enum HashAlgorithm {
     Sha512,
 }
 
+impl HashAlgorithm {
+    pub fn length(&self) -> usize {
+        match self {
+            HashAlgorithm::Sha256 => SHA256_HASH_BYTES,
+            HashAlgorithm::Sha384 => SHA384_HASH_BYTES,
+            HashAlgorithm::Sha512 => SHA512_HASH_BYTES,
+        }
+    }
+
+    pub fn block_size(&self) -> usize {
+        match self {
+            HashAlgorithm::Sha256 => SHA256_BLOCK_SIZE,
+            HashAlgorithm::Sha384 => SHA384_BLOCK_SIZE,
+            HashAlgorithm::Sha512 => SHA512_BLOCK_SIZE,
+        }
+    }
+}
+
 /// Hash a message
 pub fn hash(msg: &[u8], hash_function: HashAlgorithm) -> Vec<u8> {
     match hash_function {
@@ -49,13 +66,13 @@ pub fn hash(msg: &[u8], hash_function: HashAlgorithm) -> 
Vec<u8> {
 // Hash To Field - Fp
 //
 // Take a message as bytes and convert it to a Field Point
-// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-06#section-5.2
+// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-07#section-5.2
 pub fn hash_to_field_fp(msg: &[u8], count: usize, dst: &[u8]) -> 
Result<Vec<FP>, AmclError> {
     let m = 1;
     let p = Big::new_ints(&MODULUS);
 
     let len_in_bytes = count * m * L;
-    let pseudo_random_bytes = expand_message_xmd(msg, len_in_bytes, dst, 
HASH_ALGORITHM)?;
+    let pseudo_random_bytes = expand_message_xmd(msg, len_in_bytes, dst)?;
 
     let mut u: Vec<FP> = Vec::with_capacity(count as usize);
     for i in 0..count as usize {
@@ -70,14 +87,14 @@ pub fn hash_to_field_fp(msg: &[u8], count: usize, dst: 
&[u8]) -> Result<Vec<FP>,
 // Hash To Field - Fp2
 //
 // Take a message as bytes and convert it to a vector of Field Points with 
extension degree 2.
-// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-06#section-5.2
+// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-07#section-5.2
 pub fn hash_to_field_fp2(msg: &[u8], count: usize, dst: &[u8]) -> 
Result<Vec<FP2>, AmclError> {
     let m = 2;
     let p = Big::new_ints(&MODULUS);
 
     let len_in_bytes = count * m * L;
 
-    let pseudo_random_bytes = expand_message_xmd(msg, len_in_bytes, dst, 
HASH_ALGORITHM)?;
+    let pseudo_random_bytes = expand_message_xmd(msg, len_in_bytes, dst)?;
 
     let mut u: Vec<FP2> = Vec::with_capacity(count as usize);
     for i in 0..count as usize {
@@ -96,33 +113,28 @@ pub fn hash_to_field_fp2(msg: &[u8], count: usize, dst: 
&[u8]) -> Result<Vec<FP2
 // Expand Message XMD
 //
 // Take a message and convert it to pseudo random bytes of specified length
-// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-06#section-5.3.1
-pub fn expand_message_xmd(
-    msg: &[u8],
-    len_in_bytes: usize,
-    dst: &[u8],
-    hash_algorithm: HashAlgorithm,
-) -> Result<Vec<u8>, AmclError> {
+// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-07#section-5.3.1
+fn expand_message_xmd(msg: &[u8], len_in_bytes: usize, dst: &[u8]) -> 
Result<Vec<u8>, AmclError> {
     // ell = ceiling(len_in_bytes / b_in_bytes)
-    let ell = (len_in_bytes + HASH_TYPE - 1) / HASH_TYPE;
+    let ell = (len_in_bytes + HASH_ALGORITHM.length() - 1) / 
HASH_ALGORITHM.length();
 
     // Error if length of output less than 255 bytes
-    if ell >= 255 {
+    if ell > 255 {
         return Err(AmclError::HashToFieldError);
     }
 
     // Create DST prime as (dst.len() || dst)
-    let dst_prime = if dst.len() > 256 {
+    let dst_prime = if dst.len() > 255 {
         // DST too long, shorten to H("H2C-OVERSIZE-DST-" || dst)
         let mut tmp = OVERSIZED_DST.to_vec();
         tmp.extend_from_slice(dst);
-        let mut prime = vec![32u8; 1];
-        prime.append(&mut hash(&tmp, hash_algorithm));
-        prime
+        let mut tmp = hash(&tmp, HASH_ALGORITHM).to_vec();
+        tmp.push(HASH_ALGORITHM.length() as u8);
+        tmp
     } else {
-        // DST correct size, prepend length as a single byte
-        let mut prime = vec![dst.len() as u8; 1];
-        prime.extend_from_slice(dst);
+        // DST correct size, append length as a single byte
+        let mut prime = dst.to_vec();
+        prime.push(dst.len() as u8);
         prime
     };
 
@@ -130,19 +142,20 @@ pub fn expand_message_xmd(
     let mut b: Vec<Vec<u8>> = vec![vec![]; 2];
 
     // Set b[0] to H(Z_pad || msg || l_i_b_str || I2OSP(0, 1) || DST_prime)
-    let mut tmp = Z_PAD.to_vec();
+    // l_i_b_str = I2OSP(len_in_bytes, 2)
+    let mut tmp = vec![0; HASH_ALGORITHM.block_size()];
     tmp.extend_from_slice(msg);
-    let l_i_b_str: &[u8] = &(len_in_bytes as u16).to_be_bytes();
-    tmp.extend_from_slice(l_i_b_str);
+    let l_i_b_str: [u8; 2] = (len_in_bytes as u16).to_be_bytes();
+    tmp.extend_from_slice(&l_i_b_str);
     tmp.push(0u8);
     tmp.extend_from_slice(&dst_prime);
-    b[0] = hash(&tmp, hash_algorithm);
+    b[0] = hash(&tmp, HASH_ALGORITHM);
 
     // Set b[1] to H(b_0 || I2OSP(1, 1) || DST_prime)
     tmp = b[0].clone();
     tmp.push(1u8);
     tmp.extend_from_slice(&dst_prime);
-    b[1] = hash(&tmp, hash_algorithm);
+    b[1] = hash(&tmp, HASH_ALGORITHM);
 
     pseudo_random_bytes.extend_from_slice(&b[1]);
 
@@ -158,7 +171,7 @@ pub fn expand_message_xmd(
             .collect();
         tmp.push(i as u8); // i < 256
         tmp.extend_from_slice(&dst_prime);
-        b.push(hash(&tmp, hash_algorithm));
+        b.push(hash(&tmp, HASH_ALGORITHM));
 
         pseudo_random_bytes.extend_from_slice(&b[i]);
     }
@@ -170,12 +183,11 @@ pub fn expand_message_xmd(
 // Simplified Shallue-van de Woestijne-Ulas Method - Fp
 //
 // Returns projectives as (XZ, YZ, Z)
-// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-06#section-6.6.2
+// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-07#section-6.6.2
 pub fn simplified_swu_fp(u: FP) -> (FP, FP) {
     // tmp1 = Z * u^2
     // tv1 = 1 / (Z^2 * u^4 + Z * u^2)
     let mut tmp1 = u.clone();
-    let is_neg_u = tmp1.is_neg();
     tmp1.sqr();
     tmp1.mul(&SSWU_Z1);
     let mut tv1 = tmp1.clone();
@@ -233,7 +245,7 @@ pub fn simplified_swu_fp(u: FP) -> (FP, FP) {
     }
 
     // Negate y if y and t are opposite in sign
-    if is_neg_u != y.is_neg() {
+    if u.sgn0() != y.sgn0() {
         y.neg();
     }
 
@@ -243,12 +255,11 @@ pub fn simplified_swu_fp(u: FP) -> (FP, FP) {
 // Simplified Shallue-van de Woestijne-Ulas Method - Fp2
 //
 // Returns projectives as (X, Y)
-// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-06#section-6.6.2
+// https://tools.ietf.org/html/draft-irtf-cfrg-hash-to-curve-07#section-6.6.2
 pub fn simplified_swu_fp2(u: FP2) -> (FP2, FP2) {
     // tmp1 = Z * u^2
     // tv1 = 1 / (Z^2 * u^4 + Z * u^2)
     let mut tmp1 = u.clone();
-    let is_neg_u = tmp1.is_neg();
     tmp1.sqr();
     tmp1.mul(&SSWU_Z2);
     let mut tv1 = tmp1.clone();
@@ -284,7 +295,7 @@ pub fn simplified_swu_fp2(u: FP2) -> (FP2, FP2) {
     // y = sqrt(gx)
     let mut y = gx.clone();
     if !y.sqrt() {
-        // x = x * Z^2 * u
+        // x = x * Z * u^2
         x.mul(&tmp1);
 
         // gx = x^3 + A * x + B
@@ -299,7 +310,7 @@ pub fn simplified_swu_fp2(u: FP2) -> (FP2, FP2) {
     }
 
     // Negate y if y and t are opposite in sign
-    if is_neg_u != y.is_neg() {
+    if u.sgn0() != y.sgn0() {
         y.neg();
     }
 
diff --git a/src/roms/rom_bls381g1_32.rs b/src/roms/rom_bls381g1_32.rs
index 0add498..06b6b38 100644
--- a/src/roms/rom_bls381g1_32.rs
+++ b/src/roms/rom_bls381g1_32.rs
@@ -216,14 +216,12 @@ pub const AESKEY: usize = 16;
 pub const BLS_SIG_G1: bool = true;
 
 // BLS Standard Constants
-/// L = ceil(ceil(log2(Q) + 128) / 8)
+/// L = ceil(ceil(log2(p) + 128) / 8)
 pub const L: usize = 64;
 /// Hash to Curve Suite
 pub const H2C_SUITE: &str = "BLS12381G1_XMD:SHA-256_SSWU_RO_";
 /// Domain Separation Tag
 pub const DST: &[u8] = b"BLS_SIG_BLS12381G1_XMD:SHA-256_SSWU_RO_POP_";
-/// Z_PAD is a vector of zeros of length equal to the hash block size (64).
-pub const Z_PAD: [u8; 64] = [0u8; 64];
 
 lazy_static! {
     // G1 h_eff
diff --git a/src/roms/rom_bls381g1_64.rs b/src/roms/rom_bls381g1_64.rs
index 7032be0..f7b73db 100644
--- a/src/roms/rom_bls381g1_64.rs
+++ b/src/roms/rom_bls381g1_64.rs
@@ -218,16 +218,12 @@ pub const AESKEY: usize = 16;
 pub const BLS_SIG_G1: bool = true;
 
 // BLS Standard Constants
-/// L = ceil(ceil(log2(Q) + 128) / 8)
+/// L = ceil(ceil(log2(p) + 128) / 8)
 pub const L: usize = 64;
-/// b_in_bytes = ceil(b / 8), where b is bits outputted from SHA256
-pub const B_IN_BYTES: usize = 32;
 /// Hash to Curve Suite
 pub const H2C_SUITE: &str = "BLS12381G1_XMD:SHA-256_SSWU_RO_";
 /// Domain Separation Tag
 pub const DST: &[u8] = b"BLS_SIG_BLS12381G1_XMD:SHA-256_SSWU_RO_POP_";
-/// Z_PAD is a vector of zeros of length equal to the hash block size (64).
-pub const Z_PAD: [u8; 64] = [0u8; 64];
 
 lazy_static! {
     // G1 h_eff
diff --git a/src/roms/rom_bls381g2_32.rs b/src/roms/rom_bls381g2_32.rs
index 538e470..51249ee 100644
--- a/src/roms/rom_bls381g2_32.rs
+++ b/src/roms/rom_bls381g2_32.rs
@@ -216,16 +216,12 @@ pub const AESKEY: usize = 16;
 pub const BLS_SIG_G1: bool = false;
 
 // BLS Standard Constants
-/// L = ceil(ceil(log2(Q) + 128) / 8)
+/// L = ceil(ceil(log2(p) + 128) / 8)
 pub const L: usize = 64;
-/// b_in_bytes = ceil(b / 8), where b is bits outputted from SHA256
-pub const B_IN_BYTES: usize = 32;
 /// Hash to Curve Suite
 pub const H2C_SUITE: &str = "BLS12381G2_XMD:SHA-256_SSWU_RO_";
 /// Domain Separation Tag
 pub const DST: &[u8] = b"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_";
-/// Z_PAD is a vector of zeros of length equal to the hash block size (64).
-pub const Z_PAD: [u8; 64] = [0u8; 64];
 
 lazy_static! {
     // G1 h_eff
diff --git a/src/roms/rom_bls381g2_64.rs b/src/roms/rom_bls381g2_64.rs
index 5b8968a..0e05c89 100644
--- a/src/roms/rom_bls381g2_64.rs
+++ b/src/roms/rom_bls381g2_64.rs
@@ -218,16 +218,12 @@ pub const AESKEY: usize = 16;
 pub const BLS_SIG_G1: bool = false;
 
 // BLS Standard Constants
-/// L = ceil(ceil(log2(Q) + 128) / 8)
+/// L = ceil(ceil(log2(p) + 128) / 8)
 pub const L: usize = 64;
 /// b_in_bytes = ceil(b / 8), where b is bits outputted from SHA256
-pub const B_IN_BYTES: usize = 32;
-/// Hash to Curve Suite
 pub const H2C_SUITE: &str = "BLS12381G2_XMD:SHA-256_SSWU_RO_";
 /// Domain Separation Tag
 pub const DST: &[u8] = b"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_";
-/// Z_PAD is a vector of zeros of length equal to the hash block size (64).
-pub const Z_PAD: [u8; 64] = [0u8; 64];
 
 lazy_static! {
     // G1 h_eff
diff --git 
a/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SSWU_NU_.json 
b/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SSWU_NU_.json
index cba0e19..adab80e 100644
--- a/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SSWU_NU_.json
+++ b/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SSWU_NU_.json
@@ -12,65 +12,64 @@
   "hash": "sha256",
   "k": "0x80",
   "map": {
-    "name": "SSWU",
-    "sgn0": "sgn0_be"
+    "name": "SSWU"
   },
   "randomOracle": false,
   "vectors": [
     {
       "P": {
-        "x": 
"0x115281bd55a4103f31c8b12000d98149598b72e5da14e953277def263a24bc2e9fd8fa151df73ea3800f9c8cbb9b245c",
-        "y": 
"0x0796506faf9edbf1957ba8d667a079cab0d3a37e302e5132bd25665b66b26ea8556a0cfb92d6ae2c4890df0029b455ce"
+        "x": 
"0x1223effdbb2d38152495a864d78eee14cb0992d89a241707abb03819a91a6d2fd65854ab9a69e9aacb0cbebfd490732c",
+        "y": 
"0x0f925d61e0b235ecd945cbf0309291878df0d06e5d80d6b84aa4ff3e00633b26f9a7cb3523ef737d90e6d71e8b98b2d5"
       },
       "Q": {
-        "x": 
"0x0dddf77f320e7848a457358ab8d3b84cbaf19307be26b91a10c211651691cd736b1f59d77aed3954f857f108d6966f5b",
-        "y": 
"0x0450ab32020649f22a2fca166a1d8a59d4c93f1eb078a4bedd6c48027b9933507a2a8ae4d915305f58ede781283325a9"
+        "x": 
"0x062bef7110b5a85023eb7766d8b923f654cb65ef23acc571de3266e46fb87c2efe7ed2b07f7d078dcb0970f30545523d",
+        "y": 
"0x095aaedd31b4bfecd080de37112afa90db9bb15e3798b122f8b7c93ff7984b8a41233d5ee994a4fceae1b8162dcc0cac"
       },
       "msg": "",
       "u": [
-        
"0x0ccb6bda9b602ab82aae21c0291623e2f639648a6ada1c76d8ffb664130fd18d98a2cc6160624148827a9726678e7cd4"
+        
"0x07fdf49ea58e96015d61f6b5c9d1c8f277146a533ae7fbca2a8ef4c41055cd961fbc6e26979b5554e4b4f22330c0e16d"
       ]
     },
     {
       "P": {
-        "x": 
"0x04a7a63d24439ade3cd16eaab22583c95b061136bd5013cf109d92983f902c31f49c95cbeb97222577e571e97a68a32e",
-        "y": 
"0x09a8aa8d6e4b409bbe9a6976c016688269024d6e9d378ed25e8b4986194511f479228fa011ec88b8f4c57a621fc12187"
+        "x": 
"0x179d3fd0b4fb1da43aad06cea1fb3f828806ddb1b1fa9424b1e3944dfdbab6e763c42636404017da03099af0dcca0fd6",
+        "y": 
"0x0d037cb1c6d495c0f5f22b061d23f1be3d7fe64d3c6820cfcd99b6b36fa69f7b4c1f4addba2ae7aa46fb25901ab483e4"
       },
       "Q": {
-        "x": 
"0x12897a9a513b12303a7f0f3a3cc7c838d16847a31507980945312bede915848159bd390b16b8e378b398e31a385d9180",
-        "y": 
"0x1372530cc0811d70071e50640281aa8aaf96ee09c01281ccfead92296cb9dacf5054aa51dbea730e46239e709042a15d"
+        "x": 
"0x0ac8969372efb9ae5f9b6d53a440f4a57d9ff2e40b4903f8d167d58ba59ead7218a06b4b1821f2ca28ab1239502e1de2",
+        "y": 
"0x01541a3325e7311a4aabff560a091467b847ffca590e1aaf354aaee1a6075d050ddd556d9c28e1fbfb97ca8749a8d68d"
       },
       "msg": "abc",
       "u": [
-        
"0x08accd9a1bd4b75bb2e9f014ac354a198cbf607f0061d00a6286f5544cf4f9ecc1439e3194f570cbbc7b96d1a754f231"
+        
"0x1275ab3adbf824a169ed4b1fd669b49cf406d822f7fe90d6b2f8c601b5348436f89761bb1ad89a6fb1137cd91810e5d2"
       ]
     },
     {
       "P": {
-        "x": 
"0x05c59faaf88187f51cd9cc6c20ca47ac66cc38d99af88aef2e82d7f35104168916f200a79562e64bc843f83cdc8a4675",
-        "y": 
"0x0b10472100a4aaa665f35f044b14a234b8f74990fa029e3dd06aa60b232fd9c232564ceead8cdb72a8a0320fc1071845"
+        "x": 
"0x15aa66c77eded1209db694e8b1ba49daf8b686733afaa7b68c683d0b01788dfb0617a2e2d04c0856db4981921d3004af",
+        "y": 
"0x0952bb2f61739dd1d201dd0a79d74cda3285403d47655ee886afe860593a8a4e51c5b77a22d2133e3a4280eaaaa8b788"
       },
       "Q": {
-        "x": 
"0x08459bd42a955d6e247fce6c81eda0ad9645f9e666d141a71f0afa3fbc509b2c58550fe077d073cc752493400399fddd",
-        "y": 
"0x169d35a8c6bb915ae910f4c6cde359622746b0c8b2b241b411d0e92ef991d3e6a7b0fafabb93c1de2e3997d6e362ce8a"
+        "x": 
"0x07f6e801e5102c171d6fdaf312be3b1bb2d01c9c4842ebf199d70351abf8c28e24347fa87694f72952c9e1a46f83d3e3",
+        "y": 
"0x17dd3a8bf9d7f433a33f15ccb0b8e9e26e850cbe7c87293887ec704aa5dc8454b22299ff0eaecbf487a761a5625c81ee"
       },
       "msg": "abcdef0123456789",
       "u": [
-        
"0x0a359cf072db3a39acf22f086d825fcf49d0daf241d98902342380fc5130b44e55de8f684f300bc11c44dee526413363"
+        
"0x0e93d11d30de6d84b8578827856f5c05feef36083eef0b7b263e35ecb9b56e86299614a042e57d467fa20948e8564909"
       ]
     },
     {
       "P": {
-        "x": 
"0x10147709f8d4f6f2fa6f957f6c6533e3bf9069c01be721f9421d88e0f02d8c617d048c6f8b13b81309d1ef6b56eeddc7",
-        "y": 
"0x1048977c38688f1a3acf48ae319216cb1509b6a29bd1e7f3b2e476088a280e8c97d4a4c147f0203c7b3acb3caa566ae8"
+        "x": 
"0x06328ce5106e837935e8da84bd9af473422e62492930aa5f460369baad9545defa468d9399854c23a75495d2a80487ee",
+        "y": 
"0x094bfdfe3e552447433b5a00967498a3f1314b86ce7a7164c8a8f4131f99333b30a574607e301d5f774172c627fd0bca"
       },
       "Q": {
-        "x": 
"0x08c937d529c01ab2398b85b0bff6da465ed6265d4944dbbef7d383eea40157927082739c7b5417027d2225c6cb9d5ef0",
-        "y": 
"0x059047d83b5ea1ff7f0665b406acede27f233d3414055cbff25b37614b679f08fd6d807b5956edec6abad36c5321d99e"
+        "x": 
"0x053a91131611b1160954bdd0e69ffac08246ec85067a5dffb9f90e24623975265f798212fce88b41b2e67a7934fcfcfc",
+        "y": 
"0x1913fd2b7c72b8b702a87906c6f98e1e81b5c6774f1fd708118d5f2b9d90f4c756e79df8c9323af7a203b94a2018546a"
       },
       "msg": 
"a512_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 [...]
       "u": [
-        
"0x181d09392c52f7740d5eaae52123c1dfa4808343261d8bdbaf19e7773e5cdfd989165cd9ecc795500e5da2437dde2093"
+        
"0x015a41481155d17074d20be6d8ec4d46632a51521cd9c916e265bd9b47343b3689979b50708c8546cbc2916b86cb1a3a"
       ]
     }
   ]
diff --git 
a/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SSWU_RO_.json 
b/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SSWU_RO_.json
index 43785d3..bef437d 100644
--- a/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SSWU_RO_.json
+++ b/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SSWU_RO_.json
@@ -12,85 +12,84 @@
   "hash": "sha256",
   "k": "0x80",
   "map": {
-    "name": "SSWU",
-    "sgn0": "sgn0_be"
+    "name": "SSWU"
   },
   "randomOracle": true,
   "vectors": [
     {
       "P": {
-        "x": 
"0x14738daf70f5142df038c9e3be76f5d71b0db6613e5ef55cfe8e43e27f840dc75de97092da617376a9f598e7a0920c47",
-        "y": 
"0x12645b7cb071943631d062b22ca61a8a3df2a8bdac4e6fcd2c18643ef37a98beacf770ce28cb01c8abf5ed63d1a19b53"
+        "x": 
"0x0576730ab036cbac1d95b38dca905586f28d0a59048db4e8778782d89bff856ddef89277ead5a21e2975c4a6e3d8c79e",
+        "y": 
"0x1273e568bebf1864393c517f999b87c1eaa1b8432f95aea8160cd981b5b05d8cd4a7cf00103b6ef87f728e4b547dd7ae"
       },
       "Q0": {
-        "x": 
"0x02f2686965a4dd27ccb11119f2e131aefee818744a414d23ecef4db1407991fdf058f0affaee18fd586a9ab81060ae20",
-        "y": 
"0x0341a16c88a39b3d111b36b7cf885b7147b1d54b9201faaba5b47d7839bcf433cc35bb1f7b8e55aa9382a52fe4d84370"
+        "x": 
"0x0b63f31bcc08df890f35ee362c8538fac22cf22637aa2ba22d9c85bc1bda995926ab690d86830bf8ae06f4d537ccf6d7",
+        "y": 
"0x0666f3763cc7b223ab237e313f6474c9a3c2f5ed985ee8d1faa0928b4b428ec1a366226125ce8f415edb3f706e71d80e"
       },
       "Q1": {
-        "x": 
"0x1357bddd2bc6c8e752f3cf498ffe29ae87d8ff933701ae76f82d2839b0d9aee5229d4fff54dfb8223be0d88fa4485863",
-        "y": 
"0x09ba0ec3c78cf1e65330721f777b529aef27539642c39be11f459106b890ec5eb4a21c5d94885603e822cfa765170857"
+        "x": 
"0x0362c0f9d6cf4b73309a16b439d096b3ead588ab03cff57daf56fe747ab6d7774d5bfc0bd0a55bbeb0f05ec25cc191f6",
+        "y": 
"0x18d279b38babbd69aa176031655d138a731c049385aeef6eff3bf80e45ebcad0a941cdfc135e9ea1690a25eb6eac38e5"
       },
       "msg": "",
       "u": [
-        
"0x14700e34d15178550475044b044b4e41ca8d52a655c34f8afea856d21d499f48c9370d2bae4ae8351305493e48d36ab5",
-        
"0x17e2da57f6fd3f11dba6119db4cd26b03e63e67b4e42db678d9c41fdfcaff00ba336d8563abcd9da6c17d2e1784ee858"
+        
"0x0633af2b38973d1cfb6e905292c41f209fe52e5be989b5e0d32c06a0e3c23e4843927cb8289b440f3cde0da46dc9ba0d",
+        
"0x022474974e47d74c495de648eff1c8e4fabbae0d8ce3e30e3d1a5f9386cdf2582f78df056342d59ccca34321d93ef13d"
       ]
     },
     {
       "P": {
-        "x": 
"0x01fea27a940188120178dfceec87dca78b745b6e73757be21c54d6cee6f07e3d5a465cf425c9d34dccfa95acffa86bf2",
-        "y": 
"0x18def9271f5fd253380c764a6818e8b6524c3d35864fcf963d85031225d62bf8cd0abeb326c3c62fec56f6100fa04367"
+        "x": 
"0x061daf0cc00d8912dac1d4cf5a7c32fca97f8b3bf3f805121888e5eb89f77f9a9f406569027ac6d0e61b1229f42c43d6",
+        "y": 
"0x0de1601e5ba02cb637c1d35266f5700acee9850796dc88e860d022d7b9e7e3dce5950952e97861e5bb16d215c87f030d"
       },
       "Q0": {
-        "x": 
"0x119cc1d21e3e494d388a8718fe9f8ec6d8ff134486ce5c1f97129797616c4b8125f0dc568c59836cbf064496136438bc",
-        "y": 
"0x19e6c998825ee57b82c4808e4df477680f0f254c9edce228104422494a4e5d40d11ee676f6b861b6c49cf7de9d777aef"
+        "x": 
"0x0e8334d819ca7fad50979a487e0bc95cb1410914f1d760f842fc3dd0102755e7ca81b0356da7b9771ab11bf50efbca67",
+        "y": 
"0x120397edf7002610f907c2d4ecfcc4e817f1f8915becb5919510796bf595d854048461662ad960347216b00dfc79db38"
       },
       "Q1": {
-        "x": 
"0x0d1783f40bd83461b921c3fcd0e9ba326ef75272b122cf44338f0060d7179995a38ea9c66f3ce800e2f693d2634a4524",
-        "y": 
"0x017b2566d55fa7ee43844f1fa068cb0a11d5889c11607d939da046697c8ba25cf71054c2a8eb2189d3680485a39f5bdd"
+        "x": 
"0x013e1240e4da2abda009e263089cb8e57f1b24d0d1df09f644cc9c9a8b3fde7d154c7f1b0895a0af22b902a8140fb3ce",
+        "y": 
"0x0d6a9f75f2088dcac8f8ec0ab94bf2dac23b7b832bf23c91f9241f753c5831054b058192351a972347cb19806e78477d"
       },
       "msg": "abc",
       "u": [
-        
"0x10c84aa245c74ee20579a27e63199be5d19cdfb5e44c6b587765931605d7790a1df6e1433f78bcddb4edb8553374f75e",
-        
"0x0f73433dcc2b5f9905c49d905bd62e1a1529b057c77194e56d196860d9d645167e0430aec9d3c70de31dd046fcab4a20"
+        
"0x07df547923a0c77ddc4fea1a8a2eb156aef1746d5452239a55a378c5d3590e0b75cddff0eef2a9214a41923f2be27b55",
+        
"0x0f95fd8f00e25c3073ec07f249a7d527e580f01a6986158aeb064ed831d544fb9c5dbceb6604c908db5430d8f3d1c4f3"
       ]
     },
     {
       "P": {
-        "x": 
"0x0bdbca067fc4458a1206ecf3e235b400449c5693dd99e99a9793da076cb65e1b796bc279c892ae1c320c3783e25062d2",
-        "y": 
"0x12ca3f12b93b0028390a4ef4fa7083cb23f66ca42423e6e53987620e1d57c23a0ad6a14db1f709d0494c7d5122e0632f"
+        "x": 
"0x0fb3455436843e76079c7cf3dfef75e5a104dfe257a29a850c145568d500ad31ccfe79be9ae0ea31a722548070cf98cd",
+        "y": 
"0x177989f7e2c751658df1b26943ee829d3ebcf131d8f805571712f3a7527ee5334ecff8a97fc2a50cea86f5e6212e9a57"
       },
       "Q0": {
-        "x": 
"0x1614d05720a39379fb89469883f90ae3e50995def9e17f8f8566a3f6cfb4fe88267eac1dc7834406fc597965065ef100",
-        "y": 
"0x1060e5aab331ac4940693a936ea80029bb2c4a3945add7ae35bce805e767af827c4a9ffcb5842fbc50ab234716d895f6"
+        "x": 
"0x03ff794b445b926906b2fa710ba5db9f7b8689429a1630ab672854b5ba1a7c59bf3667d64aa63824a8798dcb631bfa9a",
+        "y": 
"0x1581711cffadabb6136f4bf57749e04b92787c7486da6b6da1fa758655c9af275b23540370d9f3987a100f0d3dc8e6db"
       },
       "Q1": {
-        "x": 
"0x0f612cda21cee750b1ccff361a4ce047e70d9a9e152e96a60aa29b5d8a5dcd25f7c5bd71bb56bd34e6a8af7532afaa4f",
-        "y": 
"0x1878f926302468949ef290b4fee621d1172e072eda1b42e366df68fc87f53c35583dbc043009e0b38a04a9b1ff617efe"
+        "x": 
"0x133bdea6715b4ef780693cd0055025b221becc8e04506a776484590df9b43af62ef402778a9c98ec540bc293e9741565",
+        "y": 
"0x0d953a5bdb2d16e62bfeab742e70ea64fddd83e8210b2416d40a02b0d90986fd0d00a3d77751ac467964ecc037dc284a"
       },
       "msg": "abcdef0123456789",
       "u": [
-        
"0x11503eb4a558d0d2c5fc7cdddb51ba715c33577cf1a7f2f21a7eee6d2a570332bbbe53ae3392c9f8d8f6c172ae484692",
-        
"0x0efd59b8d98be7c491dfdb9d2a669e32e9bb348f8a64dbf7e47708dd5d40f484b1439109a3f96230bf63af72b908c43d"
+        
"0x0a5d2ed6108aa08d652ab61af11c12d8750ed179cb962779c7b5393f219ad4b78b7b252a2896a341ad451e93f1904fb0",
+        
"0x17d6cd69f4bd29b85c550539a296c76ced075d9d39a81f4cdc2804a7184ff9ea4a5a85dac4a2a61e317894d0fba55740"
       ]
     },
     {
       "P": {
-        "x": 
"0x0a81ca09b6a8c05712396801e6432a87b14ab1f764fa519e9f515816607283fe2a653a191fc1c8fee89cd30195e7a8e1",
-        "y": 
"0x11c7f1b59bb552692288da6557d1b5c72a448101faf56dd4125d8422af1425c4ddeecfbd5200525064657a79bdd0c3ed"
+        "x": 
"0x0514af2137c1ae1d78d5cb97ee606ea142824c199f0f25ac463a0c78200de57640d34686521d3e9cf6b3721834f8a038",
+        "y": 
"0x047a85d6898416a0899e26219bca7c4f0fa682717199de196b02b95eaf9fb55456ac3b810e78571a1b7f5692b7c58ab6"
       },
       "Q0": {
-        "x": 
"0x0a817078e7f30f08e94a25c2a1947160db1fe52042626660b8252cd339e678a1fecc0e6da60390a203532bd089a426b6",
-        "y": 
"0x097bd5d6ae3f5b5d0ba5e4099485caa2c505a1d900e4525af10254b3927ae0c82611be944ff8fdc6b278aab9e17ee27c"
+        "x": 
"0x17dc55e956f1e24c800fa6a61ccba179fbba6bbe27e96ab16b862defa4782d567f8733f1ee39acd7b665ba0204318d7f",
+        "y": 
"0x0252510413c32677817c4ee5f84e4c8f66721e489913a50eac550f41ad48b01b763ec9eed5bd68bcac76131ca9ebd741"
       },
       "Q1": {
-        "x": 
"0x1098f203da72c58dca61ffd52a3de82603d3154c527df51c2efe6298ea0eeaa065d57ba3a809b5e32d9d56dade119006",
-        "y": 
"0x0bcbd9df3505f049476f060c1d1c958fe8b34e426fd7e75424c9e227d9c4d3edbd5eddb8b1e89cc91b4a7bd3275d4d70"
+        "x": 
"0x03d2f5444d39ed19b6087cd684d2a72795038d1ffe9ab120f7e5ce41fb48af76bba3eb4efc8a696418fcb3c5cfdbfd94",
+        "y": 
"0x061a1fe191cbf373b74d5f642148722160b5524dd2c06a49c5e4d5480966de5b0854d53cbea144b482fa687eaf9fdc66"
       },
       "msg": 
"a512_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 [...]
       "u": [
-        
"0x134dc7f817cc08c5a3128892385ff6e9dd55f5e39d9a2d74ac74058d5dfc025d507806ab5d9254bd2334defbb477400d",
-        
"0x0eeaf2c6f4c1ca5cc039d99cb94234f67e65968f36d9dd77e95da55dadd085b50fbb11489167ded9157e5aac0d99d5be"
+        
"0x111e524a9da7ae49a1cf6b03f5bc9d374f16951dcba59d03529a94afd4e5ba171fb1dffa373d13993503d594abd1b5ed",
+        
"0x006ad90d8d5101c88db3923376f2a33ff922ba39342d1a5462785796b6ebdec10dedb5e9cd9ff8e611af939f7f617844"
       ]
     }
   ]
diff --git 
a/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SVDW_NU_.json 
b/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SVDW_NU_.json
index 9e9e234..05128dc 100644
--- a/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SVDW_NU_.json
+++ b/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SVDW_NU_.json
@@ -12,65 +12,64 @@
   "hash": "sha256",
   "k": "0x80",
   "map": {
-    "name": "SVDW",
-    "sgn0": "sgn0_be"
+    "name": "SVDW"
   },
   "randomOracle": false,
   "vectors": [
     {
       "P": {
-        "x": 
"0x126690faf7d2cc7838d18f58ae94e9eab1d042fb93ed7245aee5a1a3ecac3f1935df62b807f9bd7be1018492b4ccd087",
-        "y": 
"0x0d2fe772107e935ddfb916da6dd69cb3c9b112cbd7452a3da77e16620f58c06db9c1eb19ab031995c96dc2d0c16b5031"
+        "x": 
"0x10a5d58b52dc8b0e5b9c83e5e5ca49cc48d9efe5018d4d9816200b2e6a2ed51a64f62bd413f1139d7504bae8e777e970",
+        "y": 
"0x10a24635478b4cb41a2919057d76d4b41bf41ebf23f8622f6f709e722a7f4922ccfd001ead45f275685b5136e0d09012"
       },
       "Q": {
-        "x": 
"0x10c4561604827f4687f7bf5a365411577c6c0298910d6a67685c675f1dd0b59ac5fbb46b729b3389499aaaf5b11bfc06",
-        "y": 
"0x114963eba7ffc5e3bc4c86a1dbf73b4952bfd60fa94449b2adc81dee0e974e4afd228a1af4fb1d4ede14cdc727deed0c"
+        "x": 
"0x008b9526bf4806b9157907fbfdf03849905a586ab3b4faa2e1287d54b151639c1c4e49e02c03df7e77384eab5f05b559",
+        "y": 
"0x0888e71e577d22fa3891063e89307590efa7eaac676ce879afc53a79155698f4ee55008e66be14dd77cf7ff41c55722a"
       },
       "msg": "",
       "u": [
-        
"0x1754372e423dd665efc2703d235a5b42ad5609ee9872c303a0b900b152d5ae8d64c2d67764a6f188b87d61445cf5634c"
+        
"0x118f642bd1c2a29911bb43e9838991f9399c41e3bf92a71b9219c8a5edbdce319f51b90e72b949848851b608e0caee0e"
       ]
     },
     {
       "P": {
-        "x": 
"0x03929609010843a52432b815cb5fb90d6a5ee8a10cc75c70d6f1bd64642a0057d2e69187ea3fff0a34e7e72b1cef5948",
-        "y": 
"0x196b4734ee0b1845619e8b871c0a2ea556660dab119868ad5542dc5b782b0df61cb6d2a1b2cd174a80cbc9f8cde6d470"
+        "x": 
"0x0dead3d3db337422694f10ba8e2391fffb6efff65c6bd60f624d0ce10fa200481a72ce0aaad111a4410a38a4b4108a46",
+        "y": 
"0x0038a800c995de01127f278169d365089cfa9ef09efd538dee91c97c8ec40891df0f50843864ad23904129d5b4f4a1d6"
       },
       "Q": {
-        "x": 
"0x0f5b63a00bd63757fab41dbc9b47b679650d903a83934eb920a13097d58dd5f82068c059bf1de52971373c3cc83c427e",
-        "y": 
"0x03f2547ce0337e25a9fad27335f499b054cc1ab3e1c29366959599b5d362602bedcce56c0e039c4ec0fbbdf041564892"
+        "x": 
"0x12e095c062d0a4358c5b382f8610e6104aed69944447f0d04b0a9f0afd378e8fa8de4f0711168cd3aff501a145615503",
+        "y": 
"0x0fe86fc6d6e51c6f9d75fc83c9da98a724a062ed25934740219653228b882182d6a4fac1a42480228db3c12344d2145e"
       },
       "msg": "abc",
       "u": [
-        
"0x0a55c5bc65256c488bb068e3b1d5d2fc4acb3017da1f7d9a3a9036eb5880123b0aad219aedb4836eab28e7a85d171054"
+        
"0x08a8225bcdee1e9db85e01ebee4b14a8825cc401189ae1c0474b483b0970b28e1ac12082c22954bfbb825fdcef77ecdc"
       ]
     },
     {
       "P": {
-        "x": 
"0x107485fecc3be4b92f8cc35f1782c67742d055c379e6bcb77836396edebe728aec4ecad0290bd1bbd5be7047ccb8554c",
-        "y": 
"0x0603d69e02982c8a0edc6fd84848fa9d9c75a0d7a372eb1ea2672245ee2d9ed672cd1a564fec3cb77758b966316d5c09"
+        "x": 
"0x15651e258c566dc7527a165698f8d71157078344c2dd359d220cf00168e536ec89222681f49c0b9b4cd0e8ffe85fcce7",
+        "y": 
"0x0077640379dd49d0ac509ac041a5f3c8a54cddbc6add66d5ce4ff86896fb293f43696ad6c628400be7fba6b058e3db8c"
       },
       "Q": {
-        "x": 
"0x09c7ef760508a7d4a226869cae2c556a8773ebf5d4bbba33b0cffbbba598105bf7549cd33d52ded62be72f718ab0ac9c",
-        "y": 
"0x0aa4882a7806cac7bb3bd6404000066b7c6ff14dc590efa26f2740b1af2f3be2b50e1d5b99b37d723d9d3b0cf089bf62"
+        "x": 
"0x0319e7028069c8fc4ab9155d810c607186b9f97f854018d195f71734039f83fd42d839dcdc044acb91db25d155c5fa58",
+        "y": 
"0x1171bd0048f0741d7f2b5f1316678b5017cdc2d2efd28ef9d8140633b200d57343b04d9f1ae25d9ef4a1bccdb57bbda8"
       },
       "msg": "abcdef0123456789",
       "u": [
-        
"0x06983540e75c0e7a36976a66cbfee71e05c9ea2cbdb3b0f25aa9329e02ee95895fcde7262dae46c370c148e1027c4819"
+        
"0x0979bb7682c048cc9fe6b9cbd69a009a8347ae1fe3931b3afe24c29867adb96aa967e7682b3a47f9b9567c8551218a46"
       ]
     },
     {
       "P": {
-        "x": 
"0x06c214d69a4ecd4fd0230f2dd2a8988daff27c597acee1ec5e6045e0848894d1435f5c143f4226fbc27a2045921c2499",
-        "y": 
"0x179e0869d8c73643e0bc27ebe3178ee297ad366c9a4f416a0b0ac2265ff763fbd8c0bf37e637d081190352f4c1961f74"
+        "x": 
"0x06b8d589c3d2018d069d4cc57a359402a27ccb5bc017d9a2d67762720a63afb9e2a12c0c417becc4b51efcb39e8cd2d4",
+        "y": 
"0x1307d340e6d9d16d822105a014419e9f6be6dd3fdbc42e2f96099058a9fa24f17d81d4ce82cbd473bbe51bc95e988751"
       },
       "Q": {
-        "x": 
"0x0598fd95bcd0a790e6921a51f212f5194781521cf32fcea581be2a5cbfd2a8fda8828141a24168689a273d258b1fe083",
-        "y": 
"0x04d0dbee266de33d9bee538d188e209476ebe3b34e58a19d0ea6ae542219b3f3549685ef3eef82991feb23ddde098285"
+        "x": 
"0x138307c4c46b63f05521143275b28a48a6ee2dbccef2b75e77e87257b775a346905090bbfe4c35948bc76be1a6307b33",
+        "y": 
"0x1668fe7bd31692c9ed74c657d631e82faa5aba8f89703870def3974fe42947b1f36f2f3787e7f690ebf2fc8fb6e91dd1"
       },
       "msg": 
"a512_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 [...]
       "u": [
-        
"0x011a4d12d373940b946029aef4bbdbb880810b25370d1f5b171e2d68091fabc9a4c8fc4f39c9b0ef98c34b5f90070a9d"
+        
"0x0aeef9f4c2881a00b584bcfe2fe19b861cb00fef6edcc5779b32178e952f033bf9066489921612cf3d25a8be095809d1"
       ]
     }
   ]
diff --git 
a/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SVDW_RO_.json 
b/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SVDW_RO_.json
index 8384f86..888d0af 100644
--- a/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SVDW_RO_.json
+++ b/src/test_utils/hash_to_curve_vectors/BLS12381G1_XMD:SHA-256_SVDW_RO_.json
@@ -12,85 +12,84 @@
   "hash": "sha256",
   "k": "0x80",
   "map": {
-    "name": "SVDW",
-    "sgn0": "sgn0_be"
+    "name": "SVDW"
   },
   "randomOracle": true,
   "vectors": [
     {
       "P": {
-        "x": 
"0x045f87745ff759f9197e131ad83d47d635dc36a3e0c7e4a1be5e1effe5e63ac69c8f34e6c3aef9c5cf28224922788367",
-        "y": 
"0x06125886a03f883740a078313d5fa6e4a68b9c0394eb75f77c65fc8b44db3f4ef933ac6adf341bc45fabc7907afcb832"
+        "x": 
"0x163505b44d4a47de22946139337d787f93f4356075c55401f4fdbeb3ede4f3138684e2437e50175f94eac511d7c673d6",
+        "y": 
"0x0d09a4540a792daf4d0368f20afb5bd859e537e362edfc9b6f35290b6d05df90937ea91e6277d1cb91638c1abaec4eca"
       },
       "Q0": {
-        "x": 
"0x0d8deaf1a9fe87c5710466d0cd554b243a041a97c15228f1c65be6244b5e1a575f4ab2762a1cc9ff18d45d4f1494e2c6",
-        "y": 
"0x090dce51930eff6bccfc7cc2920f180c398b0a97085ff9e4841367e701a0f28616bef537203d27b0656f3b7ee52ee0ac"
+        "x": 
"0x04c5db8bf2c09bda41eab080eb6ffed00f30d4c650a0c0c8cb136d9041a9e9b420aa5737fc8dcd1ec2eda971b4bbf7e1",
+        "y": 
"0x05b8cc1054ff8ec690a4c073649b474b7b96f2b26ebf83cdd354197ab89f66d78f120407a934d5aac78913d16a8092a5"
       },
       "Q1": {
-        "x": 
"0x0a36d0d4051eb32d253b069d1d15c5b69cefbb75bf38d66d43b37432b34f88b2553bf063c6533ca87112c3e95c295ebf",
-        "y": 
"0x0bdc425e77f44ac13587b17dab2b1b9d3e3501be1fe1c56c7f3701fbe53b43a37263c04fd9aa1b7f58b1b63fe6cb29fd"
+        "x": 
"0x0ace795fe3b2f40cceda72f6fc9086009db87b1e63e906df2eeca748df8f961ae3c83e83bf6c11b5d833e7b93c8911f6",
+        "y": 
"0x02be94da9204c38c42828e677cc941184b62ab9aaebe408f90035c50afd732611550dcd31cec9625874596c8d45dd2f5"
       },
       "msg": "",
       "u": [
-        
"0x04a74117c448f7aad70bd41328b3856de638c0e10c9ff344295a04b90db0f2afe80ff2da62e091793d6e52bc70b28d47",
-        
"0x06f44093874c190fff1e893c847a59601d5d5ac0aebd85ba36b3906a93173e0d2fcf6bed8013ee2679ca337f21f8f053"
+        
"0x10baa9e54a51ad63c6d8675830a2d74c43abd00a4e56432e90aa77ccf95997286d3b7bf1f61059b76663878995426b9d",
+        
"0x0acf2dcf2bf547d48c01b96379801bd7e2b9f815f22132a07d1ae1ffe49040825ba7b28082696a67b3de2cf9de5f886f"
       ]
     },
     {
       "P": {
-        "x": 
"0x009a357691a6f7b2917d9a34ba64d896d40b49733fcb3207f8c146e20fffb47823198a26b6ceeb01215fc3422908020e",
-        "y": 
"0x03fe44c894c107a8547826b60f577b90f80c63f899ef9dcff94daadae180ad803609337c9ec97d6d9b8ba306df7a9849"
+        "x": 
"0x02967a7955df3c43807263e9d33c28912daebcdf915ada74ea6ec131210a3f304d97a59d6e3b7bcd98d84f61efb2f659",
+        "y": 
"0x13dab558fae67943edd68f571bdc82ad6944f2d80285d9f578d4b1be0d7b4641c653ca52f13eb3474922617c00e4eab5"
       },
       "Q0": {
-        "x": 
"0x01b50bac3377c4e764fda5fcbe9bb477c3becb8cf18a3026a88ab2a0fbf6d8164d60d85ac9e67b6712fbb26b10ec4597",
-        "y": 
"0x11acedae54a20e1f8d58fd074e1b7de957203f56365b52a09824ff9f8d191356914818bdb35faffe8657ad24e1f5db5f"
+        "x": 
"0x118e12a015459f171fa12049d2bf7a43aa2d07b10709c2e21757f191cc60a3313e447c4ceefb3dc89e05893af65b133d",
+        "y": 
"0x0c02fa378304433efcf458c0cc531b72b8613e425cb8404be8612aee0f7850724ed2a6c6d02a8310cf381b99c85293c6"
       },
       "Q1": {
-        "x": 
"0x16bb1fce160d3fb5194b275a907cb03bfbe8713e830f2a573acc26782c65c9a6e88d96c6489c96dc6f65815cb5ab2662",
-        "y": 
"0x159720d02fef12d1a40b1c91336908d72b0eb1fe54a16a914c5ae9710a8fa8dfad035ac6c39708c88318fe26113f28d5"
+        "x": 
"0x107450b1fd1a5e7b8fdf96cd40da9c1919ba86c124160ab6d5d2ed9f83ee8f97c1530437f6f811fa4f4cd1d0a7d69c42",
+        "y": 
"0x039185c9fb255a0ac30d091675f02d29bfcf6045b1532384056876a389819d48da77fd71669516e7c98e12da273cddd7"
       },
       "msg": "abc",
       "u": [
-        
"0x145191560d1db38062a0a2e29469d71eb035f888cd4bb2792ddf88ad63c93320738a3e4c6e199bb286e26efaad665a0f",
-        
"0x17f7bbcbcf64dedb58af6560e2b2d08a678e4a57a0b042978840abb77f25b33090035675ac30bb461a8955a9d1ebb411"
+        
"0x12b51a783412cbfae1f1b20d7000184c74c889382dc65762ad98a8d6d654aec9a05fa4621693072c67e41987e36b3998",
+        
"0x150a735bb2fb20d4b6221a2d20cfbe275826a63a38f04f757ac63a35dc0a26041d842e9d7f27e3394a007bbeee92fe85"
       ]
     },
     {
       "P": {
-        "x": 
"0x04eb09680fe48598533932907810fb7681e60b3689cb138454bec627490c5089b6dd755556e52a36c3817e98b62d7497",
-        "y": 
"0x1763dd8bf6823d9a22124d22a4ab3d93d8a9603ec80b4a40905b26664b16033fa6e73a6155c9bc4c6faa42bf911ffba1"
+        "x": 
"0x084b64b095e373b86441e9fe737a3f8e56fe7f0016a973ed9938db9958505a8927ca220d8e8235901d4bc1dccd4362bb",
+        "y": 
"0x0fd10114cded64bf037d3ba00b4a85e5f19847535dbc960bdaaa8a92bbb9d8a845dc355370ed0edb9d4403afc39bd30c"
       },
       "Q0": {
-        "x": 
"0x164e16e858fa1e1a4ea52152ffe0a42f1e6ae1258dd830eb7aa66434d7d5689da945e29c61766ae213bc1878363a3d4c",
-        "y": 
"0x077cc4c8f74f33a0e6036d32c4407b3021b0be82e0eba80a1fc119f69a071c52f25764dbd72f2cafb420264c079b7691"
+        "x": 
"0x01bbafd66bbe5955cf186e1b050f962f7a2efa4f03ff50353dbda78568f5541aa8582c25057a9fe414f9a1bd82eccf0a",
+        "y": 
"0x0c96fd01df526fda79643a45b1ec5d435e63a3af5cf4088f30c07302ff8e0a271aff59e5da618ab9b89326fe8b4338fa"
       },
       "Q1": {
-        "x": 
"0x06a856de4eb5651a21c68c7e85796c16e417d7d97cb3e1b74bbc4042b340e647fc41cc570bd160fe9917d32a47bc8b5e",
-        "y": 
"0x15c4e89949bbdb253d333018a1417150f8a78187c343f5bbdf25d962c513df1d96ee1059facab028549ebe7716164466"
+        "x": 
"0x086bb205df6314011dedc477b201229f383c1e2585b5aaf269fc6762ccb2397690064429dddbf9f304367508aac0fe83",
+        "y": 
"0x02f80d27fd2981db284b0f66cf3d8e06f751464e610009b9f3fbb818f526ff85f7f1a38ea3c85008c5814ff19d05a1ee"
       },
       "msg": "abcdef0123456789",
       "u": [
-        
"0x06ed3e25d860fc574e482bbc0a09c5f44216ad44d75ea499cf905efe4bc3c5fd3e94df483d17501395f325d3c8ea7925",
-        
"0x1426c02b7de4bedb4a301c7d2d4a270f672a8fc448471f2c3dfcf43846b102e592ad6e055c2d5149fcbc21f5fb6002c0"
+        
"0x163831497fddb01bbad44e3f592ad34635579e055d36be71d53bec8b22c27525a471ea058bea4a188a857861fd1af802",
+        
"0x0cf8d175460236795d8163d01d5068d82b218295a1f8a8eca094ce27ff208ab5c9c3f4212e3fcdef3980a267598f6830"
       ]
     },
     {
       "P": {
-        "x": 
"0x0915842b42c2c4d3b509823c60c1fad834784ff451855f43390b80c3b6985d76aadc6ecfbb4b42a07921410d6821f0bb",
-        "y": 
"0x052873ee0b444dd8337ce403636d680cff1e9402b7a1ce2ab210bff11a83fe4e14216fe96efe3f344c1a2ec0fc1b2c5f"
+        "x": 
"0x1362872938edd5f0f648d3f8f71225b38a9bbf6c28dee168d76b274125ef4596d1959dfa622861848b2bf713fda12601",
+        "y": 
"0x0308f950d4321be5e06a751aee088d09da8fdb36c4bc6b801d529e43250f3e90d55c8d9fea6d3762912f92866bd89d02"
       },
       "Q0": {
-        "x": 
"0x15901778217bbe602fe603edfa0518009197445f34dd2184450fb2a1a5088945c32d31f6a9fcd9e3c4333557a11c18a3",
-        "y": 
"0x126fc2597e155f4aeeacb7a039b5a0012be2cc1433d8c097b6c8e9e6be9b5f279c0decb019a6995345e607a36681f8a3"
+        "x": 
"0x17f78156bb227c0fefb04a3d58f7315cd7eb696e52b7efeef9fa82171e8c6d8dd265f7fcffa8e6e734c6cc2611363e80",
+        "y": 
"0x000a6e05625536b8cc8fff02ebe2ff0a6f137d5f0b644afae033fdbec60e41e281383e97333a342e3492baeddf637e36"
       },
       "Q1": {
-        "x": 
"0x0dcb7e280b34f7caf24928ecb126a3bacbfeb4b70612d60bc7cd36467ad58cf33925e9c78635cdb7a024c0a3031846c1",
-        "y": 
"0x066bbc62980e8bf7664f2b84ee69f3ed2c1a49ef1f8c0d35d709ef1ed149f79cc93a65ccde5194d333710496f087d41d"
+        "x": 
"0x191f209664bd324339cbbc4e3afe7e713fd47e57c476ff8c224bef6b59745384ec6f15edd912c56336299733b9650f3a",
+        "y": 
"0x108c7a3b7d2e6c83e1e9bbcb03960a3b9115d871cce130d8622576339bbb3fd02565de45b06620d557e9244c4a4944d8"
       },
       "msg": 
"a512_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 [...]
       "u": [
-        
"0x0da5000e88db641d86b6aa2711b88b9bcf45fc95689dec569bd9ae6aac6b19e96620920f3fb806d0e72a111889983c11",
-        
"0x0367d0cf2689a9e972f01d9d325a3e1bdcee67af7f39fb71030869457ea93d0039e58bb92cd058e45ced781def78ac79"
+        
"0x130bc594dc2a536afba69280db5d4675051f5eb3a5d147290874f53fd275acddf4faca77145fb23aa6d9357a00e0a4f4",
+        
"0x02e5a19a37149c402114906448c3f7558125edbfce8c5241056d32bac7980d95d820ecf23dbfa5eafa9c4f8c3dbb4b70"
       ]
     }
   ]
diff --git 
a/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SSWU_NU_.json 
b/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SSWU_NU_.json
index 95bcfc4..5c577ab 100644
--- a/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SSWU_NU_.json
+++ b/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SSWU_NU_.json
@@ -12,65 +12,64 @@
   "hash": "sha256",
   "k": "0x80",
   "map": {
-    "name": "SSWU",
-    "sgn0": "sgn0_be"
+    "name": "SSWU"
   },
   "randomOracle": false,
   "vectors": [
     {
       "P": {
-        "x": 
"0x170919c7845a9e623cef297e17484606a3eb2ae21ed8a21ff2b258861daefa3ac36955c0b374c6f4925868920d9c5f0b,0x04264ddf941f7c9ea5ad62027c72b194c6c3f62a92fcdb56ddc9de7990489af1f81c576e7f451c2cd416102253e040f0",
-        "y": 
"0x0ce03abe6c55ff0640b2b303440d88bd1a2b0cbfe3274b2802c1f58b1085e4dd8795c9c4d9c166d2f033e3c438e7f8a9,0x02d03d852629f70563e3a653ccc2e114439f551a2fd87c8136eb205b84e22c3f40507beccdcdc52c921b69a57968ec7c"
+        "x": 
"0x027e4bfada0b47f9f07e04aec463c7371e68f2fd0c738cd517932ea3801a35acf09db018deda57387b0f270f7a219e4d,0x0d4333b77becbf9f9dfa3ca928002233d1ecc854b1447e5a71f751c9042d000f42db91c1d6649a5e0ad22bd7bf7398b8",
+        "y": 
"0x053674cba9ef516ddc218fedb37324e6c47de27f88ab7ef123b006127d738293c0277187f7e2f80a299a24d84ed03da7,0x0cc76dc777ea0d447e02a41004f37a0a7b1fafb6746884e8d9fc276716ccf47e4e0899548a2ec71c2bdf1a2a50e876db"
       },
       "Q": {
-        "x": 
"0x029b6b7335975135a3dd653cb5f865f8e1a6fd0e806f83f08078426d294efb72578dc6747b81747d03b5bce9fa9c6d4c,0x0e31914536a751dce017585d51c8c30127cf0abf8cce302faf8ea87de1393a37696df8d999f597b256e8e19a0865817a",
-        "y": 
"0x0a718016d326692f10e7508c6abc624e1b37da5fd0e4391acf5a19fac36b97a9ae13a79dd2bd0b28c1db20f9d27607e9,0x01df562b2fe9e7281b63a3c136a93773184ad924d9a0a0cd01b51150f175f9dfaa8d009f77df9812636a6de4a1b0a901"
+        "x": 
"0x0155447bd67775ed9eaf35db498e8acf00b9240a8b336b284d4be1558036495c5872384378c0931b888f85575768f52f,0x09fbb2d6ee99f38a93c38c891cb28c5e2f18e97c78c7b74fbbb2d4d21c1b02dd05170a3734bdf7ca97ac17091b85b1fc",
+        "y": 
"0x17d2d52554474a2cc19322bce0c3079671043190fc6d33679530df9341bf23424b2aa4470de343e65ab1b1a3c1f380d7,0x052e9100ee074779a4da267cd34ba58be71f373b05ea5f9fb4a28dfb279a9129efd5f22156b2d3ae2b3c52ac0fc7004c"
       },
       "msg": "",
       "u": [
-        
"0x09367e3b485dda3925e82cc458e5009051281d3e442e94f9ef9feec44ee26375d6dc904dc1aa1f831f2aebd7b437ad12,0x094376a68cdc8f64bd981d59bf762f9b2960df6b135f6e09ceada2fe8d0000bbf04023492796c09f8ef04016a2e8365f"
+        
"0x0e775d7827adf385b83e20e4445bd3fab21d7b4498426daf3c1d608b9d41e9edb5eda0df022e753b8bb4bc3bb7db4914,0x025fbc07711ba267b7e70c82caa70a16fbb1d470ae24ceef307f5e2000751677820b7013ad4e25492dcf30052d3e5eca"
       ]
     },
     {
       "P": {
-        "x": 
"0x16d830a4e12fddfbdaf9a667f94f21e490879fd3ccc5ee6f039cd7c2174fb47ea8027af78779a978d2a921612844587f,0x019a3b47aa956b2b548cc04d9e109dec06642d6e28814f7e35f807e1ce609e2eae3a155af406c842529776d8192f562e",
-        "y": 
"0x15930174c11aa9b51a5cc3ebfa1ab6377e2318c4ea2df387bdb84b28687a02c86e6401b195bbcabb6e95d6ae43669e12,0x15adde069459ab2012b44c7703119185b96b7f04ad59b39f4f6aea35fdbb9c5c7d876b5f89afb55b67e7da96ad489dc3"
+        "x": 
"0x09349f1cb5b2e55489dcd45a38545343451cc30a1681c57acd4fb0a6db125f8352c09f4a67eb7d1d8242cb7d3405f97b,0x18f0f87b40af67c056915dbaf48534c592524e82c1c2b50c3734d02c0172c80df780a60b5683759298a3303c5d942778",
+        "y": 
"0x02f2d9deb2c7742512f5b8230bf0fd83ea42279d7d39779543c1a43b61c885982b611f6a7a24b514995e8a098496b811,0x10a2ba341bc689ab947b7941ce6ef39be17acaab067bd32bd652b471ab0792c53a2bd03bdac47f96aaafe96e441f63c0"
       },
       "Q": {
-        "x": 
"0x0f4c4441758b65035fab9adeb84dc4fcbf48e218085111cbc9e3294dde67ba93411d747d090fbc5aa144900df054ed32,0x0bcf59db7917f351264cbc8825c04e88885b01f8228ecef238e39cd9d7e42c7a6b4aeeabacbfe43ea36f1a148c3517ae",
-        "y": 
"0x128fae582c1c32dc1199981981c9f2ff42343523192b82d3c010c6b06e419087449196cf4a79caa921db2ab10fc316b5,0x0cff0768048fef20c10c19679deb85fff097befdb18a47a21c2ee57eeebf046d4d9f3bdaff6f9c7d6c80e0700018b86e"
+        "x": 
"0x0d158306276e64752eb05c697c0e982c1f120d36a0001c20910632b8ef4de742ff03b77a1d5313c0c5b015249d804713,0x03511e20d69ecd16eb9ed9bcbb500593abdf9b9dae12621a3b7faffe3d2a78ecf9e1526b710ea9773a8b36e1c358f3e3",
+        "y": 
"0x1299a622ac19a0cd8215b9d3d64916770894d9af261e25b0c6dce3cd4025fa1ac58c4f20ca49f58db59ac4403f274dcc,0x0cebbb186aa40e6ee61380ea20f21a1ce304ad0a0ca2c5126be0ff18863ee17494e0da7e63eb8184b6d6e7c8b2a09bb4"
       },
       "msg": "abc",
       "u": [
-        
"0x17ecd5d41a860b8886cb1210874b254f59945b089f774dcc14bc1aca7d4e3c975bce0d28510c442e9a932be5880ee5b1,0x0f105595e14847cc9a41fd70deb3240337678b266304100ec261add2585b991c7268bb1a325d2f871b327e8d04fd579b"
+        
"0x045ab31ce4b5a8ba7c4b2851b64f063a66cd1223d3c85005b78e1beee65e33c90ceef0244e45fc45a5e1d6eab6644fdb,0x1870a7dbfd2a1deb74015a3546b20f598041bf5d5202997956a94a368d30d3f70f18cdaa1d33ce970a4e16af961cbdcb"
       ]
     },
     {
       "P": {
-        "x": 
"0x1498937f0ed18c49ebbcdee579b58ce235f3ab03be5dc809e1df25e2e0b4eb4c672f4eaf26df91f3755d6367df55d5be,0x0910b2d55e210122fab2d2dae81e6a440fd22e925e422aaf16a8fd28477bacb12aa888de0faeea203e372a1c1cd9578c",
-        "y": 
"0x033b1948575e70fed67fb4f7bd86b5452dfc0afeb74ecf5cab4a6872e33f0eade9564d3d5b9fcb9d4c498afda0bc037d,0x102631eb4e684d759312d7eab78598f487c2c10ad3d3552cb43ce6f09a11eb46e551864863077906d3ecfd921f1fe541"
+        "x": 
"0x149fe43777d34f0d25430dea463889bd9393bdfb4932946db23671727081c629ebb98a89604f3433fba1c67d356a4af7,0x19808ec5930a53c7cf5912ccce1cc33f1b3dcff24a53ce1cc4cba41fd6996dbed4843ccdd2eaf6a0cd801e562718d163",
+        "y": 
"0x04c0d6793a766233b2982087b5f4a254f261003ccb3262ea7c50903eecef3e871d1502c293f9e063d7d293f6384f4551,0x04783e391c30c83f805ca271e353582fdf19d159f6a4c39b73acbb637a9b8ac820cfbe2738d683368a7c07ad020e3e33"
       },
       "Q": {
-        "x": 
"0x110a8c50fb6b2df0146678e80de24089e0d619c45c488e0c688f136963a4190b76647e9e122c18ab7b60a88ca1281e9c,0x17f35d34544ad51d51f2ccfbda142addc678bf5551bf301dce3c3b934ecb6aa78b3814729282755a62e4680083736628",
-        "y": 
"0x0bd9c15e07f2a2bd5dacae74861afa19ea15d393fe7552d3ba45ef1396d37ff7967bdf67d93ea68baf849710bcd88147,0x18e9a587c3b76f53a62e8919101b6f2b25803333a53b2c8596db44929bd59376f0a170c5debea9f8a378107c2ee1d51b"
+        "x": 
"0x12e15bef85566a4587d120dc054c935f2ffb198aa0f70137b02c406ddbb80e01844e3efb7f4457f304d85410a5cb0e21,0x01a3026ebdf89e103658689c35316e87c2de54633bc5548104b48c87690cb15008dde3cb0386923ff9cf89022adfb6ff",
+        "y": 
"0x068beb96b5ff990c8a44bd85e7dd2739dffd8942d749db0ac7127374d4818b35e35266c708a74e904cc18c464fb0fa8a,0x0c9d5a6359f809813ffc2a17357a6f92d08fc6ccf098309ee27dd527ba8ce43087971b963da5c663e958b7bbec04b105"
       },
       "msg": "abcdef0123456789",
       "u": [
-        
"0x032ae17a23a76c94745a5460cd9f1191c0ebeec7adfc4df28b0833e536b7dbabf498dc076ff16cc11c6a6ef5105df693,0x1107a6f450c6c9580c720190b577f52c633cf5f3defb528ae873d3723bccc8fa433014e9120a1da31abc27c674f37ae4"
+        
"0x0b6e6135a4cd31ba980ddbd115ac48abef7ec60e226f264d7befe002c165f3a496f36f76dd524efd75d17422558d10b4,0x088fe329b054db8a6474f21a7fbfdf17b4c18044db299d9007af582c3d5f17d00e56d99921d4b5640fce44b05219b5de"
       ]
     },
     {
       "P": {
-        "x": 
"0x18af6eedb7ed3be66c5a1d998ad4d9640f557b189558baec41f6e712ff2a39f795a35494b4b12343b7a1a2b17686d793,0x021f7faa0550e5a5d08338b4c0a5d30240dec7989fc7c77b6ffba9bfd5d64ce45af5aad8da8482bf0da91af4f29d371f",
-        "y": 
"0x0cc46cea229960bfbe25831162c27f96cf8bb14c017938e35b636987a306521915456fbd40633c6d5a30f61bce52a3f5,0x166c1abec65af593d291dbd05e5d7d28f1a9ffb73751d65f49d76084493f3da707ee2bbf54cf6de5bbaac2ffa0028c31"
+        "x": 
"0x0804152cbf8474669ad7d1796ab92d7ca21f32d8bed70898a748ed4e4e0ec557069003732fc86866d938538a2ae95552,0x0b8e0094c886487870372eb6264613a6a087c7eb9804fab789be4e47a57b29eb19b1983a51165a1b5eb025865e9fc63a",
+        "y": 
"0x09e5c8242dd7281ad32c03fe4af3f19167770016255fb25ad9b67ec51d62fade31a1af101e8f6172ec2ee8857662be3a,0x14c80f068ece15a3936bb00c3c883966f75b4e8d9ddde809c11f781ab92d23a2d1d103ad48f6f3bb158bf3e3a4063449"
       },
       "Q": {
-        "x": 
"0x0cf7bef1339955cf2139e61d3876d22bfcc89c44492b458b2d08a6bb4fa58755739a4b216bfd7604e203f4c31cfcdc00,0x0b80a0dee7817f29f8bf3374a3c033586d695391dc95280b2143d398817bbf9b76547c54b81fd2b8ad24a6afa1dd8524",
-        "y": 
"0x07bba42c7be028acf9111e51cfa6d98f2949f12635847e938b0f7980705da9abd1d77bbdaf86f90512e0139ac0e57a6b,0x0266340a1aaaf26dd5ec892f33dcb6a217dcde9b8d39dff5d277d93130ee3e33e43a2cb83665fee8648d610da2967fa5"
+        "x": 
"0x17b0481e72cb03d59686907d10243ca3208078151e4881c8754503587676512e182cc82b24e906a0b4ccf95e5adeb7fa,0x09f9a74ec1f83ee91991c40858051460f1253283f101afc155b4fb141af20ae84714cda88ee0bbcceb3cc010c2b3172a",
+        "y": 
"0x0cf1edfd25dfadc366eb5b92d6d300b68a9a01deb833b754fec39ec049b70e8b8023c4abb1386a8c8419d44d414d7416,0x0eb4061e6ee7136fa62bcb68df9b1750ad85fc225050f06669d7153bb96df7cea2eb1837aa2d482eeb1c4077c8885db9"
       },
       "msg": 
"a512_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 [...]
       "u": [
-        
"0x0cda6b874f8c41862c078099aa76d607be51d913a2e3f997539a0993bda31892292818c74aa9be035f234df2576fe49a,0x0306162d24592a18fa8de2007d7b69d04bb7a71a5a7965d15bdcbaa4ddf9b599079fbdae9f67d55ab6dba044f9daf179"
+        
"0x0f45b50647d67485295aa9eb2d91a877b44813677c67c8d35b2173ff3ba95f7bd0806f9ca8a1436b8b9d14ee81da4d7e,0x03df16a66a05e4c1188c234788f43896e0565bfb64ac49b9639e6b284cc47dad73c47bb4ea7e677db8d496beb907fbb6"
       ]
     }
   ]
diff --git 
a/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SSWU_RO_.json 
b/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SSWU_RO_.json
index d108a06..69a8c29 100644
--- a/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SSWU_RO_.json
+++ b/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SSWU_RO_.json
@@ -12,85 +12,84 @@
   "hash": "sha256",
   "k": "0x80",
   "map": {
-    "name": "SSWU",
-    "sgn0": "sgn0_be"
+    "name": "SSWU"
   },
   "randomOracle": true,
   "vectors": [
     {
       "P": {
-        "x": 
"0x0d3b02ee071b12d1e79138c3900ca3da7b8021ac462fe6ed68080dc9a5f1c5de46b7fe171e8b3e4e7537e7746757aeca,0x0d4733459fead6a1f30e5f92df08ecfd0db9bcd0f3e2f2de0f00c8f45e081420aa4392eade61eade57d7a68474672fc1",
-        "y": 
"0x09cc6f7b3074f0c82510e65d8fc58f6033e03ba7358005a13e2bbd7f429b080f29731ef08c3780c9e3c746578b96b05c,0x0011531b8e08900a4f6f612e1e27432961419ce6a5ee3ec904a53588982d36ec4ea37be80b6cb7d986b38faec67dbe44"
+        "x": 
"0x0a650bd36ae7455cb3fe5d8bb1310594551456f5c6593aec9ee0c03d2f6cb693bd2c5e99d4e23cbaec767609314f51d3,0x0fbdae26f9f9586a46d4b0b70390d09064ef2afe5c99348438a3c7d9756471e015cb534204c1b6824617a85024c772dc",
+        "y": 
"0x0d8d49e7737d8f9fc5cef7c4b8817633103faf2613016cb86a1f3fc29968fe2413e232d9208d2d74a89bf7a48ac36f83,0x02e5cf8f9b7348428cc9e66b9a9b36fe45ba0b0a146290c3a68d92895b1af0e1f2d9f889fb412670ae8478d8abd4c5aa"
       },
       "Q0": {
-        "x": 
"0x06828063f239b9607a9668fc0a59e5391c1bf24ba42ab5b480112666e3835c45f29401bea70d6f529d07e33bc017c1a4,0x04545e6b5318ec1c10f75791bc97142722370b851b7829987ada828de5a9b6353cb2c4f8540bf0821328c983e7eb887e",
-        "y": 
"0x06fc755b65fd277f7e1e4a6174dc11fedddf1baaefc07d04c3d120e15ca2ec61f489711c4af949bf6a5d26a885db05e3,0x068d9e1e428ed301e425e633603ea9ce5ff02df898aca1957fe5be1faf2ff42b64485cab41370a50c1e7e9742c0a2c6d"
+        "x": 
"0x090f7997311a1d4ec54520f81046063f4e9e7a64570133dc41c3600ade2a4d21aae59714cf290f95f90a98b658f5b64a,0x08427a6a0dc88a36698823d07ab25d11f95a9508cb5bb1ad2bd57bc02b5efb8c7b1da66ed02b0f915002446e24fd5d38",
+        "y": 
"0x10e03a54fd5ff7a0a69543aeeef42e22cb589e0b33455943cf84f0c5b28e93fe17c0bbba2fafb10aea29b28705eec303,0x053b939496e87877fb1569c911bf618056396fac2458757da71cd83fa152239d605c6a4e4e847295080ea3874f84a832"
       },
       "Q1": {
-        "x": 
"0x16af5b519e92362ce94c0ef76051510266c5ace22d2cf9c3c1ef20856e4669523df27c30e513444b436cef2082983814,0x03cb00c0a0370bd301cd45b0c08e6feea3adf07052e83a3f2ced57665d7484f5540db310f649387701731ff185b460da",
-        "y": 
"0x025310a94143c55175eb4929df2d8294b0268f3011850bdf46bdfb82749233e8dbb8070d623e3fb8397b079504d6c5aa,0x087d9d2c1cd911f8cd9844e60011a1d1c02d61a831bfd33b58c436d4305935abd3207c553c0145fd3ae1bf18c82011ce"
+        "x": 
"0x0df5643a19f8de7e8e45575551cfb8909f4a75722ec8fbc43cb8df284cdde9e2c61ea0c6116bdd86d84063c96fc7dc7f,0x1241a410598f1d57907850699a694720712feddb916f343db08f2c18481df46cbdf7afe8eaf214127e427736ea281c5b",
+        "y": 
"0x0ad66ed30cb6f55a83feed4b12c141bd41f593292403127b07e1bc6dabacd8ea53f8a322b5d4080e4393184c713865fa,0x0c4e6fb11ad2fe3a081a399df36094465aafb232f7564f4d35abb0092ef9ee855bcfdac2e6775cd7d383241f13ed856a"
       },
       "msg": "",
       "u": [
-        
"0x1921dd796efec0b5f2ad9037e73b7470e6e7c85e6b7bf6e6827729442cd01aa55ac765ae451f497873400e90a814105c,0x0838662da53724510bb7d677b7caedbf3c4e19e55b42c9872c2af096272b26cb53cc522413cf4c54c1f7691bcdabfc4d",
-        
"0x12bcf2aa2ec29a9dc0b77c942869af340047a27b57f549ecdd2e93fc5e63d0364fba13941725cbbac1d1e8c6e8605d5d,0x04e892eca8729b9a2b88b4b0b33e8c8d4ed52f7d0fc860e41f09de0a05c48f605a7a9d603b60db4f9ee49f888e4f3273"
+        
"0x0ae8ca9aed945924c3a12f3b6f419cac381bae8f16044ab6c66b41999e4bd0ea169b44f2fce3634a0ddea05b9186c6b2,0x1134506e471554affe377f908c29fc7cd7d247b3a14f9e092b9f4c5b02577939ce01bd6b43d9d59d9a994e9fb5fb5096",
+        
"0x0b28b14113885b1d8ad08f5da9111add00d8c496fb3d5d7b5d3b6558a058e9e62cd02dafa7a95f968cb3063f09fc0e21,0x03378e456f437ce445b6bc95121566d85b1b3b8ca057064fe7a8a1aad7e8a6e9f886cfb1704ad712e9042f4f002f4bd1"
       ]
     },
     {
       "P": {
-        "x": 
"0x0b6d276d0bfbddde617a9ab4c175b07c9c4aecad2cdd6cc9ca541b61334a69c58680ef5692bbad03d2f572838df32b66,0x139e9d78ff6d9d163f979d14a64c5e57f82f1ef7e42ece338b571a9e92c0666f0f6bf1a5fc21e2d32bcb6432eab7037c",
-        "y": 
"0x022f9ee5d596d06c5f2f735c3c5f743978f79fd57bf7d4291e221227f490d3f276066de9f9edc89c57e048ef4cf0ef72,0x14dd23517516a80d1d840e34f51dfb76946c7670fca0f36ad8ec9bde4ea82dfae119a21b076519bcc1c00152989a4d45"
+        "x": 
"0x1953ce6d4267939c7360756d9cca8eb34aac4633ef35369a7dc249445069888e7d1b3f9d2e75fbd468fbcbba7110ea02,0x03578447618463deb106b60e609c6f7cc446dc6035f84a72801ba17c94cd800583b493b948eff0033f09086fdd7f6175",
+        "y": 
"0x0882ab045b8fe4d7d557ebb59a63a35ac9f3d312581b509af0f8eaa2960cbc5e1e36bb969b6e22980b5cbdd0787fcf4e,0x0184d26779ae9d4670aca9b267dbd4d3b30443ad05b8546d36a195686e1ccc3a59194aea05ed5bce7c3144a29ec047c4"
       },
       "Q0": {
-        "x": 
"0x198d5f5fad8e1594ed98ee3d5f5b24b58e6cb8ae37372f6028e7beffa0e7a16b0958e13f92f322f513b85eacdd88d0c2,0x09288d195828e46e7c058b22115af5c1bde20cb7462a3f9d6488188fa937e2c0bee3aa188622312f87e12b48660a66d2",
-        "y": 
"0x16a0916a0c42492649701f0520c075d4cc66d74cd8fb4f9c6d2631cac1bb48e357bae0b97bb7f87f1b08539ac944f46a,0x0dd21353972061024a92db26e51cd97246c89a884ecad67a1ff8dd1da73a8397f54d41533ea2ac48ee4f5817cb09dd1a"
+        "x": 
"0x0c292ac371849207564e7b8f4edf47dc4b4d7a618dbacf6a322dc732f014cc2a22049eb69de11657c301cb4202b98541,0x0f37118e477c16005cae8f639e54119ff796eafe80461bf39ecce5c0192b93075febc80d4f73f9e0893adafa17b13b45",
+        "y": 
"0x15853304d7fd9f47df2ef6c4bd1fb0b3500386b23d1acc530be0c14e027f15b0aa83856d82edb723f3d857358ecffb80,0x0626fcfc6b3d8460df7ed2aeca6449cf6701dc7ff51c143ed20054ecf18732f4c5985455864c79a4065b13e26ecccf9f"
       },
       "Q1": {
-        "x": 
"0x17a29041f55a2b23b3a601b8d4f5a3e85b75cdc52650f26470884b8b367b20ef8f7e6f0ee8969b994f4132344a68f023,0x115d814e4f7973e7a960df53b494c2a0a1cd7a42ce6650bd7f46e55a2622dbf6528392ab9c8ff45d3fd97bd7b1dcfe67",
-        "y": 
"0x15749a8af1d35fcb409ffc3336670a8b47a117f81670394183c316d7bcd2a49b2253ced38b7d00763a2fe4afb51f0336,0x10624b1845ccd669e5edd403d68a603fb43e382c6570953dd9b9add472e422d1098eb45380fa870e14f6927252c4e667"
+        "x": 
"0x0bce3e2dd15f6acf55cce0e3a4cde190a6d45434a8b0ba7cf79ff37f737ed90dbfd2988a257db65e10e684e5876b50db,0x19c1ad3eb0abb3590087d706eb155a4cd166484e82cdccb2465ce193b15a27d919aaa37d1824a9a9d87f31fefca1baee",
+        "y": 
"0x110c9643a8dfd00123bb9e6a956426f26bedb0d430130026ce49b862431e80f5e306850239c857474f564915fc9a4ba6,0x1748ca13032a2c262295863897a15cd9a7e0baf003336bec6fc6e40b982d866fe3250619fdd2ceadb49fab8055f47e65"
       },
       "msg": "abc",
       "u": [
-        
"0x0b7b2d371fc970671ddf7bc9ca4a70a1bd286af4487b497e460c0b44d405d73db576f8a08d59416cc976d4b1d0100775,0x0e86d0eb2d34c34fe8b2a1f2d999fa3dabcd504fdb4beb57e79756b08fd75b0a82660abc6026ecc4ccf327a522587b38",
-        
"0x10376d048c060df1c5017a363144c482892fe2ce0061094327b8bbe49a713ce795726aa23b5402a271e9f1e7b9b6c7ba,0x0117f2ea63015e192d759f11a658a002e06112147d90f00d7429722456b9a1c63fef2dbe8df13168e3bd40af2fb959f3"
+        
"0x0a7d239c9bdb41ed2ad810820a8b4f0703f60cf5833440cd684e386e235b0f092da91adbaa69562b911ebd3f820655f2,0x16302b56f5a9f538c7168cd5194957903b82be6749171f8de112c8bd3360ca24847d0567d6e42eae0c43a7fd8530b378",
+        
"0x0a1cb4196dec71b1f704f3533cdf27f247e3ea175ddcc1ca6df0f45c587eb77efc6c493848f4df98e24a32753dfcf96b,0x07aac42db7f3dfbc5146c70ca0ac6157893abf4e2162e303510e0cefb8d024c24080b9c2a9896f6c03ffe680fc18b788"
       ]
     },
     {
       "P": {
-        "x": 
"0x0ded52c30aace28d3e9cc5c1b47861ae4dd4e9cd17622e0f5b9d584af0397cd0e3bae80d4ee2d9d4b18c390f63154dfd,0x046701a03f361a0b8392ca387585f7ee6534dcec9450a035e39dc37387d5ca079b9557447f7d9cad0bd9671cb65ada02",
-        "y": 
"0x07a5cf56c5ea1d69ad59c0e80cc16c0c1b27f02840b396eb0ea320f70e87f705c6fa70cfeb9719b14badbb058bec5a4c,0x0674d1f7c9e8e84d8d7a07b40231257571c43160fd566e8d24459d17ca52f6068e1b63aaae5359d8869d4abc66de66b6"
+        "x": 
"0x17b461fc3b96a30c2408958cbfa5f5927b6063a8ad199d5ebf2d7cdeffa9c20c85487204804fab53f950b2f87db365aa,0x195fad48982e186ce3c5c82133aefc9b26d55979b6f530992a8849d4263ec5d57f7a181553c8799bcc83da44847bdc8d",
+        "y": 
"0x174a3473a3af2d0302b9065e895ca4adba4ece6ce0b41148ba597001abb152f852dd9a96fb45c9de0a43d944746f833e,0x005cdf3d984e3391e7e969276fb4bc02323c5924a4449af167030d855acc2600cf3d4fab025432c6d868c79571a95bef"
       },
       "Q0": {
-        "x": 
"0x1729bbdeef9e902ab2e2bf6f90e3800231397ecc36b0b53d33ecb173bd682ef45a51e691d7c884965fb530cc85d6476d,0x07fd016eb7f3785362f75a0150d9e73d5ae13631c491075d73eab5c3b6ceb8391d909926d0c519fb83fbe889dae667eb",
-        "y": 
"0x15ee2194b053071cd1d40bacbb2650b5608d22d12ddeeae9fb11921e475ffea6d1c008fc390f231aa14589365c6937c7,0x15345785b7ba1db6cf6ec9f652dede47c86b6837b2c43f3a9e6984f95feecffb84bb5963df655068a0ad6b8d8a762fc6"
+        "x": 
"0x1552566a422494f9edd07e21ee59067ecf031f333b3961b710fac1245fd003552c294ac47ef982432f0f1e1e9d07c4b6,0x115a9de418d20ce3105eaa2db025d183cc679327c6d6a229960d536b9fce33d3242f9819680a9200265ec2dd02b44b19",
+        "y": 
"0x0cef664ee9270354c3bc06d1e0570e4d6663cc528711afca10118955990126f87917c87f7b9c4cf73aaf05c1b5875c6f,0x0b136f41d233ea420bc3658c4156f717fb190775d3690d139c0923c231e44af54d780119b8edf16038208b63feb1f3ee"
       },
       "Q1": {
-        "x": 
"0x18505ec8bfa125df7ea130e702eaa33a89961dd24ad06b3b3452da15f2394d0abec06aa3b4e9433c32fa8a7c6ef874ec,0x17c0d91f4c363a7ff183deeb4308fa5e8d61c0263b9d0ddcf304b2758e2b556695fe20636b4b7a2cd4909c145a81c884",
-        "y": 
"0x140b4d6603a96ef9de2a71a8ceec992aa72eb8c4f08d28de11310dcfd4d13dbb68734001417d0c1587b9082b593ab9ca,0x0ac81f1093f8be742b331c1c04e9cb0fb75ac72e87ae5da9fa395b043fb83fbdabe9e54331ec3a3a754f845939b118f6"
+        "x": 
"0x0332d5027c68f38ca78c6c63c013178fb58b31283a6135f6bf5629d18c76144accfd96905f51a49284f4ef622dfec003,0x04865f680c5f2203de00f95dd6652c9b3dc0d36361ee0df16a39a86d5f7cfc8df3674f3c3fddde88fb027353eac1a3dc",
+        "y": 
"0x1651e6cc8af2241989a9006dd59a9cd41fc1bbc3a7f9e32875889ae54913b8398dfa106aff43ff1cfa9019141d9ad565,0x09324bdbfedfb886899a7961f7827702743ef550f548bb89ab15d4b24c7c086196891fc300e3e39c21aec0257543a3fd"
       },
       "msg": "abcdef0123456789",
       "u": [
-        
"0x0022182b07cb11d26cbdab43e0d696297a7dfe1b8dd2fa8ded11f858bf25ab000adb1ec319cbfa42d1107a3ec9528b33,0x01160e11ac26a46322b4867a0d66cbb1d8b8f78e88a3771b7a832d18c65d65297692e9faa1f65719c9ea621578003c37",
-        
"0x185e096fa6e05479e1f3ae4148fd4de985c73e414f9a9202d3930d59a09d90d87e545522a91a0d24c6aa3e2363a48a41,0x08e234820b6cdd9229490f5c1e05e82b8fe7b1efab9dfaabe3ea4158f0f8da855daf1e1f5382246187d317ccee520a0e"
+        
"0x0e17df0242a3dd0e7454a4b580cafdc956650736b45181b329ca89ee2348570a1d7a221554c7122b91e6e3c3525d396d,0x0298e9fa0ff37440cd2862e91c0a27fed05087247acf79232f1a4eb7cf8f65997a92319a8cbd00f7b73ee9e82241eade",
+        
"0x1200056764f11beacdb6009acaf823e100da27b4bfe45e94097a52c1fed615b32dbc5503f964ab5277a7c30d9a2bf0de,0x0d1d7feb418f29dbf4d4459c839dd33f904d4292d016f701b35e4a7611798c83de1b7deb1c6c1521e9142cc36a7d0579"
       ]
     },
     {
       "P": {
-        "x": 
"0x0161130ef4aa2f60f751e6b3dd48ac6e994d2d2613897c5dd26945bc72f33cc2977e1255c3f2dc0f1440d15a71c29b40,0x06db1818f132a61f5fe86d315faa8de4653049ac9cf7fbbc6d9987e5864d82a0156259d56192109bafddd5c30b9f01f5",
-        "y": 
"0x00f7fab0fedc978b974a38a1755244727b8a4eb31073653fa949594645ad181880d20ff0c91c4375b7e451fe803c9847,0x0964d550ee8752b6db99555ffcd442b4185267f31e3d57435ea73896a7a9fe952bd67f90fd75f4413212ac9640a7672c"
+        "x": 
"0x0a162306f3b0f2bb326f0c4fb0e1fea020019c3af796dcd1d7264f50ddae94cacf3cade74603834d44b9ab3d5d0a6c98,0x123b6bd9feeba26dd4ad00f8bfda2718c9700dc093ea5287d7711844644eb981848316d3f3f57d5d3a652c6cdc816aca",
+        "y": 
"0x15c1d4f1a685bb63ee67ca1fd96155e3d091e852a684b78d085fd34f6091e5249ddddbdcf2e7ec82ce6c04c63647eeb7,0x05483f3b96d9252dd4fc0868344dfaf3c9d145e3387db23fa8e449304fab6a7b6ec9c15f05c0a1ea66ff0efcc03e001a"
       },
       "Q0": {
-        "x": 
"0x08420c5b8d9f73ddac45b6ce050a8876e5014cb8783bc63a24eebab5e0ca75d547b51025ecfe75f4efadbc8d71c145c5,0x1915fda1fb71039148f5d346f1c36df1630a2f908881f29de32a5c2782eb6eb3c8cbe58f8c1bf8d348319347c6ec7635",
-        "y": 
"0x0e557684bd3e61db3f96df904c57ee1e8e45f5aecdda654ed741587082ad91860d311cae158569c217c56bbba3d3f25f,0x0acc1f70e15591005ab8bcdc7b1b19e3c16a6ee6c7a17ce83eaa2771971254be34726b266c076abab6b9b477ef790261"
+        "x": 
"0x089b04f318946ce75b5b8c98607041488005ed412a4a99e7106b340427d35682036cecc076827e700e47c17f65ee3f09,0x03bef411c75f97147673952b19ee293e28df019be2fdecf5db09afb7caad4a5e984750b19c2007b50ae0b26f83088e8b",
+        "y": 
"0x18b1ef96738c5df727e1fa2098178fe371751c0c169af30bdb95be22a0ecbf0a75c0e6c63e4a32f241250f877859c086,0x0d04c624db798ca46a352637fa76516c83a5d98e147a25f629fb1e02a9a453970e42d835ba765bd7d94a4a3f9f50e4a1"
       },
       "Q1": {
-        "x": 
"0x0cabb5826e6bf948e30cbb094b72685aa1d93ea49fdd9d54828b7ffb9df582e3d9405f33b9ae3ad3b6fd51863ff68c56,0x0604d687830b1dba2cd28c644709475c7a5427aa15278df2db06f59a48bcfb52061f77b6f5b637fc345e2bc64aa7e5ba",
-        "y": 
"0x11e8a23425631218f3249f1870a8b1a17d82f3224602e433ff04a5525e827582ac5898e81972e21618e41e5c5edc03f5,0x18f405a27aaf3803ef88b9f4d3e5d8eed901d980ebbefb71d5816ac2f1975c513965b7556ee44db2f74202ac178c72e4"
+        "x": 
"0x121b1257fbd3dda5f478b5de6aee2ca88780248c59afad1a9c9c9db5d03752792270cecc7cc676a1b91ee898b7f76977,0x17eadb5c134a1cc0305ad5d99f6e2a1cd906a2fdac318d4356527c70fc94242ddb664486c814ebd5959a2cf4225a783a",
+        "y": 
"0x00f0793bcfaf12e5d23fdd4173f7539e3cf182a0f5a1c98b488f59daca5ecf7b694912a93f6b81498a5c2282c09ee63f,0x081adf3c45b42c35fdb678c8bdec1d8c12f9d5a30b22cf52c1afc967d6ddc82fdae0673f76a5186a84f3602c7a22f6b8"
       },
       "msg": 
"a512_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 [...]
       "u": [
-        
"0x0034f33d3e0b2bb1e396fa3716a02682ebfefe6b99e986c356c725f4bb787714f66fca8aac0581b538ae255aa69aa8b2,0x169a32a329b295e56423a29a2fa15b259f5e27f992c1391b3d333a4a050d8264cf146b1baa641e609ec748d74d6bfcd5",
-        
"0x04028afd52de566f85dec8fd409112d34f09ed3b617b31bb23b0a96d76080d1dce671a910785cf63d4efcc20112f4a67,0x06d00ecaf61b0f972b521b223aeed36d1e4e1e6308b36dea9eeeb917619499d06615c275ea39cc4d7db697e4b697d40e"
+        
"0x0ca92554c8c45581eac2eed7ec2db1fe757af0a2803dc8e63180600eed2516f64b1c0d850c72a75c417f58723815795b,0x12ef692f69b1d61854b80e071c7fd751b19da2c194ba0fbee9e68454073dd3693e2c56852938aa1b090991018ff15a94",
+        
"0x11043d352059287fe7424285da213d4cc414df4d5592ee2507503088b3f89220697753ea8cd47fa13c9a15dbfb0ef20c,0x110efeacfff2801024c019cee7adbc3d8144c3b73c548ad8f0759c4976e0b3070293056f884dc0a1b3728546dddc6bcb"
       ]
     }
   ]
diff --git 
a/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SVDW_NU_.json 
b/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SVDW_NU_.json
index 25c4da1..ddb5176 100644
--- a/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SVDW_NU_.json
+++ b/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SVDW_NU_.json
@@ -12,65 +12,64 @@
   "hash": "sha256",
   "k": "0x80",
   "map": {
-    "name": "SVDW",
-    "sgn0": "sgn0_be"
+    "name": "SVDW"
   },
   "randomOracle": false,
   "vectors": [
     {
       "P": {
-        "x": 
"0x164c24901348f035811139a2ad95042bc85bb4b4481309431cd98503c951e9cb8f29d3c4ad0abeb31a3da4062f4b9027,0x0cbca2904d96a263308df43e2767c4165f0357a5f0abf3419acab6fcf2200002b0b018c574f9253716844947f2752c94",
-        "y": 
"0x12b642193b7beb7989fe98c06482effb8740d9e744ff317e050f758bf449d6dedfded2eb1b1b3314b8699b9ea41f9fab,0x0219ec9ba08594f6e1582fb6a6ffb795a92551b32191f146296d29497bbafba7b3aae8ab2f012a5780f72cb0d0380a78"
+        "x": 
"0x001f5fd916a2b24f6106bc49cc96d35eee8ede2f7f9699e316811519904e7b2803583f7078de54b1794d9f0704b85688,0x13ecdb8d57ecfbec3ea381839df152a26e9cce35b492daf3d007b3250ec02b64d8080b4c8016853b388cea0b5489bc25",
+        "y": 
"0x0c0d2918e5d653902be579f05c2b446a77878d778d03a226ef0b73412e793ecf6256e8cff50b8f5c8c7b3d5cbb8db2e4,0x03351116cbeb320b89c9633aeadabfc404090131811f1f9bfebe177a1920b1ebd5335eb4e0c140394cf00ce01ac778a4"
       },
       "Q": {
-        "x": 
"0x033aa78402bfe8ee9117ac5501b55e2d1cc133a36ff2351b0176e7f44b009260f9f984be5aff18207a751fee8347250f,0x0f6512f645a015b2917bcef9407299bc46e57344ec24877b681b2c7b3c8171bbd0efe0074fe5eaa7fc74983494f90521",
-        "y": 
"0x02ed21e9ce037653ba12b3996f085847db2daf80e0033013a67667c6c53983ee76af4946da08c7186164ed50d225551f,0x05f95d63b6f2d45bc79824359754d23c795f98be958384829ea72b473525f58bef08bbf1c09ad153628f2d3ca9f44bdc"
+        "x": 
"0x0e28eae4e4db410713f183018ead17eb7fdf149dcfc8d9bd010021cddee0d4988c9d3456d6c3dcb6c57eeddf65076edc,0x08b791576a8cc3b65818b7cb88188a1a63688c0724758a452a31e177b4900a750450ffa44f912c600b2bf45453a947d4",
+        "y": 
"0x117b6df28c7b9cd8d208c6c7ec1453e68c7c97230843e076f03941dd7f8c8e310f93fcf7560f2a490cf2f3c462f64b30,0x00849eb75f4b8f5c4b3ee6a34e267a3e2a0416f1d42e5bb57bb5fbcde448c01c632fea40524353cd7851dd8e4b4fcb8c"
       },
       "msg": "",
       "u": [
-        
"0x12e76b1034fcb8958d47b2ff763642841556e09d524a6e1ac146009e7b0a60e859567d52629ea27abc86996632970e99,0x005f69bf4eb6ef49bd04d4ca394c77b9ad359646e2ed36e013dc9491a64f2d1207734d4b91b53fd71a32d9e966d46dce"
+        
"0x0eef24c4eb118a5bae06055c1d98a9ef9ba4eb0f2bb749f63f2eedd71de7c7af27d3a6e4e17e5e2c611650521ee6b0b4,0x0908bd04d29ef7bfc7827b2e887ad025131aa38b1b96f15e8795475a477f6e82ec3c7e0546a36f31dfd2a0c031b0c707"
       ]
     },
     {
       "P": {
-        "x": 
"0x14662fda486645b71a497576120b99cd0c8fd72c52ade4b13ce4de57ca05acba0facf6bdc1a230539a96e97fbfdef9fd,0x0646f0fb608d82ba68075d6af75c61b762c5b47de2c620822e88acd296fcfecf125113392b582c48c9c4cec645e7e817",
-        "y": 
"0x097b57eed2bdcc07cf6518cc582af8604d284f51447d572f3c8b3c36c13f2f5ab3448d06a5e433a0a4753163469977b4,0x0d0e9f7c5c51da1a8b3211052b0562b0f19690027d2bf0df3f662ec9743b0b39c6b9be5b5bf6d224f7eff946b3c4a149"
+        "x": 
"0x0ad0765905e941f59e03a3c3684430c8bb3470b247a70b2e0fc50e3dd0d6a3aa4bc2a970660aeaee1514ddbd02cb3bb0,0x11ab385921eb2d52affc127ce814c5284410a68d390f497150729a717649673401d52f8da24baa71c696ffa904ce0c79",
+        "y": 
"0x13f087308db9972ec87a9cc3d4064cd630734809829e5035e83d6c12fa9bd4fae2af9509ca80e5b34d04deeae5b1aab3,0x0cbfbead826b4cf0bb5fb7a534aa700e18fc205c924b5ffbe105bb037fd27560c537c6c35184e53a56b392313a8ea036"
       },
       "Q": {
-        "x": 
"0x065cca134296b189b4587c38490d674900cac3cb7a6e14ff96f415eae6ce4ee51696910182471d2542b86bc707a40230,0x088edc31bb54b91389c1c057cc5b69e62eb06f72c3184834ce60bcdf1ee885ad8e03005230bfb15c89109209d8c7671b",
-        "y": 
"0x17c0ef47c0c7960baec68b33d1ce4e9a54c2c770956cc43afe93d8b4bb07d5205fca8f785d55010111367b529a13a67b,0x121a0b8aa8dc49fd8da99eb93d9d736e01e65a0e72c9144b3ba87416fdf125a355f38b5d98e98c20744cbae1c344386f"
+        "x": 
"0x0be2212e9e3f4cfc5b14f590e3f1e07daf0f37cf0859927063b98f009d4cd93d524334019b0627147fce0c977ac4b06c,0x0e792f3bdd691b2ec82c46b1d77978ee1f768465fe779805eaa1e83f3c2c278553cdd4f549318fd2784156820a24c287",
+        "y": 
"0x0fa287923f6386606d240fc06fae037b04324b63523cae055e9aacb8d70988580690407ba3e7055c1dae0db384808eae,0x08c9c5926bacd48744e8e365fb0f98e394d7a55b47d9c896ea96fea516b09f53afecae1fde28afb7033cf3d3aad74e7c"
       },
       "msg": "abc",
       "u": [
-        
"0x108fd37b239357d783a30c9aeea3129316f236cfa8e279bbd921ea7c642ffbb69e4f731cbee57b2df7b17e9ec19c8c91,0x110587325ae905e360ad84368fe6aed5b8636bab77eaac3921c0468154c5d72ddd3ca2e9d57d393d55929344a34215c2"
+        
"0x1197064aa416ed1d2236d5571ff99c5956085096acff695a1b59395b2db29cb97b465016b4a4c1ecbc53760a05f1c600,0x062e7c9bc14541239dff3d241091d3f0cb14c37698dccdd34b399835b2cbcd9fc7a3ebb25bf5c2ed6c867a3504d8e028"
       ]
     },
     {
       "P": {
-        "x": 
"0x0816a09925c45e39c3c04d3fdb331613f7308a0d5dec8e5496e4aec5e5a67458532f25dd07c6a793bc4be8be17a9fd56,0x0addce3d065de3f0e1b4ccad3e503b570412818094d1639329e7f4c6ad759bdcaff01f234ec3f1ebe71209a0773e4ca9",
-        "y": 
"0x1214b5de271352309fd0091b72eecdb6224f58af9c76ae47a2b21512fe194d5c08278bbfbbd3468ba4ef3abbdb0ffcf0,0x105bd74edfcf83e10663800fc4aca1f2de2e3197b6ad91c246c3c9828e24c44384747b95a8d156da7063df00546a6bad"
+        "x": 
"0x19d2e82a836c036fb0441e1c4ab657883526e732f0baae8b60e35abdb432ec59c1978ba52f36a1f93c821d9c249f1a01,0x077ebc79f190a4dbd11fa52f43fa8b339769e25b612d8c9cb1a9f4f487abb91b6e686b3fe3359f9b9864758623d0ccf5",
+        "y": 
"0x02eabe731541c963778438ce58d7fc2882f04709c048827ebb9da7f08db7b80a2aea077becb561302f03691c512aa9ba,0x114479c515e30ac4ed68f6950f31898e01a15765d76da4132eace76a3ab1d5922e22ba7333619a3ca044ee568bdb126e"
       },
       "Q": {
-        "x": 
"0x02da0a79d42b538d42ffc67176681d80ca8d0dc26974d3a30440ee92a362c13bbf737b414fbdf2fd8ce635a396e79ff0,0x0e91dd04cd2d2e112e503efec26f84183fca55101c36fa41226c72eab8e398a189c9cf2f4eda77f7c9a38a09a563b2f1",
-        "y": 
"0x0d3d3ca0d4ec0aff793a69c22e2abf333e8efc5a72b1d5179c19479e191daff895c95f32669672a1d3df38b1a184f8e8,0x069ab87711da7286d7c75f8cdd4b1e2719554d7866139e948851bc14d7e9124f6f969118bdd2ae3db9d8f997b59717e2"
+        "x": 
"0x17baf01f2408702e29324660ec3a7415367ac32a5364c1acb3a2b97f83923dfd7729b729cab2234e12137854bcd2f059,0x00316054f1f0f5dcc0b7fe04e16d59109098c6d0bf8f6c32bc5d3287439ea082bdba9269bae4437acacfe84a71a49d63",
+        "y": 
"0x11618a2b53afef2553e7afa57495ed03cb7d072e52067dc2368d17dabf149ec2f70198efc49c7545f9818827016d3408,0x0f1ebbdcbd6e2201799d869543362d8c7e1399dd14c9fe3b466b010c1b5edb30739b53f64abd24fc396328e9cdbd808e"
       },
       "msg": "abcdef0123456789",
       "u": [
-        
"0x183b05a0844e652153f50ef0ea7e12bd9174707faf7fa3ac3d4408e8f06b0c8bae4aa322a71614f7d0380986632f2261,0x011b40d28c312f5f62289fe083c493c84ac5c2e66f8be782c1d50493d30bab14fc88966dfe4d51f53049d1e7b221e0e7"
+        
"0x04bd797baab9a7dec6a33e0f2ecf148bf13c9f0ed7d414db7f7e78bf654c7ff0366de76acf99b114b210004bd207ebd8,0x011cc2dcb9c22912dd0c3ca91cebefe5e57c24f2317dbd0ab5fe7ff6454d1dbe1a5e4e17d92e7bffad4fc12cbffb16b7"
       ]
     },
     {
       "P": {
-        "x": 
"0x0eb76ebb9399768c509108314b557659a38bc8187e7ab742adf8c672da98e2a7c9714e0e885070ccb7fbbabebf7a7bbb,0x04049cf80dd5f3a2734402d6ef6ce67f35189a4ace622dae7cf02b8b9662cd58f05dde5b6920fb93c6126c5895e9a3a5",
-        "y": 
"0x022d29c941c40481c8496f4b1df9fb708103c3170e99ffe41942e79ce8b0e35ecdce0e9281da60a685bafe07f9a635a7,0x023c57e63304ec8997a2b35ab78a2d060ffde49ff0235058ffdbf129946672e518bb31506c53dad9c8a30b751b6181bf"
+        "x": 
"0x12b242fc22a527edabca13f6e698d6476c24cf2a854c8bdd5da3bc00e190874b0db2a730ddd03f5fbe36ca85ba99c3b5,0x04f3a9d0fcae0a360c08ab6adb11fb3c154164ebe3900990b265dae899cf7869cf6930cfb71f0ca965eec11b226f9485",
+        "y": 
"0x0de39be8863c3e4d4d7a0536780004af090789f94e1430fadce34ea39330e7f276b327834be0fab8b95a68170bb252ed,0x0962ee9b5b45333ecd3fde52f26e4193eeb6b78d49c7fffa3d8c40052938e118d0e7b9affb8bb602fbcfe3b73524463a"
       },
       "Q": {
-        "x": 
"0x1764c36ebfdb830ad6bed870087c5969cc95e16ca57d572047f8bb17ba961d2264c86726ef69ce6122a4459a6025461c,0x0d27880f35312ee235f2dc9208cc679679261e7f909072c5b71b14e369e20dc0c52459ace34c23aa6842e9b4663073e7",
-        "y": 
"0x07e98c5d7eadaa88299ee4ecccf848ca9492db725c45696596c50000cdf4852cee8d4a0e3ec0ca4d7b048ab0d92a4dee,0x00b35c992495fa745f8a3b765a2e7d7ee06e7c4cdd6d26be78b06231a98cf9fd6b585d24b6f7a659c45e1acd64082af5"
+        "x": 
"0x152527c9fae465fddae8ec34e3f8441e5e1768cb316d121a277e182cc1995157359c0e4fdf151e77b070baa0ebab4dbf,0x057831fc9cadafae5d8500bddf6c7b1f4e7b7e0df77ff0e3cda3d1150e4a33403d293a9c2bb441a4424b26e3a7a78781",
+        "y": 
"0x10fadd422a4aa508bc54eb926a97336d4f0c17448ffc71ed4b0a34f6ce2546271ca86d2d701021c0d940cdf0cfca6f97,0x15cdafd712b63fc2bd0e47caa8ce68cf2a125ad70cc3a2a166e97c6b270070e7cf46e6207a9d9121eac906adbec4bff9"
       },
       "msg": 
"a512_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 [...]
       "u": [
-        
"0x09619086497c2a6933c45e2d330c560562d87d3b2f77f1d2da51525fb630a0ba2bd03ea9ebeb65778a65b29f1092a99d,0x0c3c45a61a7938b2a8a645c48c37a2e2e957b5ef5bbe3f661e8bdcb50e962a548862335c8503d73c1d28c5dc598ea29f"
+        
"0x0cd6693615b9cf94b465a00fee61765ab3a531dcd6ac6515255f133b46ad2faaa0fcefbcb2d683d6a63f2742a10c1bc7,0x116f472765841380180b72806c9c323ad7ef71ec044bde80dde1ea7b8d91b3aaa09112fdf2be583d1ab4aa409f7dfb63"
       ]
     }
   ]
diff --git 
a/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SVDW_RO_.json 
b/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SVDW_RO_.json
index 6d1955a..2671e51 100644
--- a/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SVDW_RO_.json
+++ b/src/test_utils/hash_to_curve_vectors/BLS12381G2_XMD:SHA-256_SVDW_RO_.json
@@ -12,85 +12,84 @@
   "hash": "sha256",
   "k": "0x80",
   "map": {
-    "name": "SVDW",
-    "sgn0": "sgn0_be"
+    "name": "SVDW"
   },
   "randomOracle": true,
   "vectors": [
     {
       "P": {
-        "x": 
"0x0d2b7cb4e1b0f001de23bda54652814186434637442e61bd7ae665f78e3e8429a3b0abf727b6ffc1a7d5d7f5683c2517,0x0c6519468850b1b6b34c2ac7a67166d9c2b842df09105c8644d6d9be03880c56452e26dc82ee93d0db99946acc2675f4",
-        "y": 
"0x063e54fd52fde42a5d4a0739ce89956deb0aa4721237b581a79af5e6e847dc047e0b0a41502975e4c15bed99cdcdf0e8,0x0a04fe752f02d57217f2eca100582f9f60fe464aaec2e94624ff22a2522d562fc251e3e962b00f2a7cb544bad462487e"
+        "x": 
"0x1247e409b2a18aa704b37c891ad429af1e81a7d03d97c1651d072a63acc5585967939adfe6b41e608c4cf1444be4ebaf,0x1379e10a574e45e6e8ffc3d403bf975984237d4e0dd350a2209ee5025b738827620301e71bfe4449af7b9ea2a8fc0464",
+        "y": 
"0x0f171ce60457b1bf85847e48469e8a50e28b26e126201664b2eb962abe38c0eb2e1e84c953521c6e8cd82fe25fca520a,0x02663ec2937ebd48810bbd17d88f03e9abea73025d7a59c5b7a0db80ac3bde5b1b6fb55f825686d170702f9a0b354e7b"
       },
       "Q0": {
-        "x": 
"0x0440b705d56079686eace2e3d2fc6c26ed4349ddb574bbb13ef5c9c25c7a757b43a1243ecfc62f9cdd169d6360c21cad,0x061b98df942271495e7259a7010ed74c6bdf0f83fe225c7e60fa91b3699d32a99afa440f1ec380aacc8d703649631246",
-        "y": 
"0x12964591a5a374d4ed6f1306e1889d8ab5259e88928cf0900c6f4fc64ca2cd7d1cc992166f0515c7ce53dd52efe3ded2,0x1440790373a4369524884f589eff8c3ddeb82ad6032446072e75c3b09a300bfd9303a4794f6676ff2c73c796f9110557"
+        "x": 
"0x0c518ce5d2e9e96a19ce4737e4f60ef6273231e706540bca662697e16303f0066ace3544d272492b5c01ab2a20d08d0f,0x132f304e07b3a827b26eacbb0e3af39a32b260d95ca86e63aa2f8d0ba99b6f6ee5f15cbcd3afee9f9081879d5709c565",
+        "y": 
"0x021575725c8fb5107d5ad64c1f178d923e19203590dcb1b509af82ffbf367b9c4cccb89301f0aea987dc788d44547f55,0x00a2ba2f88f654fcde8197b94d1605c24515a5cb7823288d13760cc23e49c424db9a08d37e1e55c425f1334894ce0125"
       },
       "Q1": {
-        "x": 
"0x01146e5fe16047ea58369ff4e6f53ada22c23260cb46b4ac1b24a7054691835c6f45e3a8218ed67c68a2c492b35a89b6,0x196e511b97c1f3802e37478224bb5ce12082cee5dd8e5630ff194d8537c7b30ace746d39c051cf3f6a836a861f0fca71",
-        "y": 
"0x16860436cd82bd22c166a92a38bae79036e357ce185ddcc481cef46edf398d377b5d85f38325be63270cf09c31329583,0x067e5d9c24201fa688bb9101b96fff337625778d0a6cb00495fa5aa8840bfed134b7b1bbd03979538b9b9bb5222b8a99"
+        "x": 
"0x0fe40888ce7a67c99ba37194b2e62c77c9d2fb5d18d71faf81a4084b8edc805c30776a46dbe6b749ea170868bf4faadc,0x1918a1f78646dc0451cfdd37725fa080cfb9d9ea473b0f58a9929b7b31ab8da8547346a091a7e2b3d073e3cc38ce0b12",
+        "y": 
"0x152eebe67adbeb41ccc8a03926448c9dbe6692254203c6378f00a7e5bd56acdbde4ab9e8d1809aaf405bbe5ab395e385,0x070cc5025c561c1dfcca06ba88853300d4314db466e187e60cd1915c735bf2c6dc3bd0903d988d7d9b3b9e46dbe3ee1d"
       },
       "msg": "",
       "u": [
-        
"0x178a86886823673336e71d5cb95ef38381506d64e1251fe3f66c2fae08f5c1b5d1f01a0f09cbb29e8d776345c7601941,0x1200915fc80bdf41b2723f5051a642fee4f548ebdd6f90da9d34d8f477fd17f84921be12497be94b9061bcc9e977a958",
-        
"0x0c2b3e012f715a94fc08bd3757ba7c979d848c9719264d2a6b07f03be4f236da0f5017ee8b92fa4fac3ab88c64cce667,0x099e1f36e1dada16e9277160ba74552efaa0c939a629c16fc8ebda75421af560a7ede7cd4423f00ffc1a12c07ab05fa0"
+        
"0x011a69c0b78b463729c1e9e6c7a543d4c10e1880a6a5c92748db6708c7492b170912c46abf43a50d6af40345ceeb16db,0x1216c67865d83536ff57ed9480ac3ee581b7edc25860f73e2ed967c40f5647a4bc25d54538e14a0404d550acdbe8056f",
+        
"0x190bfaa5cd1654a6f71bcff0265236fc73a1a8c72f637b13fa9e3b7c69ad7a82de6419893f1a4f46b0aefeee08a5f877,0x001af2852d68aefb42258ae84e63fa04f45e0603a54d245882a2e2373484d49277d885983e300dcc8a7632c476f6654e"
       ]
     },
     {
       "P": {
-        "x": 
"0x0c2e41838e536c79576d6b34974204b591f0127354eac121b79029886a405615b273a6e1a78476d5d824d781b885af26,0x0dca051f4d106f072564729f74969ab9e557760e14c67c55ed38fb7e2f3f4b26af1ce227c963fd06a5c5c2745f082415",
-        "y": 
"0x12e8f2e906c3bac97820bd1cfad278d03321ba3d650a93cea80d4eea70271aff8f145dc6d7c32e4e945b4a213a551871,0x006d694e36dc47f3761ffc22d8a3cc66a9abe8851ad7dc42630a573f569692d46de02256b9bf98f1066be5ce38d97836"
+        "x": 
"0x14dc75415d6482bae5db292316e9fce2a9ac7c9591222ba12ef70fe4ad5ddd2a95b696857234d9114812394b60f8871a,0x121be08f8e5ebfd6bd080250aac7cde4ceb5672b5fd470bd8a92164e7b7fef93631da6bb514892cf913e5ba6bba00adc",
+        "y": 
"0x024233ce610d08957a91a989495af524ca3c4409e7f2fd38164ee7e76fc9694338370d90d2150f2e602bec35eda9e22d,0x00bd976560d390194db01606af280f74b6b4282d4bf3f6ed2718ac67ebe1507e52eab74fbdfdfdf0092c0d9a106969e5"
       },
       "Q0": {
-        "x": 
"0x056eff68c169148bf3cf4a1e3dcd47d05f172f54f0f0906759b98ee48897090c16127085c2f9a16dec9ef0b73e1e98ae,0x0245cec38af51ed121d2d2f9ba21469335fb2eddc2c084386477c53d2999c65182d43285464927b5f63465599955b283",
-        "y": 
"0x1597b2110dc452b8083728a6ed061340b27cef4b2f96c7c4c74e3f090577407f2d8e72dd12e5a642eb0e0116d50d2900,0x040a92bbe9662fa154a7706b0b208bbc5083e2909de5e0feb243c4aeb4c2abd9201d970fd586fe9fc3f7b70deeca38c0"
+        "x": 
"0x0d0c596608ea6ae9b18b6e55d21663933db8256234f5c2b3b3479b7bfc490f7828c98f883e1a63c58cdc0fc028d4661a,0x153ca080b13248f5f6b863a409ff2df352041c19f353f72dd0f3233a1ae2fdeea6e31a93a7a290a99a56a7cfe8448ff1",
+        "y": 
"0x012454a1f725b9b478ebdfaf0e56870fa99a15ff3e003c21a155042b44a39cc3a36421b7e11112da0a43e8528b15f820,0x0116d64afa9e422e1d966a93b0e3a0e40c4e34dc34a4c7b2f71e1520812f401baa979c5c62e67e4adf15ce4a507f7db1"
       },
       "Q1": {
-        "x": 
"0x0a231b6efadfd4cd9243b2d5f8d9820943f6616bd34dc48b677783f0d298211d06b9f25e7ebaf5c3d53009c99b2371bb,0x0397e8e732c84a631df79723dc4ce49aeb1a08857cfd4272ca2b41d840862588fb75ac2555f127b3852942d5be5d8f32",
-        "y": 
"0x0576ad544c7dff5cfb6fe52857e89f1ad5ee0f703826471a18c6e8a28f538a87de1d02cca1a4aa7c1a90f0f2e1efe9fa,0x16eae9ad925c008d00832bad8830eaf05a2e693ddcf1fbb5d2702515fbbac163f0b12369e5466bcb30153616cf1a9021"
+        "x": 
"0x0083e95f0c761f7303c593bfacddf994635f12704cec7d2a1e8ce9ce3186b20acad0a8f63ff94cefd67400c72751fa29,0x198853939c488f8d8e5bf0839aff9aee5513205a775a541ea3fbce3ebc27395f811147593a7b51e4b1874cf14c8a5c59",
+        "y": 
"0x145f9d0d73567c83a5fccb0b05afc9585d302e1fe2e60fa91c673e12a2e760e74c64eb88c7747030b1b50ec8b8111d7f,0x102641fb2d3f4866926783d40d04d3b0f5a6ec4f4aab132053499b50922a29dce7f535502e4038b1a8ce7ae79d2faacd"
       },
       "msg": "abc",
       "u": [
-        
"0x0ecb785eea491ba407b29812dd080692d7f654fa9be80e1b930f90a2764157ec6522aec0ebeca35a440b524b1efe2ade,0x02f7de24231dbff773ec0ebdf9b1b7d84713ef0eff9ff8bc356163c34bc42e373abebb437568b9b8a7a9622f52f8f64d",
-        
"0x09ed2dafb8141db58cf0e3038c1b5969742a15dfd3a8de689309ad49477a8c4d45f0b3029d216bef8197a615b89ee53d,0x0da9396afba6386ea945d8881d5d1b4e892ff506940d11f1c14e11008650abf458d6423185935f13e5304ac325996fed"
+        
"0x08dde2c4f9306a44a460f832d9153c2eccbb8588a7ac35b8476b006be691ce1b340486a56f180be2a022f3cee642ea2a,0x05141fedc77647e15b94c7dd50010f0ab062f44dfb25bc4a127f94aeede48e4f5782c83a29c98295d27210c7ff74ba6c",
+        
"0x0f6d3efdc539af5edd8b806160272c9699ab924f37d161509d4cfa5a589d796d7b05b78fe5994bd082aa6765ef468421,0x00ba433ee89bbbb64364644c770149bba3d8fc6de84e2c057fe7ea027fab92261a40a20214f4da43375f5d55d5c74361"
       ]
     },
     {
       "P": {
-        "x": 
"0x103b9ec29f230ce504d06b3d9efbebd5ef5cda2bbdbd09e66ed9979a84dd4ccbb86bdfdb4e9673b75af702cd933b9938,0x17bb4ca24579cf87c16a554bc92497a67390971ad25d60a09befa7799b01676cdb30308ec0ddae9e4a5ca485200bc01f",
-        "y": 
"0x161a632c2847e27715f550ea93ac9897dab5d7ad483cbf180efefaa232f2bba706bff16b1f1c3e0b9da9ff39e160e42f,0x047f0b3db455080f13114bb2bbe37d40abdc9850bdc724f27a9ffa7bbd8307739fa1b803d69c30da64586c102842a3ae"
+        "x": 
"0x185cad2867dc5c11b0f42842adc2bc16ebaf95c761b5d26541a089c19f54e5039ad911b2667de073c26d01911d203d58,0x05e0ac4290a0620d1b5d20b8b98ace6d1b198273e05a36daa18b3c591ded4bfebbff7a8bb3bc2b9de009d5e9d0a78a12",
+        "y": 
"0x025525d91f16601d32379f4d5cba4a256ad84d40423ef294dabdf73e351f86b583c848f974899815a40c569465c68c7f,0x09aa43a981af5885a0f86a1b9a143abbc1570d1bf342f8b506ff9f9bcc15dbb12a8ac062f7e37e06b90881b8cbc1f4e9"
       },
       "Q0": {
-        "x": 
"0x0ad81631edcdf51ac0df8426a5d49192326f94244df93b8f990b9d23c2fd654b8f310a8bc0b136b649271a2ed598aeb7,0x106a7d7e84ca907f28cdf2e2ab98a49d53aa70f512afc0c764fdffe778ff3538992546decf48142a790700c6eee5db70",
-        "y": 
"0x0d9c4f07a23d596b3735a7e275a4a8ed3ac7b6849d83adf78b2743c6cb180232d5f180f7e32422c5e81039f9d48f9cb3,0x0b4ee768a0d0525872db9e4c511da298691aa7a3360a38cfb89691da7c9a314a8d461e8cc8935d08b6fed60ef149e9d9"
+        "x": 
"0x10319d966d19e9017cd0be3c551e4001c3e9d75a25e1700c3443b7756ae94fe1d442d6b3839d505682fa82269c7e910e,0x1860d1ab41d2ffe81a587e6919b21348bb437a8ea88e932525c803d5c1ee68bf47f515c445ae102cde5cf5569de63970",
+        "y": 
"0x133af9a9ac415000202b1a1fc258aa773902a937fa09af32267cfcf32baaa002eb80b1aefa92ee759867cd9222c55ea6,0x07abb300d3f1a89f91e55b1abf628f83dd967a97d81d8938c876060455abb77dfc9ce41c5a0beb99e9feb684b9f18d4e"
       },
       "Q1": {
-        "x": 
"0x1351d14d9737ba5ded8fee48ee1e45c823eaec7b58600a5af7c3543c0b450c565db1e1d37732182dbcbbc31ea33e3e1f,0x0c5ddcd88ebee0861a91dde563a6785752fbc5f4e079665ca2c0567dac8f203ed81f609e27e223938a55534ba8693657",
-        "y": 
"0x146bbafa353ed101672c21e98fb2e1aa6f438c918d963b4f05e80c36cac3769ad25b49720b8566e1ea1eecff77b010cb,0x02613eb3f365b783461d0edc9b3212495ae6f4de190150b94bbecaa6d631a6ccdf09335ac6f6aba57d70ce06d1a6d615"
+        "x": 
"0x14f0b1e5f3d5b113514a1ce6eb17de28d84fb686ed72b9a3091a9be545977acaae253b65268c1057abccb2c47381a7b2,0x136ba736cfc5c767b74be4814e647516ef71e512623d481ec17c6d89d65f536ed679900bf8050bed93a5833df4c032f5",
+        "y": 
"0x10e035eb449a1ebbc06431ee73251c7a94b96f83102bacb8c3a6bbacf32486bd6715dcfdd1c1a5ac0058f4fd7930e22b,0x06e89c91fe9ed6c5f6184c5e3766d7393002d06cdffe4b084a5cb4fd4ed71fa5f82590927ff983ea84cb7229a688d071"
       },
       "msg": "abcdef0123456789",
       "u": [
-        
"0x15788d0f014f083f4a6bad1e3ec01905fb81328fac060d575f9220ddb7fc495f6cca48e8f46c69153ef0152caa692bbe,0x0c50eaf8096785caee1e08ff3d9d46b8e4c1a1600406d4ab8c9c96c74c4d2b6b90fb5ddb0bdf7adabe0b176f75005df7",
-        
"0x0274a965f4d5b3c5e1d35e426df580885eb9aeb4d0997afcb51d2aa908b7a7a5d2b608b4b054fbf77eb2ec8f6854d192,0x07be630ece05ab3536328fc3ccbbc7b8af99542ce0a7241bcf03723f9b45cbe16d3003dd28fcaaa4558f8f8f261a654a"
+        
"0x11cb86b80f5715c34ebbbfd2b535a765de4e5e6de719f804b86e5d0e7415f00a2123397e06a9fe969ef09cd84c4d0146,0x10c642ecf452b47f5dcff39e3ab10d9b240d9511837f2d6eb152f86b2960a2fb8350f9d0387f8a8899a58bd2c5691b92",
+        
"0x05c8d547790510132e87b818de01994a7dcccbafcccffbfe38ada5ba2573eda9308f4bad0fb1beb79b12c7329c18766b,0x11931693de41195bec4acae1beea0b9b2bf2e55902bebb8f08da8036989efacda79b275d0a5b06d42905826f99e05dfa"
       ]
     },
     {
       "P": {
-        "x": 
"0x125730d27604ffa5f1be4e6357f2dacf59803b6b8ce43b81eb2e42010e0765ea149ed52e5d8ad0847617bb87a3cfdbbc,0x033008748ad6e6d95b68e86d8e786609c1011729606e45ab0b5691eceb3d4c72a80e36792f74e907309f3550bd7b9a6e",
-        "y": 
"0x180de292e84a7ecc8361490a3f0d8bcf834e12d68529e437df782111f01c8c73c53c9a502eac6aa9dffceae1b7df55b8,0x07225c86be63f0b3eb8acf88ff4133fa9bb8c0b1d50c997ad33f57dcb9cd09cc4676da6f37fd7f4bfaa06bfca9bdb772"
+        "x": 
"0x19925c3d247512c84e3ced29498eada349e82ee96689d5977e627c5b75a904800d789d1848a0551fd1d8b300efef8663,0x07a1af1c92c0723656bb94b0ebae40d4c3e952b32473964710b9b9602b8dbd4e80a8950208fc2cb449daea25af54f138",
+        "y": 
"0x179c7387bd605a594a778eb6305ba2d96d69383104c41fd6c5b1517b1728959e78fef47260863497292e056b745d847a,0x174fd14a9224fc3a7fa9019b7c344557f67b98f40c4fe7cefffd99a57aac611de1456988947cbfa37728426d9eeaea52"
       },
       "Q0": {
-        "x": 
"0x17dab789594c9400a35e44e124a04eb15a273b7ff3385aeb5767cecf3a5d6ce03bee39e9b3d9eedef8dfc1c064465f04,0x0d2b1ae115243ae13e9018e065bfb4215671e2ea86792e78858f012264b642591f4839972f58c00309cbf54a6f2809c5",
-        "y": 
"0x19d7a9d430474d353c6ccf18db52263cd2fa4685e0194b3ec55672dfea3645c08feb3643dc8a4e995406e3b1108e7275,0x03ac4fde5674418babfbbc6bad412d789f018ad49135ef84e6cbb1b63eb9fb61d7d12caa9ccb4e710d1badff2fe47515"
+        "x": 
"0x15e925b755b1d7ffadb242ae97d8f3826a46b6cebb87fc5afafa75a041dce9dab92daff7c76a27fdaabee83b58302e7c,0x198976a1d24b585148aa5331536a8d9747584d2cd86bb424426c4ae7234aed4afb060f1e09d1ab36bbf7a439fc8da6d1",
+        "y": 
"0x16cda73b5ec6993795f393f19129e0f4e3de82f803ca55f21962162ac599e48e39f0ff78e8159a05d0eceabc6cf01291,0x05b52d7a1673bb8168c3bbad3d3652abca5d7e0027a667914668772ca6ca7e130b07ae7ea6b16695ed53e83789ca3a50"
       },
       "Q1": {
-        "x": 
"0x08d580532d837ce1cd78df4e3668b123eafd519b93e359ba64e0281740742649b76c960e5390e1fd4ea4abcc84afcaca,0x12a30881e5bca0c8f3f8159b1490e215a380eb70c71f14570e886f6ba2de770e26ce6634e00c9a98e14665f61820209f",
-        "y": 
"0x13192225f9eea2cb2c342e39654a115e5f4b002943cea6067d429e685317be5034edcfe71897728402fc28abb725eca9,0x01c62e5d5325ec325e75e7e0a60a86d489ee543b0709ccd76807cafd1d8041486c185a89f6ca72b96cb7eb193a3d5ef5"
+        "x": 
"0x031241efa254ea61dd01d9ac138fa90b5b5a60b1d37bdac7984f1a038e867acb39f10d616b012b2d64f2a907ccf7a2c5,0x10e01a11fd5e4af0c2f7d373dfd0b565055680087068bfe3d9694b443a76a472c409fd57e86647848615ed54bf85fac6",
+        "y": 
"0x173cec16ebaf7dc61a0c3fadd3a50bc19362dddfe166c6ff7a84443c04659c096be4982b3db1d7bb26ae16af4bfb532f,0x13e3154a7eee424063ec3826c681675942bd36b9f22898547414420bd69ba4e273090d4722297f6e5ba2729fba8cabd9"
       },
       "msg": 
"a512_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 [...]
       "u": [
-        
"0x00a73d9f99c991b8a95d533111700cb468bb9dfc7ecfa8879d278efd4f62907dc735a137ed26eac6fbd4730d16c525e7,0x011de2ac3ddd0fce82f81ff1506a4da615a545f5f1a38d76493489d043dec0298423741a607fd45b57526b2dbf7c0512",
-        
"0x054e5964345b7e40826826b6c0773ae205596eed3f430649873afb7ff36a0a4583d947b5e1dcaaf64b62067814724329,0x0c022493d6de52b27b95ba1097b803e2834ce69555e25bda8df9a60bbd7cb8ef2d11eea6ea85856626a1f35c2ccccb95"
+        
"0x1412f7dcbbd4b37d2818e3174f2e51c6767b4d93501208d905d625a6decfd1253c626575c44b838cd8801653909fa3a1,0x17bb0ac3a973bf8d3663102459b8dca358d9b971ebc700126f11110c83f644f0ac5a86f1c7cd6babceb1f3705447665a",
+        
"0x0eaa03f98f9aa539262275d8862ce341537228572ea46dcd6e9e8662bd7f986948ddab6cf0594faa7b417b772ec96177,0x0fdb46860616bdbd8faff9859ae8d92f282f9633a4b5050c924d711f1b32a6cc20f431c207d47d66dd27fb6604c871b0"
       ]
     }
   ]
diff --git a/src/test_utils/test_vector_structs.rs 
b/src/test_utils/test_vector_structs.rs
index 5ea34fd..ab0261b 100644
--- a/src/test_utils/test_vector_structs.rs
+++ b/src/test_utils/test_vector_structs.rs
@@ -7,7 +7,6 @@ pub struct Field {
 #[derive(Deserialize)]
 pub struct Map {
     pub name: String,
-    pub sgn0: String,
 }
 
 #[derive(Deserialize)]

Reply via email to