Skip to content

Commit 0a84b37

Browse files
committed
feat(manufacturing-client): add https support
- changes on client side to support https request Signed-off-by: Sarita Mahajan <[email protected]>
1 parent fee5a30 commit 0a84b37

File tree

5 files changed

+28
-15
lines changed

5 files changed

+28
-15
lines changed

client-linuxapp/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ async fn get_client_list(rv_entry: &RendezvousInterpretedDirective) -> Result<Ve
149149
service_client_list.push(fdo_http_wrapper::client::ServiceClient::new(
150150
ProtocolVersion::Version1_1,
151151
url,
152-
));
152+
)?);
153153
}
154154
log::trace!("Client list: {:?}", service_client_list);
155155
Ok(service_client_list)
@@ -855,7 +855,7 @@ async fn perform_to2(
855855
) -> Result<bool> {
856856
log::info!("Performing TO2 protocol, URL: {:?}", url);
857857

858-
let mut client = fdo_http_wrapper::client::ServiceClient::new(ProtocolVersion::Version1_1, url);
858+
let mut client = fdo_http_wrapper::client::ServiceClient::new(ProtocolVersion::Version1_1, url)?;
859859

860860
let nonce5 = match get_nonce(MessageType::TO1RVRedirect).await {
861861
Ok(nonce5) => nonce5,

http-wrapper/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ warp-sessions = { version = "1.0", optional = true }
2929
time = "0.3"
3030

3131
# Client-side
32-
reqwest = { version = "0.11", optional = true, features = ["native-tls", "json"] }
32+
reqwest = { version = "0.11.21", optional = true, features = ["native-tls", "json", "__tls"] }
3333
url = { version = "2", optional = true }
3434

3535
[features]

http-wrapper/src/client.rs

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ use fdo_data_formats::{
1212

1313
use crate::EncryptionKeys;
1414

15+
use std::env;
16+
1517
#[derive(Debug, Error)]
1618
#[non_exhaustive]
1719
pub enum Error {
@@ -149,16 +151,26 @@ pub struct ServiceClient {
149151
}
150152

151153
impl ServiceClient {
152-
pub fn new(protocol_version: ProtocolVersion, base_url: &str) -> Self {
153-
ServiceClient {
154+
pub fn new(protocol_version: ProtocolVersion, base_url: &str) -> RequestResult<Self> {
155+
let mut client_builder = reqwest::Client::builder();
156+
157+
if env::var("DEV_ENVIRONMENT").is_ok() {
158+
log::debug!("DEV_ENVIRONMENT is set");
159+
client_builder = client_builder.danger_accept_invalid_certs(true);
160+
}
161+
162+
Ok(ServiceClient {
154163
protocol_version,
155164
base_url: base_url.trim_end_matches('/').to_string(),
156-
client: reqwest::Client::new(),
165+
client: client_builder
166+
.tls_info(true)
167+
// .danger_accept_invalid_certs(true)
168+
.build()?,
157169
authorization_token: None,
158170
encryption_keys: EncryptionKeys::unencrypted(),
159171
last_message_type: None,
160172
non_interoperable_kdf_required: None,
161-
}
173+
})
162174
}
163175

164176
pub fn non_interoperable_kdf_required(&self) -> Option<bool> {
@@ -211,14 +223,15 @@ impl ServiceClient {
211223
let to_send = to_send.serialize_data()?;
212224
let to_send = self.encryption_keys.encrypt(&to_send)?;
213225
log::trace!("Sending message: {:?}", hex::encode(&to_send));
214-
215-
let url = format!(
216-
"{}/fdo/{}/msg/{}",
226+
227+
let url = format!(
228+
"{}/fdo/{}/msg/{}",
217229
&self.base_url,
218230
self.protocol_version,
219231
OM::message_type() as u8
220-
);
232+
);
221233

234+
log::debug!("url: {}",url);
222235
let mut req = self
223236
.client
224237
.post(&url)

manufacturing-client/src/main.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ async fn main() -> Result<()> {
349349
keyref = KeyReference::str_key(args.key_ref)
350350
.await
351351
.context("Error determining key for DI")?;
352-
client = ServiceClient::new(ProtocolVersion::Version1_1, &url);
352+
client = ServiceClient::new(ProtocolVersion::Version1_1, &url)?;
353353
}
354354
Commands::NoPlainDI(args) => {
355355
url = args.manufacturing_server_url;
@@ -369,7 +369,7 @@ async fn main() -> Result<()> {
369369
}
370370

371371
log::debug!("Performing DIUN");
372-
client = ServiceClient::new(ProtocolVersion::Version1_1, &url);
372+
client = ServiceClient::new(ProtocolVersion::Version1_1, &url)?;
373373
(keyref, mfg_string_type) = perform_diun(&mut client, diun_pub_key_verification)
374374
.await
375375
.context("Error performing DIUN")?;
@@ -400,7 +400,7 @@ async fn main() -> Result<()> {
400400

401401
url = env::var("MANUFACTURING_SERVER_URL")
402402
.context("Please provide MANUFACTURING_SERVER_URL")?;
403-
client = ServiceClient::new(ProtocolVersion::Version1_1, &url);
403+
client = ServiceClient::new(ProtocolVersion::Version1_1, &url)?;
404404

405405
let use_plain_di = match env::var("USE_PLAIN_DI") {
406406
Ok(val) => val == "true",

owner-onboarding-server/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ async fn report_ov_to_rendezvous(
150150
);
151151

152152
let mut rv_client =
153-
fdo_http_wrapper::client::ServiceClient::new(ProtocolVersion::Version1_1, &rv_url);
153+
fdo_http_wrapper::client::ServiceClient::new(ProtocolVersion::Version1_1, &rv_url)?;
154154

155155
// Send: Hello, Receive: HelloAck
156156
let hello_ack: RequestResult<messages::v11::to0::HelloAck> = rv_client

0 commit comments

Comments
 (0)