Add PEM/DER serialization for EC public key
This commit is contained in:
parent
639c8af5c1
commit
7d129b6413
|
|
@ -92,6 +92,13 @@ extern "C" {
|
||||||
callback: pem_password_cb,
|
callback: pem_password_cb,
|
||||||
user_data: *mut c_void,
|
user_data: *mut c_void,
|
||||||
) -> c_int;
|
) -> c_int;
|
||||||
|
pub fn PEM_read_bio_EC_PUBKEY(
|
||||||
|
bp: *mut BIO,
|
||||||
|
ec: *mut *mut EC_KEY,
|
||||||
|
callback: pem_password_cb,
|
||||||
|
user_data: *mut c_void,
|
||||||
|
) -> *mut EC_KEY;
|
||||||
|
pub fn PEM_write_bio_EC_PUBKEY(bp: *mut BIO, ec: *mut EC_KEY) -> c_int;
|
||||||
pub fn PEM_read_bio_DHparams(
|
pub fn PEM_read_bio_DHparams(
|
||||||
bio: *mut BIO,
|
bio: *mut BIO,
|
||||||
out: *mut *mut DH,
|
out: *mut *mut DH,
|
||||||
|
|
|
||||||
|
|
@ -132,6 +132,12 @@ extern "C" {
|
||||||
pub fn i2d_RSA_PUBKEY(k: *mut RSA, buf: *mut *mut u8) -> c_int;
|
pub fn i2d_RSA_PUBKEY(k: *mut RSA, buf: *mut *mut u8) -> c_int;
|
||||||
pub fn d2i_DSA_PUBKEY(k: *mut *mut DSA, pp: *mut *const c_uchar, length: c_long) -> *mut DSA;
|
pub fn d2i_DSA_PUBKEY(k: *mut *mut DSA, pp: *mut *const c_uchar, length: c_long) -> *mut DSA;
|
||||||
pub fn i2d_DSA_PUBKEY(a: *mut DSA, pp: *mut *mut c_uchar) -> c_int;
|
pub fn i2d_DSA_PUBKEY(a: *mut DSA, pp: *mut *mut c_uchar) -> c_int;
|
||||||
|
pub fn d2i_EC_PUBKEY(
|
||||||
|
a: *mut *mut EC_KEY,
|
||||||
|
pp: *mut *const c_uchar,
|
||||||
|
length: c_long,
|
||||||
|
) -> *mut EC_KEY;
|
||||||
|
pub fn i2d_EC_PUBKEY(a: *mut EC_KEY, pp: *mut *mut c_uchar) -> c_int;
|
||||||
pub fn i2d_PrivateKey(k: *mut EVP_PKEY, buf: *mut *mut u8) -> c_int;
|
pub fn i2d_PrivateKey(k: *mut EVP_PKEY, buf: *mut *mut u8) -> c_int;
|
||||||
|
|
||||||
pub fn d2i_ECPrivateKey(
|
pub fn d2i_ECPrivateKey(
|
||||||
|
|
|
||||||
|
|
@ -642,6 +642,28 @@ where
|
||||||
EcPointRef::from_ptr(ptr as *mut _)
|
EcPointRef::from_ptr(ptr as *mut _)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
to_pem! {
|
||||||
|
/// Serialies the public key into a PEM-encoded SubjectPublicKeyInfo structure.
|
||||||
|
///
|
||||||
|
/// The output will have a header of `-----BEGIN PUBLIC KEY-----`.
|
||||||
|
///
|
||||||
|
/// This corresponds to [`PEM_write_bio_EC_PUBKEY`].
|
||||||
|
///
|
||||||
|
/// [`PEM_write_bio_EC_PUBKEY`]: https://www.openssl.org/docs/man1.1.0/crypto/PEM_write_bio_EC_PUBKEY.html
|
||||||
|
public_key_to_pem,
|
||||||
|
ffi::PEM_write_bio_EC_PUBKEY
|
||||||
|
}
|
||||||
|
|
||||||
|
to_der! {
|
||||||
|
/// Serializes the public key into a DER-encoded SubjectPublicKeyInfo structure.
|
||||||
|
///
|
||||||
|
/// This corresponds to [`i2d_EC_PUBKEY`].
|
||||||
|
///
|
||||||
|
/// [`i2d_EC_PUBKEY`]: https://www.openssl.org/docs/man1.1.0/crypto/i2d_EC_PUBKEY.html
|
||||||
|
public_key_to_der,
|
||||||
|
ffi::i2d_EC_PUBKEY
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T> EcKeyRef<T>
|
impl<T> EcKeyRef<T>
|
||||||
|
|
@ -778,6 +800,30 @@ impl EcKey<Public> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
from_pem! {
|
||||||
|
/// Decodes a PEM-encoded SubjectPublicKeyInfo structure containing a EC key.
|
||||||
|
///
|
||||||
|
/// The input should have a header of `-----BEGIN PUBLIC KEY-----`.
|
||||||
|
///
|
||||||
|
/// This corresponds to [`PEM_read_bio_EC_PUBKEY`].
|
||||||
|
///
|
||||||
|
/// [`PEM_read_bio_EC_PUBKEY`]: https://www.openssl.org/docs/man1.1.0/crypto/PEM_read_bio_EC_PUBKEY.html
|
||||||
|
public_key_from_pem,
|
||||||
|
EcKey<Public>,
|
||||||
|
ffi::PEM_read_bio_EC_PUBKEY
|
||||||
|
}
|
||||||
|
|
||||||
|
from_der! {
|
||||||
|
/// Decodes a DER-encoded SubjectPublicKeyInfo structure containing a EC key.
|
||||||
|
///
|
||||||
|
/// This corresponds to [`d2i_EC_PUBKEY`].
|
||||||
|
///
|
||||||
|
/// [`d2i_EC_PUBKEY`]: https://www.openssl.org/docs/man1.1.0/crypto/d2i_EC_PUBKEY.html
|
||||||
|
public_key_from_der,
|
||||||
|
EcKey<Public>,
|
||||||
|
ffi::d2i_EC_PUBKEY
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl EcKey<Private> {
|
impl EcKey<Private> {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue