1个不稳定版本
0.1.0 | 2024年7月26日 |
---|
#6 在 #ecu
每月126次下载
32KB
608 行
DoIP - ISO13400-2 是用于汽车领域的IP故障诊断通信协议。
DoIP只处理诊断数据包的传输。实际的诊断消息使用UDS(统一诊断服务)协议编码,该协议由ISO14229指定。
客户端示例
use std::net::Ipv4Addr;
use doip::{ActivationType, RoutingActivationResponseCode};
use doip_tokio::{DoIpClient, DoIpTokioError};
use futures::StreamExt;
use openssl::{
pkey::PKey,
ssl::{SslConnector, SslMethod},
x509::X509,
};
use tls_api::TlsConnectorBuilder;
use tls_api_openssl::TlsConnector;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Configure TLS setup
const CERT_PEM: &[u8] = b"-----BEGIN CERTIFICATE-----...";
const CERT_PRIVATE_KEY: &[u8] = b"-----BEGIN RSA PRIVATE KEY-----...";
let x509 = X509::from_pem(CERT_PEM)?;
let pkey = PKey::private_key_from_pem(CERT_PRIVATE_KEY)?;
let mut builder = SslConnector::builder(SslMethod::tls())?;
builder.set_cipher_list(doip::TLS_V1_2_CIPHER_SUITES_OPENSSL)?;
// TLSv1.3
builder.set_ciphersuites(doip::TLS_V1_3_CIPHER_SUITES)?;
builder.set_private_key(&pkey)?;
builder.cert_store_mut().add_cert(x509)?;
let tls_connector = tls_api_openssl::TlsConnectorBuilder {
builder,
verify_hostname: false,
}
.build()?;
let addr = Ipv4Addr::new(127, 0, 0, 1);
let mut client = DoIpClient::connect(addr, 0x0E80, tls_connector, "localhost").await?;
let response = client
.routing_activation([0x00, 0x00], ActivationType::Default)
.await?;
Ok(())
}
依赖项
~5–15MB
~195K SLoC