@@ -237,43 +237,13 @@ static SECP256K1_INLINE void secp256k1_declassify(const secp256k1_context* ctx,
237237}
238238
239239static int secp256k1_pubkey_load (const secp256k1_context * ctx , secp256k1_ge * ge , const secp256k1_pubkey * pubkey ) {
240- if (sizeof (secp256k1_ge_storage ) == 64 ) {
241- /* When the secp256k1_ge_storage type is exactly 64 byte, use its
242- * representation inside secp256k1_pubkey, as conversion is very fast.
243- * Note that secp256k1_pubkey_save must use the same representation. */
244- secp256k1_ge_storage s ;
245- memcpy (& s , & pubkey -> data [0 ], sizeof (s ));
246- secp256k1_ge_from_storage (ge , & s );
247- } else {
248- /* Otherwise, fall back to 32-byte big endian for X and Y. */
249- secp256k1_fe x , y ;
250- int ret = 1 ;
251-
252- ret &= secp256k1_fe_set_b32_limit (& x , pubkey -> data );
253- ret &= secp256k1_fe_set_b32_limit (& y , pubkey -> data + 32 );
254- #ifdef VERIFY
255- VERIFY_CHECK (ret );
256- #else
257- (void ) ret ;
258- #endif
259- secp256k1_ge_set_xy (ge , & x , & y );
260- }
240+ secp256k1_ge_from_bytes (ge , pubkey -> data );
261241 ARG_CHECK (!secp256k1_fe_is_zero (& ge -> x ));
262242 return 1 ;
263243}
264244
265245static void secp256k1_pubkey_save (secp256k1_pubkey * pubkey , secp256k1_ge * ge ) {
266- if (sizeof (secp256k1_ge_storage ) == 64 ) {
267- secp256k1_ge_storage s ;
268- secp256k1_ge_to_storage (& s , ge );
269- memcpy (& pubkey -> data [0 ], & s , sizeof (s ));
270- } else {
271- VERIFY_CHECK (!secp256k1_ge_is_infinity (ge ));
272- secp256k1_fe_normalize_var (& ge -> x );
273- secp256k1_fe_normalize_var (& ge -> y );
274- secp256k1_fe_get_b32 (pubkey -> data , & ge -> x );
275- secp256k1_fe_get_b32 (pubkey -> data + 32 , & ge -> y );
276- }
246+ secp256k1_ge_to_bytes (pubkey -> data , ge );
277247}
278248
279249int secp256k1_ec_pubkey_parse (const secp256k1_context * ctx , secp256k1_pubkey * pubkey , const unsigned char * input , size_t inputlen ) {
0 commit comments