|
Packit Service |
4684c1 |
/*
|
|
Packit Service |
4684c1 |
* Copyright (C) 2010-2014 Free Software Foundation, Inc.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Author: Nikos Mavrogiannopoulos
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* The GnuTLS is free software; you can redistribute it and/or
|
|
Packit Service |
4684c1 |
* modify it under the terms of the GNU Lesser General Public License
|
|
Packit Service |
4684c1 |
* as published by the Free Software Foundation; either version 2.1 of
|
|
Packit Service |
4684c1 |
* the License, or (at your option) any later version.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* This library is distributed in the hope that it will be useful, but
|
|
Packit Service |
4684c1 |
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
4684c1 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit Service |
4684c1 |
* Lesser General Public License for more details.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* You should have received a copy of the GNU Lesser General Public License
|
|
Packit Service |
4684c1 |
* along with this program. If not, see <https://www.gnu.org/licenses/>
|
|
Packit Service |
4684c1 |
*/
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
#include "gnutls_int.h"
|
|
Packit Service |
4684c1 |
#include <gnutls/pkcs11.h>
|
|
Packit Service |
4684c1 |
#include <stdio.h>
|
|
Packit Service |
4684c1 |
#include <string.h>
|
|
Packit Service |
4684c1 |
#include "errors.h"
|
|
Packit Service |
4684c1 |
#include <datum.h>
|
|
Packit Service |
4684c1 |
#include <pkcs11_int.h>
|
|
Packit Service |
4684c1 |
#include <gnutls/abstract.h>
|
|
Packit Service |
4684c1 |
#include <pk.h>
|
|
Packit Service |
4684c1 |
#include <x509_int.h>
|
|
Packit Service |
4684c1 |
#include <tls-sig.h>
|
|
Packit Service |
4684c1 |
#include <algorithms.h>
|
|
Packit Service |
4684c1 |
#include <fips.h>
|
|
Packit Service |
4684c1 |
#include <abstract_int.h>
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
/**
|
|
Packit Service |
4684c1 |
* gnutls_privkey_export_rsa_raw:
|
|
Packit Service |
4684c1 |
* @key: Holds the certificate
|
|
Packit Service |
4684c1 |
* @m: will hold the modulus
|
|
Packit Service |
4684c1 |
* @e: will hold the public exponent
|
|
Packit Service |
4684c1 |
* @d: will hold the private exponent
|
|
Packit Service |
4684c1 |
* @p: will hold the first prime (p)
|
|
Packit Service |
4684c1 |
* @q: will hold the second prime (q)
|
|
Packit Service |
4684c1 |
* @u: will hold the coefficient
|
|
Packit Service |
4684c1 |
* @e1: will hold e1 = d mod (p-1)
|
|
Packit Service |
4684c1 |
* @e2: will hold e2 = d mod (q-1)
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* This function will export the RSA private key's parameters found
|
|
Packit Service |
4684c1 |
* in the given structure. The new parameters will be allocated using
|
|
Packit Service |
4684c1 |
* gnutls_malloc() and will be stored in the appropriate datum. For
|
|
Packit Service |
4684c1 |
* EdDSA keys, the @y value should be %NULL.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Returns: %GNUTLS_E_SUCCESS on success, otherwise a negative error code.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Since: 3.3.0
|
|
Packit Service |
4684c1 |
**/
|
|
Packit Service |
4684c1 |
int
|
|
Packit Service |
4684c1 |
gnutls_privkey_export_rsa_raw(gnutls_privkey_t key,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * m, gnutls_datum_t * e,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * d, gnutls_datum_t * p,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * q, gnutls_datum_t * u,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * e1,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * e2)
|
|
Packit Service |
4684c1 |
{
|
|
Packit Service |
4684c1 |
return gnutls_privkey_export_rsa_raw2(key, m, e, d, p, q, u, e1, e2, 0);
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
/**
|
|
Packit Service |
4684c1 |
* gnutls_privkey_export_rsa_raw2:
|
|
Packit Service |
4684c1 |
* @key: Holds the certificate
|
|
Packit Service |
4684c1 |
* @m: will hold the modulus
|
|
Packit Service |
4684c1 |
* @e: will hold the public exponent
|
|
Packit Service |
4684c1 |
* @d: will hold the private exponent
|
|
Packit Service |
4684c1 |
* @p: will hold the first prime (p)
|
|
Packit Service |
4684c1 |
* @q: will hold the second prime (q)
|
|
Packit Service |
4684c1 |
* @u: will hold the coefficient
|
|
Packit Service |
4684c1 |
* @e1: will hold e1 = d mod (p-1)
|
|
Packit Service |
4684c1 |
* @e2: will hold e2 = d mod (q-1)
|
|
Packit Service |
4684c1 |
* @flags: flags from %gnutls_abstract_export_flags_t
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* This function will export the RSA private key's parameters found
|
|
Packit Service |
4684c1 |
* in the given structure. The new parameters will be allocated using
|
|
Packit Service |
4684c1 |
* gnutls_malloc() and will be stored in the appropriate datum.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Returns: %GNUTLS_E_SUCCESS on success, otherwise a negative error code.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Since: 3.6.0
|
|
Packit Service |
4684c1 |
**/
|
|
Packit Service |
4684c1 |
int
|
|
Packit Service |
4684c1 |
gnutls_privkey_export_rsa_raw2(gnutls_privkey_t key,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * m, gnutls_datum_t * e,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * d, gnutls_datum_t * p,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * q, gnutls_datum_t * u,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * e1,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * e2,
|
|
Packit Service |
4684c1 |
unsigned int flags)
|
|
Packit Service |
4684c1 |
{
|
|
Packit Service |
4684c1 |
gnutls_pk_params_st params;
|
|
Packit Service |
4684c1 |
int ret;
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
if (key == NULL) {
|
|
Packit Service |
4684c1 |
gnutls_assert();
|
|
Packit Service |
4684c1 |
return GNUTLS_E_INVALID_REQUEST;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
gnutls_pk_params_init(¶ms);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = _gnutls_privkey_get_mpis(key, ¶ms);
|
|
Packit Service |
4684c1 |
if (ret < 0)
|
|
Packit Service |
4684c1 |
return gnutls_assert_val(ret);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = _gnutls_params_get_rsa_raw(¶ms, m, e, d, p, q, u, e1, e2, flags);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
gnutls_pk_params_release(¶ms);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
return ret;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
/**
|
|
Packit Service |
4684c1 |
* gnutls_privkey_export_dsa_raw:
|
|
Packit Service |
4684c1 |
* @key: Holds the public key
|
|
Packit Service |
4684c1 |
* @p: will hold the p
|
|
Packit Service |
4684c1 |
* @q: will hold the q
|
|
Packit Service |
4684c1 |
* @g: will hold the g
|
|
Packit Service |
4684c1 |
* @y: will hold the y
|
|
Packit Service |
4684c1 |
* @x: will hold the x
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* This function will export the DSA private key's parameters found
|
|
Packit Service |
4684c1 |
* in the given structure. The new parameters will be allocated using
|
|
Packit Service |
4684c1 |
* gnutls_malloc() and will be stored in the appropriate datum.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Returns: %GNUTLS_E_SUCCESS on success, otherwise a negative error code.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Since: 3.3.0
|
|
Packit Service |
4684c1 |
**/
|
|
Packit Service |
4684c1 |
int
|
|
Packit Service |
4684c1 |
gnutls_privkey_export_dsa_raw(gnutls_privkey_t key,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * p, gnutls_datum_t * q,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * g, gnutls_datum_t * y,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * x)
|
|
Packit Service |
4684c1 |
{
|
|
Packit Service |
4684c1 |
return gnutls_privkey_export_dsa_raw2(key, p, q, g, y, x, 0);
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
/**
|
|
Packit Service |
4684c1 |
* gnutls_privkey_export_dsa_raw2:
|
|
Packit Service |
4684c1 |
* @key: Holds the public key
|
|
Packit Service |
4684c1 |
* @p: will hold the p
|
|
Packit Service |
4684c1 |
* @q: will hold the q
|
|
Packit Service |
4684c1 |
* @g: will hold the g
|
|
Packit Service |
4684c1 |
* @y: will hold the y
|
|
Packit Service |
4684c1 |
* @x: will hold the x
|
|
Packit Service |
4684c1 |
* @flags: flags from %gnutls_abstract_export_flags_t
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* This function will export the DSA private key's parameters found
|
|
Packit Service |
4684c1 |
* in the given structure. The new parameters will be allocated using
|
|
Packit Service |
4684c1 |
* gnutls_malloc() and will be stored in the appropriate datum.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Returns: %GNUTLS_E_SUCCESS on success, otherwise a negative error code.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Since: 3.6.0
|
|
Packit Service |
4684c1 |
**/
|
|
Packit Service |
4684c1 |
int
|
|
Packit Service |
4684c1 |
gnutls_privkey_export_dsa_raw2(gnutls_privkey_t key,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * p, gnutls_datum_t * q,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * g, gnutls_datum_t * y,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * x, unsigned int flags)
|
|
Packit Service |
4684c1 |
{
|
|
Packit Service |
4684c1 |
gnutls_pk_params_st params;
|
|
Packit Service |
4684c1 |
int ret;
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
if (key == NULL) {
|
|
Packit Service |
4684c1 |
gnutls_assert();
|
|
Packit Service |
4684c1 |
return GNUTLS_E_INVALID_REQUEST;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
gnutls_pk_params_init(¶ms);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = _gnutls_privkey_get_mpis(key, ¶ms);
|
|
Packit Service |
4684c1 |
if (ret < 0)
|
|
Packit Service |
4684c1 |
return gnutls_assert_val(ret);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = _gnutls_params_get_dsa_raw(¶ms, p, q, g, y, x, flags);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
gnutls_pk_params_release(¶ms);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
return ret;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
/**
|
|
Packit Service |
4684c1 |
* gnutls_privkey_export_ecc_raw:
|
|
Packit Service |
4684c1 |
* @key: Holds the public key
|
|
Packit Service |
4684c1 |
* @curve: will hold the curve
|
|
Packit Service |
4684c1 |
* @x: will hold the x-coordinate
|
|
Packit Service |
4684c1 |
* @y: will hold the y-coordinate
|
|
Packit Service |
4684c1 |
* @k: will hold the private key
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* This function will export the ECC private key's parameters found
|
|
Packit Service |
4684c1 |
* in the given structure. The new parameters will be allocated using
|
|
Packit Service |
4684c1 |
* gnutls_malloc() and will be stored in the appropriate datum.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* In EdDSA curves the @y parameter will be %NULL and the other parameters
|
|
Packit Service |
4684c1 |
* will be in the native format for the curve.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Returns: %GNUTLS_E_SUCCESS on success, otherwise a negative error code.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Since: 3.3.0
|
|
Packit Service |
4684c1 |
**/
|
|
Packit Service |
4684c1 |
int
|
|
Packit Service |
4684c1 |
gnutls_privkey_export_ecc_raw(gnutls_privkey_t key,
|
|
Packit Service |
4684c1 |
gnutls_ecc_curve_t * curve,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * x,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * y,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * k)
|
|
Packit Service |
4684c1 |
{
|
|
Packit Service |
4684c1 |
return gnutls_privkey_export_ecc_raw2(key, curve, x, y, k, 0);
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
/**
|
|
Packit Service |
4684c1 |
* gnutls_privkey_export_ecc_raw2:
|
|
Packit Service |
4684c1 |
* @key: Holds the public key
|
|
Packit Service |
4684c1 |
* @curve: will hold the curve
|
|
Packit Service |
4684c1 |
* @x: will hold the x-coordinate
|
|
Packit Service |
4684c1 |
* @y: will hold the y-coordinate
|
|
Packit Service |
4684c1 |
* @k: will hold the private key
|
|
Packit Service |
4684c1 |
* @flags: flags from %gnutls_abstract_export_flags_t
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* This function will export the ECC private key's parameters found
|
|
Packit Service |
4684c1 |
* in the given structure. The new parameters will be allocated using
|
|
Packit Service |
4684c1 |
* gnutls_malloc() and will be stored in the appropriate datum.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* In EdDSA curves the @y parameter will be %NULL and the other parameters
|
|
Packit Service |
4684c1 |
* will be in the native format for the curve.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Returns: %GNUTLS_E_SUCCESS on success, otherwise a negative error code.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Since: 3.6.0
|
|
Packit Service |
4684c1 |
**/
|
|
Packit Service |
4684c1 |
int
|
|
Packit Service |
4684c1 |
gnutls_privkey_export_ecc_raw2(gnutls_privkey_t key,
|
|
Packit Service |
4684c1 |
gnutls_ecc_curve_t * curve,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * x,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * y,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * k,
|
|
Packit Service |
4684c1 |
unsigned int flags)
|
|
Packit Service |
4684c1 |
{
|
|
Packit Service |
4684c1 |
gnutls_pk_params_st params;
|
|
Packit Service |
4684c1 |
int ret;
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
if (key == NULL) {
|
|
Packit Service |
4684c1 |
gnutls_assert();
|
|
Packit Service |
4684c1 |
return GNUTLS_E_INVALID_REQUEST;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
gnutls_pk_params_init(¶ms);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = _gnutls_privkey_get_mpis(key, ¶ms);
|
|
Packit Service |
4684c1 |
if (ret < 0)
|
|
Packit Service |
4684c1 |
return gnutls_assert_val(ret);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = _gnutls_params_get_ecc_raw(¶ms, curve, x, y, k, flags);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
gnutls_pk_params_release(¶ms);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
return ret;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
/**
|
|
Packit Service |
4684c1 |
* gnutls_privkey_export_gost_raw2:
|
|
Packit Service |
4684c1 |
* @key: Holds the public key
|
|
Packit Service |
4684c1 |
* @curve: will hold the curve
|
|
Packit Service |
4684c1 |
* @digest: will hold the digest
|
|
Packit Service |
4684c1 |
* @paramset: will hold the GOST parameter set ID
|
|
Packit Service |
4684c1 |
* @x: will hold the x-coordinate
|
|
Packit Service |
4684c1 |
* @y: will hold the y-coordinate
|
|
Packit Service |
4684c1 |
* @k: will hold the private key
|
|
Packit Service |
4684c1 |
* @flags: flags from %gnutls_abstract_export_flags_t
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* This function will export the GOST private key's parameters found
|
|
Packit Service |
4684c1 |
* in the given structure. The new parameters will be allocated using
|
|
Packit Service |
4684c1 |
* gnutls_malloc() and will be stored in the appropriate datum.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Note: parameters will be stored with least significant byte first. On
|
|
Packit Service |
4684c1 |
* version 3.6.3 this was incorrectly returned in big-endian format.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Returns: %GNUTLS_E_SUCCESS on success, otherwise a negative error code.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Since: 3.6.3
|
|
Packit Service |
4684c1 |
**/
|
|
Packit Service |
4684c1 |
int
|
|
Packit Service |
4684c1 |
gnutls_privkey_export_gost_raw2(gnutls_privkey_t key,
|
|
Packit Service |
4684c1 |
gnutls_ecc_curve_t * curve,
|
|
Packit Service |
4684c1 |
gnutls_digest_algorithm_t * digest,
|
|
Packit Service |
4684c1 |
gnutls_gost_paramset_t * paramset,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * x,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * y,
|
|
Packit Service |
4684c1 |
gnutls_datum_t * k,
|
|
Packit Service |
4684c1 |
unsigned int flags)
|
|
Packit Service |
4684c1 |
{
|
|
Packit Service |
4684c1 |
gnutls_pk_params_st params;
|
|
Packit Service |
4684c1 |
int ret;
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
if (key == NULL) {
|
|
Packit Service |
4684c1 |
gnutls_assert();
|
|
Packit Service |
4684c1 |
return GNUTLS_E_INVALID_REQUEST;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
gnutls_pk_params_init(¶ms);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = _gnutls_privkey_get_mpis(key, ¶ms);
|
|
Packit Service |
4684c1 |
if (ret < 0)
|
|
Packit Service |
4684c1 |
return gnutls_assert_val(ret);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = _gnutls_params_get_gost_raw(¶ms, curve, digest, paramset,
|
|
Packit Service |
4684c1 |
x, y, k, flags);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
gnutls_pk_params_release(¶ms);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
return ret;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
/**
|
|
Packit Service |
4684c1 |
* gnutls_privkey_import_rsa_raw:
|
|
Packit Service |
4684c1 |
* @key: The structure to store the parsed key
|
|
Packit Service |
4684c1 |
* @m: holds the modulus
|
|
Packit Service |
4684c1 |
* @e: holds the public exponent
|
|
Packit Service |
4684c1 |
* @d: holds the private exponent
|
|
Packit Service |
4684c1 |
* @p: holds the first prime (p)
|
|
Packit Service |
4684c1 |
* @q: holds the second prime (q)
|
|
Packit Service |
4684c1 |
* @u: holds the coefficient (optional)
|
|
Packit Service |
4684c1 |
* @e1: holds e1 = d mod (p-1) (optional)
|
|
Packit Service |
4684c1 |
* @e2: holds e2 = d mod (q-1) (optional)
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* This function will convert the given RSA raw parameters to the
|
|
Packit Service |
4684c1 |
* native #gnutls_privkey_t format. The output will be stored in
|
|
Packit Service |
4684c1 |
* @key.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a
|
|
Packit Service |
4684c1 |
* negative error value.
|
|
Packit Service |
4684c1 |
**/
|
|
Packit Service |
4684c1 |
int
|
|
Packit Service |
4684c1 |
gnutls_privkey_import_rsa_raw(gnutls_privkey_t key,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * m,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * e,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * d,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * p,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * q,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * u,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * e1,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * e2)
|
|
Packit Service |
4684c1 |
{
|
|
Packit Service |
4684c1 |
int ret;
|
|
Packit Service |
4684c1 |
gnutls_x509_privkey_t xkey;
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = gnutls_x509_privkey_init(&xkey);
|
|
Packit Service |
4684c1 |
if (ret < 0)
|
|
Packit Service |
4684c1 |
return gnutls_assert_val(ret);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = gnutls_x509_privkey_import_rsa_raw2(xkey, m, e, d, p, q, u, e1, e1);
|
|
Packit Service |
4684c1 |
if (ret < 0) {
|
|
Packit Service |
4684c1 |
gnutls_assert();
|
|
Packit Service |
4684c1 |
goto error;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = gnutls_privkey_import_x509(key, xkey, GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE);
|
|
Packit Service |
4684c1 |
if (ret < 0) {
|
|
Packit Service |
4684c1 |
gnutls_assert();
|
|
Packit Service |
4684c1 |
goto error;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
return 0;
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
error:
|
|
Packit Service |
4684c1 |
gnutls_x509_privkey_deinit(xkey);
|
|
Packit Service |
4684c1 |
return ret;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
/**
|
|
Packit Service |
4684c1 |
* gnutls_privkey_import_dsa_raw:
|
|
Packit Service |
4684c1 |
* @key: The structure to store the parsed key
|
|
Packit Service |
4684c1 |
* @p: holds the p
|
|
Packit Service |
4684c1 |
* @q: holds the q
|
|
Packit Service |
4684c1 |
* @g: holds the g
|
|
Packit Service |
4684c1 |
* @y: holds the y
|
|
Packit Service |
4684c1 |
* @x: holds the x
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* This function will convert the given DSA raw parameters to the
|
|
Packit Service |
4684c1 |
* native #gnutls_privkey_t format. The output will be stored
|
|
Packit Service |
4684c1 |
* in @key.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a
|
|
Packit Service |
4684c1 |
* negative error value.
|
|
Packit Service |
4684c1 |
**/
|
|
Packit Service |
4684c1 |
int
|
|
Packit Service |
4684c1 |
gnutls_privkey_import_dsa_raw(gnutls_privkey_t key,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * p,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * q,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * g,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * y,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * x)
|
|
Packit Service |
4684c1 |
{
|
|
Packit Service |
4684c1 |
int ret;
|
|
Packit Service |
4684c1 |
gnutls_x509_privkey_t xkey;
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = gnutls_x509_privkey_init(&xkey);
|
|
Packit Service |
4684c1 |
if (ret < 0)
|
|
Packit Service |
4684c1 |
return gnutls_assert_val(ret);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = gnutls_x509_privkey_import_dsa_raw(xkey, p, q, g, y, x);
|
|
Packit Service |
4684c1 |
if (ret < 0) {
|
|
Packit Service |
4684c1 |
gnutls_assert();
|
|
Packit Service |
4684c1 |
goto error;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = gnutls_privkey_import_x509(key, xkey, GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE);
|
|
Packit Service |
4684c1 |
if (ret < 0) {
|
|
Packit Service |
4684c1 |
gnutls_assert();
|
|
Packit Service |
4684c1 |
goto error;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
return 0;
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
error:
|
|
Packit Service |
4684c1 |
gnutls_x509_privkey_deinit(xkey);
|
|
Packit Service |
4684c1 |
return ret;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
/**
|
|
Packit Service |
4684c1 |
* gnutls_privkey_import_ecc_raw:
|
|
Packit Service |
4684c1 |
* @key: The key
|
|
Packit Service |
4684c1 |
* @curve: holds the curve
|
|
Packit Service |
4684c1 |
* @x: holds the x-coordinate
|
|
Packit Service |
4684c1 |
* @y: holds the y-coordinate
|
|
Packit Service |
4684c1 |
* @k: holds the k (private key)
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* This function will convert the given elliptic curve parameters to the
|
|
Packit Service |
4684c1 |
* native #gnutls_privkey_t format. The output will be stored
|
|
Packit Service |
4684c1 |
* in @key.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* In EdDSA curves the @y parameter should be %NULL and the @x and @k parameters
|
|
Packit Service |
4684c1 |
* must be in the native format for the curve.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a
|
|
Packit Service |
4684c1 |
* negative error value.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Since: 3.0
|
|
Packit Service |
4684c1 |
**/
|
|
Packit Service |
4684c1 |
int
|
|
Packit Service |
4684c1 |
gnutls_privkey_import_ecc_raw(gnutls_privkey_t key,
|
|
Packit Service |
4684c1 |
gnutls_ecc_curve_t curve,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * x,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * y,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * k)
|
|
Packit Service |
4684c1 |
{
|
|
Packit Service |
4684c1 |
int ret;
|
|
Packit Service |
4684c1 |
gnutls_x509_privkey_t xkey;
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = gnutls_x509_privkey_init(&xkey);
|
|
Packit Service |
4684c1 |
if (ret < 0)
|
|
Packit Service |
4684c1 |
return gnutls_assert_val(ret);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = gnutls_x509_privkey_import_ecc_raw(xkey, curve, x, y, k);
|
|
Packit Service |
4684c1 |
if (ret < 0) {
|
|
Packit Service |
4684c1 |
gnutls_assert();
|
|
Packit Service |
4684c1 |
goto error;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = gnutls_privkey_import_x509(key, xkey, GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE);
|
|
Packit Service |
4684c1 |
if (ret < 0) {
|
|
Packit Service |
4684c1 |
gnutls_assert();
|
|
Packit Service |
4684c1 |
goto error;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
return 0;
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
error:
|
|
Packit Service |
4684c1 |
gnutls_x509_privkey_deinit(xkey);
|
|
Packit Service |
4684c1 |
return ret;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
/**
|
|
Packit Service |
4684c1 |
* gnutls_privkey_import_gost_raw:
|
|
Packit Service |
4684c1 |
* @key: The key
|
|
Packit Service |
4684c1 |
* @curve: holds the curve
|
|
Packit Service |
4684c1 |
* @digest: holds the digest
|
|
Packit Service |
4684c1 |
* @paramset: holds the GOST parameter set ID
|
|
Packit Service |
4684c1 |
* @x: holds the x-coordinate
|
|
Packit Service |
4684c1 |
* @y: holds the y-coordinate
|
|
Packit Service |
4684c1 |
* @k: holds the k (private key)
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* This function will convert the given GOST private key's parameters to the
|
|
Packit Service |
4684c1 |
* native #gnutls_privkey_t format. The output will be stored
|
|
Packit Service |
4684c1 |
* in @key. @digest should be one of GNUTLS_DIG_GOSR_94,
|
|
Packit Service |
4684c1 |
* GNUTLS_DIG_STREEBOG_256 or GNUTLS_DIG_STREEBOG_512. If @paramset is set to
|
|
Packit Service |
4684c1 |
* GNUTLS_GOST_PARAMSET_UNKNOWN default one will be selected depending on
|
|
Packit Service |
4684c1 |
* @digest.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Note: parameters should be stored with least significant byte first. On
|
|
Packit Service |
4684c1 |
* version 3.6.3 big-endian format was used incorrectly.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a
|
|
Packit Service |
4684c1 |
* negative error value.
|
|
Packit Service |
4684c1 |
*
|
|
Packit Service |
4684c1 |
* Since: 3.6.3
|
|
Packit Service |
4684c1 |
**/
|
|
Packit Service |
4684c1 |
int
|
|
Packit Service |
4684c1 |
gnutls_privkey_import_gost_raw(gnutls_privkey_t key,
|
|
Packit Service |
4684c1 |
gnutls_ecc_curve_t curve,
|
|
Packit Service |
4684c1 |
gnutls_digest_algorithm_t digest,
|
|
Packit Service |
4684c1 |
gnutls_gost_paramset_t paramset,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * x,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * y,
|
|
Packit Service |
4684c1 |
const gnutls_datum_t * k)
|
|
Packit Service |
4684c1 |
{
|
|
Packit Service |
4684c1 |
int ret;
|
|
Packit Service |
4684c1 |
gnutls_x509_privkey_t xkey;
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = gnutls_x509_privkey_init(&xkey);
|
|
Packit Service |
4684c1 |
if (ret < 0)
|
|
Packit Service |
4684c1 |
return gnutls_assert_val(ret);
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = gnutls_x509_privkey_import_gost_raw(xkey, curve, digest, paramset, x, y, k);
|
|
Packit Service |
4684c1 |
if (ret < 0) {
|
|
Packit Service |
4684c1 |
gnutls_assert();
|
|
Packit Service |
4684c1 |
goto error;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
ret = gnutls_privkey_import_x509(key, xkey, GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE);
|
|
Packit Service |
4684c1 |
if (ret < 0) {
|
|
Packit Service |
4684c1 |
gnutls_assert();
|
|
Packit Service |
4684c1 |
goto error;
|
|
Packit Service |
4684c1 |
}
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
return 0;
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
error:
|
|
Packit Service |
4684c1 |
gnutls_x509_privkey_deinit(xkey);
|
|
Packit Service |
4684c1 |
return ret;
|
|
Packit Service |
4684c1 |
}
|