#define PK_WRAP_PARAM "LEGACY_PK_WRAP"
+#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
+/* some functions have const'ed arguments since openssl-1.1.0 */
+# define OPENSSL110_const const
+#else
+# define OPENSSL110_const
+#endif
+
/*
* Pack bignum into byte buffer of given size, filling all leading bytes by
* zeros
* Parses GOST algorithm parameters from X509_ALGOR and modifies pkey setting
* NID and parameters
*/
-static int decode_gost_algor_params(EVP_PKEY *pkey, X509_ALGOR *palg)
+static int decode_gost_algor_params(EVP_PKEY *pkey,
+ OPENSSL110_const X509_ALGOR *palg)
{
- ASN1_OBJECT *palg_obj = NULL;
+ OPENSSL110_const ASN1_OBJECT *palg_obj = NULL;
int ptype = V_ASN1_UNDEF;
int pkey_nid = NID_undef, param_nid = NID_undef;
ASN1_STRING *pval = NULL;
if (!pkey || !palg)
return 0;
- X509_ALGOR_get0(&palg_obj, &ptype, (void **)&pval, palg);
+ X509_ALGOR_get0(&palg_obj, &ptype, (OPENSSL110_const void **)&pval, palg);
if (ptype != V_ASN1_SEQUENCE) {
GOSTerr(GOST_F_DECODE_GOST_ALGOR_PARAMS,
GOST_R_BAD_KEY_PARAMETERS_FORMAT);
/* ------------------ private key functions -----------------------------*/
static BIGNUM *unmask_priv_key(EVP_PKEY *pk,
- const unsigned char *buf, int len,
- int num_masks)
+ const unsigned char *buf, int len, int num_masks)
{
BIGNUM *pknum_masked = NULL, *q = NULL;
const EC_KEY *key_ptr = (pk) ? EVP_PKEY_get0(pk) : NULL;
return pknum_masked;
}
-static int priv_decode_gost(EVP_PKEY *pk, PKCS8_PRIV_KEY_INFO *p8inf)
+static int priv_decode_gost(EVP_PKEY *pk,
+ OPENSSL110_const PKCS8_PRIV_KEY_INFO *p8inf)
{
const unsigned char *pkey_buf = NULL, *p = NULL;
int priv_len = 0;
BIGNUM *pk_num = NULL;
int ret = 0;
- X509_ALGOR *palg = NULL;
- ASN1_OBJECT *palg_obj = NULL;
+ OPENSSL110_const X509_ALGOR *palg = NULL;
+ OPENSSL110_const ASN1_OBJECT *palg_obj = NULL;
ASN1_INTEGER *priv_key = NULL;
int expected_key_len = 32;
buf[key_len - 1 - i] = tmp;
}
- if(pk_format != NULL && strcmp(pk_format, PK_WRAP_PARAM) == 0) {
+ if (pk_format != NULL && strcmp(pk_format, PK_WRAP_PARAM) == 0) {
ASN1_STRING *octet = NULL;
int priv_len = 0;
unsigned char *priv_buf = NULL;
OPENSSL_free(buf);
return PKCS8_pkey_set0(p8, algobj, 0, V_ASN1_SEQUENCE, params,
- priv_buf, priv_len);
+ priv_buf, priv_len);
}
return PKCS8_pkey_set0(p8, algobj, 0, V_ASN1_SEQUENCE, params,
return 0;
}
- BUF_reverse(databuf, octet->data, octet->length);
+ BUF_reverse(databuf, octet->data, octet->length);
len = octet->length / 2;
ASN1_OCTET_STRING_free(octet);
algobj = OBJ_nid2obj(EVP_PKEY_base_id(pk));
- ASN1_STRING *params = encode_gost_algor_params(pk);
- pval = params;
- ptype = V_ASN1_SEQUENCE;
+ ASN1_STRING *params = encode_gost_algor_params(pk);
+ pval = params;
+ ptype = V_ASN1_SEQUENCE;
order = BN_new();
if (!order) {
store_bignum(X, databuf + data_len / 2, data_len / 2);
store_bignum(Y, databuf, data_len / 2);
- BUF_reverse(databuf, NULL, data_len);
+ BUF_reverse(databuf, NULL, data_len);
octet = ASN1_OCTET_STRING_new();
if (octet == NULL) {