/* * Parse and import the client's public value */ int ecdh_read_public( ecdh_context *ctx, const unsigned char *buf, size_t blen ) { if( ctx == NULL ) return( POLARSSL_ERR_ECP_BAD_INPUT_DATA ); return ecp_tls_read_point( &ctx->grp, &ctx->Qp, &buf, blen ); }
/* * Read the ServerKeyExhange parameters (RFC 4492) * struct { * ECParameters curve_params; * ECPoint public; * } ServerECDHParams; */ int ecdh_read_params( ecdh_context *ctx, const unsigned char **buf, const unsigned char *end ) { int ret; if( ( ret = ecp_tls_read_group( &ctx->grp, buf, end - *buf ) ) != 0 ) return( ret ); if( ( ret = ecp_tls_read_point( &ctx->grp, &ctx->Qp, buf, end - *buf ) ) != 0 ) return( ret ); return( 0 ); }
/* * Parse and import the client's public value */ int ecdh_read_public( ecdh_context *ctx, const unsigned char *buf, size_t blen ) { int ret; const unsigned char *p = buf; if( ctx == NULL ) return( POLARSSL_ERR_ECP_BAD_INPUT_DATA ); if( ( ret = ecp_tls_read_point( &ctx->grp, &ctx->Qp, &p, blen ) ) != 0 ) return( ret ); if( (size_t)( p - buf ) != blen ) return( POLARSSL_ERR_ECP_BAD_INPUT_DATA ); return( 0 ); }