/*
* Copyright (C) 2011-2012 Free Software Foundation, Inc.
- * Copyright (C) 2013 Red Hat
+ * Copyright (C) 2013-2017 Red Hat
*
* Author: Nikos Mavrogiannopoulos
*
return ret;
}
-int _gnutls_asn1_encode_privkey(gnutls_pk_algorithm_t pk, ASN1_TYPE * c2,
+int _gnutls_asn1_encode_privkey(ASN1_TYPE * c2,
gnutls_pk_params_st * params, unsigned compat)
{
- switch (pk) {
+ switch (params->algo) {
case GNUTLS_PK_RSA:
case GNUTLS_PK_RSA_PSS:
return _gnutls_asn1_encode_rsa(c2, params, compat);
}
ret =
- _gnutls_asn1_encode_privkey(dst->pk_algorithm, &dst->key,
+ _gnutls_asn1_encode_privkey(&dst->key,
&dst->params, src->flags&GNUTLS_PRIVKEY_FLAG_EXPORT_COMPAT);
if (ret < 0) {
gnutls_assert();
key->params.params_nr++;
}
+ key->params.algo = GNUTLS_PK_RSA;
+
ret = _gnutls_pk_fixup(GNUTLS_PK_RSA, GNUTLS_IMPORT, &key->params);
if (ret < 0) {
gnutls_assert();
}
ret =
- _gnutls_asn1_encode_privkey(GNUTLS_PK_RSA, &key->key,
+ _gnutls_asn1_encode_privkey(&key->key,
&key->params, key->flags&GNUTLS_PRIVKEY_FLAG_EXPORT_COMPAT);
if (ret < 0) {
gnutls_assert();
goto cleanup;
}
+ key->params.algo = GNUTLS_PK_DSA;
+ key->params.params_nr = DSA_PRIVATE_PARAMS;
+
ret =
- _gnutls_asn1_encode_privkey(GNUTLS_PK_DSA, &key->key,
+ _gnutls_asn1_encode_privkey(&key->key,
&key->params, key->flags&GNUTLS_PRIVKEY_FLAG_EXPORT_COMPAT);
if (ret < 0) {
gnutls_assert();
goto cleanup;
}
- key->params.params_nr = DSA_PRIVATE_PARAMS;
- key->pk_algorithm = GNUTLS_PK_DSA;
- key->params.algo = key->pk_algorithm;
-
return 0;
cleanup:
key->params.flags |= GNUTLS_PK_FLAG_PROVABLE;
}
+ key->params.algo = algo;
+
ret = _gnutls_pk_generate_params(algo, bits, &key->params);
if (ret < 0) {
gnutls_assert();
goto cleanup;
}
- ret = _gnutls_asn1_encode_privkey(algo, &key->key, &key->params, key->flags&GNUTLS_PRIVKEY_FLAG_EXPORT_COMPAT);
+ ret = _gnutls_asn1_encode_privkey(&key->key, &key->params, key->flags&GNUTLS_PRIVKEY_FLAG_EXPORT_COMPAT);
if (ret < 0) {
gnutls_assert();
goto cleanup;
}
- key->pk_algorithm = algo;
return 0;
asn1_delete_structure2(&key->key, ASN1_DELETE_FLAG_ZEROIZE);
ret =
- _gnutls_asn1_encode_privkey(key->pk_algorithm, &key->key,
+ _gnutls_asn1_encode_privkey(&key->key,
&key->params, key->flags&GNUTLS_PRIVKEY_FLAG_EXPORT_COMPAT);
if (ret < 0) {
gnutls_assert();
_gnutls_x509_read_ecc_params(uint8_t * der, int dersize,
unsigned int *curve);
-int _gnutls_asn1_encode_privkey(gnutls_pk_algorithm_t pk, ASN1_TYPE * c2,
+int _gnutls_asn1_encode_privkey(ASN1_TYPE * c2,
gnutls_pk_params_st * params, unsigned compat);
int _gnutls_x509_privkey_get_spki_params(gnutls_x509_privkey_t key,