MCPcopy Create free account
hub / github.com/chirpstack/chirpstack / create_keys

Method create_keys

chirpstack/src/api/device.rs:342–376  ·  view source on GitHub ↗
(
        &self,
        request: Request<api::CreateDeviceKeysRequest>,
    )

Source from the content-addressed store, hash-verified

340 }
341
342 async fn create_keys(
343 &self,
344 request: Request<api::CreateDeviceKeysRequest>,
345 ) -> Result<Response<()>, Status> {
346 let req_dk = match &request.get_ref().device_keys {
347 Some(v) => v,
348 None => {
349 return Err(Status::invalid_argument("device_keys is missing"));
350 }
351 };
352 let dev_eui = EUI64::from_str(&req_dk.dev_eui).map_err(|e| e.status())?;
353
354 self.validator
355 .validate(
356 request.extensions(),
357 validator::ValidateDeviceAccess::new(validator::Flag::Update, dev_eui),
358 )
359 .await?;
360
361 let dk = device_keys::DeviceKeys {
362 dev_eui,
363 nwk_key: AES128Key::from_str(&req_dk.nwk_key).map_err(|e| e.status())?,
364 app_key: AES128Key::from_str(&req_dk.app_key).map_err(|e| e.status())?,
365 gen_app_key: AES128Key::from_str(&req_dk.gen_app_key).map_err(|e| e.status())?,
366 ..Default::default()
367 };
368
369 let _ = device_keys::create(dk).await.map_err(|e| e.status())?;
370
371 let mut resp = Response::new(());
372 resp.metadata_mut()
373 .insert("x-log-dev_eui", req_dk.dev_eui.parse().unwrap());
374
375 Ok(resp)
376 }
377
378 async fn get_keys(
379 &self,

Callers 1

test_deviceFunction · 0.80

Calls 5

statusMethod · 0.80
insertMethod · 0.80
unwrapMethod · 0.80
createFunction · 0.50
validateMethod · 0.45

Tested by 1

test_deviceFunction · 0.64