diff options
Diffstat (limited to 'src/crypto/ec/oct.c')
-rw-r--r-- | src/crypto/ec/oct.c | 38 |
1 files changed, 6 insertions, 32 deletions
diff --git a/src/crypto/ec/oct.c b/src/crypto/ec/oct.c index 365dc3d..e39337d 100644 --- a/src/crypto/ec/oct.c +++ b/src/crypto/ec/oct.c @@ -90,18 +90,10 @@ static size_t ec_GFp_simple_point2oct(const EC_GROUP *group, } if (EC_POINT_is_at_infinity(group, point)) { - /* encodes to a single 0 octet */ - if (buf != NULL) { - if (len < 1) { - OPENSSL_PUT_ERROR(EC, EC_R_BUFFER_TOO_SMALL); - return 0; - } - buf[0] = 0; - } - return 1; + OPENSSL_PUT_ERROR(EC, EC_R_POINT_AT_INFINITY); + goto err; } - /* ret := required output buffer length */ field_len = BN_num_bytes(&group->field); ret = @@ -117,7 +109,7 @@ static size_t ec_GFp_simple_point2oct(const EC_GROUP *group, if (ctx == NULL) { ctx = new_ctx = BN_CTX_new(); if (ctx == NULL) { - return 0; + goto err; } } @@ -193,25 +185,13 @@ static int ec_GFp_simple_oct2point(const EC_GROUP *group, EC_POINT *point, form = buf[0]; y_bit = form & 1; form = form & ~1U; - if ((form != 0) && (form != POINT_CONVERSION_COMPRESSED) && - (form != POINT_CONVERSION_UNCOMPRESSED)) { - OPENSSL_PUT_ERROR(EC, EC_R_INVALID_ENCODING); - return 0; - } - if ((form == 0 || form == POINT_CONVERSION_UNCOMPRESSED) && y_bit) { + if ((form != POINT_CONVERSION_COMPRESSED && + form != POINT_CONVERSION_UNCOMPRESSED) || + (form == POINT_CONVERSION_UNCOMPRESSED && y_bit)) { OPENSSL_PUT_ERROR(EC, EC_R_INVALID_ENCODING); return 0; } - if (form == 0) { - if (len != 1) { - OPENSSL_PUT_ERROR(EC, EC_R_INVALID_ENCODING); - return 0; - } - - return EC_POINT_set_to_infinity(group, point); - } - field_len = BN_num_bytes(&group->field); enc_len = (form == POINT_CONVERSION_COMPRESSED) ? 1 + field_len : 1 + 2 * field_len; @@ -261,12 +241,6 @@ static int ec_GFp_simple_oct2point(const EC_GROUP *group, EC_POINT *point, } } - /* test required by X9.62 */ - if (!EC_POINT_is_on_curve(group, point, ctx)) { - OPENSSL_PUT_ERROR(EC, EC_R_POINT_IS_NOT_ON_CURVE); - goto err; - } - ret = 1; err: |