Example #1
0
static int pkey_ec_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
	const unsigned char *in, size_t inlen)
{
	int ret;
	EC_PKEY_CTX *dctx = ctx->data;
	EC_KEY *ec_key = ctx->pkey->pkey.ec;
	ECIES_PARAMS *params = NULL;

	if (dctx->enc_type == NID_sm2encrypt) {
		ret = SM2_encrypt_with_recommended(out, outlen, in, inlen, ec_key);
	} else if (dctx->enc_type == NID_ecies_recommendedParameters) {
		ret = ECIES_encrypt_with_recommended(out, outlen, in, inlen, ec_key);
	}

	switch (dctx->enc_type) {
	case NID_sm2encrypt:
		ret = SM2_encrypt_with_recommended(out, outlen, in, inlen, ec_key);
		break;
	case NID_ecies_recommendedParameters:
		ret = ECIES_encrypt_with_recommended(out, outlen, in, inlen, ec_key);
		break;
	case NID_ecies_specifiedParameters:
		//we need to get ECIES_PARAMS from context
		ret = ECIES_encrypt(params, out, outlen, in, inlen, ec_key);
		break;
	default:
		ret = 0;
	}

	return ret;
}
Example #2
0
static int pkey_ec_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
    const unsigned char *in, size_t inlen)
{
    EC_PKEY_CTX *dctx = ctx->data;
    EC_KEY *ec_key = ctx->pkey->pkey.ec;

    switch (dctx->ec_scheme) {
    case NID_sm_scheme:
        if (!SM2_encrypt(dctx->ec_encrypt_param, in, inlen, out, outlen, ec_key)) {
            ECerr(EC_F_PKEY_EC_ENCRYPT, EC_R_SM2_ENCRYPT_FAILED);
            return 0;
        }
        break;
    case NID_secg_scheme:
        if (!ECIES_encrypt(dctx->ec_encrypt_param, in, inlen, out, outlen, ec_key)) {
            ECerr(EC_F_PKEY_EC_ENCRYPT, EC_R_ECIES_ENCRYPT_FAILED);
            return 0;
        }
        break;
    default:
        ECerr(EC_F_PKEY_EC_ENCRYPT, EC_R_INVALID_ENC_TYPE);
        return 0;
    }

    return 1;
}
Example #3
0
static int pkey_ec_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
	const unsigned char *in, size_t inlen)
{
	EC_KEY *ec_key = ctx->pkey->pkey.ec;
	ECIES_PARAMS *param = ECIES_get_parameters(ec_key);

	fprintf(stderr, "%s %s %d\n", __FUNCTION__, __FILE__, __LINE__);

	return ECIES_encrypt(out, outlen, param, in, inlen, ec_key);
}