pub struct DeviceConfig {
pub name: String,
pub device_type: DeviceType,
pub cert: Vec<u8>,
pub private_key: Vec<u8>,
}Expand description
The configuration of the host device.
You must generate a self-signed certificate with the device ID as CommonName in order to start a device and connect to other peers.
You can either use openssl to generate a certificate using:
openssl req -x509 \
-newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -keyout private_key.pem \
-addext basicConstraints=critical,CA:FALSE \
-days 3650 -nodes -subj "/O=KDE/OU=KDE Connect/CN=<your host device ID>" -out cert.pemOr use the rcgen crate:
ⓘ
use std::fs;
use rcgen::{CertificateParams, DistinguishedName, DnType, IsCa, KeyPair};
pub fn gen_certificate(uuid: &str) {
let mut params = CertificateParams::default();
params.is_ca = IsCa::ExplicitNoCa;
let mut dn = DistinguishedName::new();
dn.push(DnType::CommonName, uuid);
dn.push(DnType::OrganizationName, "KDE");
dn.push(DnType::OrganizationalUnitName, "KDE Connect");
params.distinguished_name = dn;
let key_pair = KeyPair::generate().unwrap();
let cert = params.self_signed(&key_pair).unwrap();
fs::write("private_key.pem", key_pair.serialize_pem()).unwrap();
fs::write("cert.pem", cert.pem()).unwrap();
}You can then make a DeviceConfig using the content of the files cert.pem and
private_key.pem, respectively in the DeviceConfig::cert and DeviceConfig::private_key
fields.
Fields§
§name: StringThe name of the host device.
It must be 1-32 characters in length and shouldn’t contain any of the following punctuation marks "',;:.!?()[]<>.
device_type: DeviceTypeThe physical type of the host device.
cert: Vec<u8>A PEM-encoded X.509 certificate.
private_key: Vec<u8>A PEM-encoded X.509 private signing key.
Trait Implementations§
Source§impl Clone for DeviceConfig
impl Clone for DeviceConfig
Source§fn clone(&self) -> DeviceConfig
fn clone(&self) -> DeviceConfig
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for DeviceConfig
impl RefUnwindSafe for DeviceConfig
impl Send for DeviceConfig
impl Sync for DeviceConfig
impl Unpin for DeviceConfig
impl UnsafeUnpin for DeviceConfig
impl UnwindSafe for DeviceConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more