mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-01-30 23:11:10 +00:00
Added ecp_use_known_dp()
This commit is contained in:
parent
efaa31e9ae
commit
a5402fee04
|
@ -32,9 +32,9 @@
|
||||||
/*
|
/*
|
||||||
* ECP error codes
|
* ECP error codes
|
||||||
*
|
*
|
||||||
* (The functions written up to now return MPI error codes only.)
|
* (Only one error code available...)
|
||||||
*/
|
*/
|
||||||
|
#define POLARSSL_ERR_ECP_GENERIC -0x007E /**< Generic ECP error */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief ECP point structure (affine coordinates)
|
* \brief ECP point structure (affine coordinates)
|
||||||
|
@ -75,6 +75,12 @@ ecp_group;
|
||||||
* parameters. Therefore, only well-known domain parameters from trusted
|
* parameters. Therefore, only well-known domain parameters from trusted
|
||||||
* sources (such as the ones below) should be used.
|
* sources (such as the ones below) should be used.
|
||||||
*/
|
*/
|
||||||
|
#define POLARSSL_ECP_DP_SECP192R1 0
|
||||||
|
#define POLARSSL_ECP_DP_SECP224R1 1
|
||||||
|
#define POLARSSL_ECP_DP_SECP256R1 2
|
||||||
|
#define POLARSSL_ECP_DP_SECP384R1 3
|
||||||
|
#define POLARSSL_ECP_DP_SECP521R1 4
|
||||||
|
|
||||||
#define POLARSSL_ECP_SECP192R1_P \
|
#define POLARSSL_ECP_SECP192R1_P \
|
||||||
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF"
|
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF"
|
||||||
#define POLARSSL_ECP_SECP192R1_B \
|
#define POLARSSL_ECP_SECP192R1_B \
|
||||||
|
@ -215,6 +221,20 @@ int ecp_group_read_string( ecp_group *grp, int radix,
|
||||||
const char *p, const char *b,
|
const char *p, const char *b,
|
||||||
const char *gx, const char *gy, const char *n);
|
const char *gx, const char *gy, const char *n);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Set a group using well-known domain parameters
|
||||||
|
*
|
||||||
|
* \param grp Destination group
|
||||||
|
* \param index Index in the list of well-known domain parameters
|
||||||
|
*
|
||||||
|
* \return O if successul,
|
||||||
|
* POLARSSL_ERR_MPI_XXX if initialization failed
|
||||||
|
* POLARSSL_ERR_ECP_GENERIC if index is out of range
|
||||||
|
*
|
||||||
|
* \note Index should be a POLARSSL_ECP_DP_XXX macro.
|
||||||
|
*/
|
||||||
|
int ecp_use_known_dp( ecp_group *grp, size_t index );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Addition: R = P + Q
|
* \brief Addition: R = P + Q
|
||||||
*
|
*
|
||||||
|
|
|
@ -68,6 +68,7 @@
|
||||||
* SHA2 1 0x0078-0x0078
|
* SHA2 1 0x0078-0x0078
|
||||||
* SHA4 1 0x007A-0x007A
|
* SHA4 1 0x007A-0x007A
|
||||||
* PBKDF2 1 0x007C-0x007C
|
* PBKDF2 1 0x007C-0x007C
|
||||||
|
* ECP 1 0x007E-0x007E
|
||||||
*
|
*
|
||||||
* High-level module nr (3 bits - 0x1...-0x8...)
|
* High-level module nr (3 bits - 0x1...-0x8...)
|
||||||
* Name ID Nr of Errors
|
* Name ID Nr of Errors
|
||||||
|
|
|
@ -154,7 +154,57 @@ cleanup:
|
||||||
return( ret );
|
return( ret );
|
||||||
}
|
}
|
||||||
|
|
||||||
#define dbg(X) printf(#X " = %s%lu\n", X.s < 0 ? "-" : "", X.p[0])
|
/*
|
||||||
|
* Set a group using well-known domain parameters
|
||||||
|
*/
|
||||||
|
int ecp_use_known_dp( ecp_group *grp, size_t index )
|
||||||
|
{
|
||||||
|
switch( index )
|
||||||
|
{
|
||||||
|
case POLARSSL_ECP_DP_SECP192R1:
|
||||||
|
return( ecp_group_read_string( grp, 16,
|
||||||
|
POLARSSL_ECP_SECP192R1_P,
|
||||||
|
POLARSSL_ECP_SECP192R1_B,
|
||||||
|
POLARSSL_ECP_SECP192R1_GX,
|
||||||
|
POLARSSL_ECP_SECP192R1_GY,
|
||||||
|
POLARSSL_ECP_SECP192R1_N )
|
||||||
|
);
|
||||||
|
case POLARSSL_ECP_DP_SECP224R1:
|
||||||
|
return( ecp_group_read_string( grp, 16,
|
||||||
|
POLARSSL_ECP_SECP224R1_P,
|
||||||
|
POLARSSL_ECP_SECP224R1_B,
|
||||||
|
POLARSSL_ECP_SECP224R1_GX,
|
||||||
|
POLARSSL_ECP_SECP224R1_GY,
|
||||||
|
POLARSSL_ECP_SECP224R1_N )
|
||||||
|
);
|
||||||
|
case POLARSSL_ECP_DP_SECP256R1:
|
||||||
|
return( ecp_group_read_string( grp, 16,
|
||||||
|
POLARSSL_ECP_SECP256R1_P,
|
||||||
|
POLARSSL_ECP_SECP256R1_B,
|
||||||
|
POLARSSL_ECP_SECP256R1_GX,
|
||||||
|
POLARSSL_ECP_SECP256R1_GY,
|
||||||
|
POLARSSL_ECP_SECP256R1_N )
|
||||||
|
);
|
||||||
|
case POLARSSL_ECP_DP_SECP384R1:
|
||||||
|
return( ecp_group_read_string( grp, 16,
|
||||||
|
POLARSSL_ECP_SECP384R1_P,
|
||||||
|
POLARSSL_ECP_SECP384R1_B,
|
||||||
|
POLARSSL_ECP_SECP384R1_GX,
|
||||||
|
POLARSSL_ECP_SECP384R1_GY,
|
||||||
|
POLARSSL_ECP_SECP384R1_N )
|
||||||
|
);
|
||||||
|
case POLARSSL_ECP_DP_SECP521R1:
|
||||||
|
return( ecp_group_read_string( grp, 16,
|
||||||
|
POLARSSL_ECP_SECP521R1_P,
|
||||||
|
POLARSSL_ECP_SECP521R1_B,
|
||||||
|
POLARSSL_ECP_SECP521R1_GX,
|
||||||
|
POLARSSL_ECP_SECP521R1_GY,
|
||||||
|
POLARSSL_ECP_SECP521R1_N )
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return( POLARSSL_ERR_ECP_GENERIC );
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Addition: R = P + Q, generic case (P != Q, P != 0, Q != 0, R != 0)
|
* Addition: R = P + Q, generic case (P != Q, P != 0, Q != 0, R != 0)
|
||||||
|
@ -476,7 +526,7 @@ int ecp_self_test( int verbose )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (verbose != 0 )
|
if( verbose != 0 )
|
||||||
printf( "passed\n" );
|
printf( "passed\n" );
|
||||||
|
|
||||||
MPI_CHK( ecp_copy( &mul_tbl[0], &O ) );
|
MPI_CHK( ecp_copy( &mul_tbl[0], &O ) );
|
||||||
|
@ -507,9 +557,21 @@ int ecp_self_test( int verbose )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (verbose != 0 )
|
if( verbose != 0 )
|
||||||
printf( "passed\n" );
|
printf( "passed\n" );
|
||||||
|
|
||||||
|
if( verbose != 0 )
|
||||||
|
printf( " ECP test #3 (use_known_dp): " );
|
||||||
|
|
||||||
|
for( i = 0; i <= POLARSSL_ECP_DP_SECP521R1; i++ )
|
||||||
|
{
|
||||||
|
MPI_CHK( ecp_use_known_dp( &grp, i ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( verbose != 0 )
|
||||||
|
printf( "passed\n" );
|
||||||
|
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
|
|
||||||
if( ret != 0 && verbose != 0 )
|
if( ret != 0 && verbose != 0 )
|
||||||
|
|
Loading…
Reference in a new issue