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

Method update_keys

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

Source from the content-addressed store, hash-verified

408 }
409
410 async fn update_keys(
411 &self,
412 request: Request<api::UpdateDeviceKeysRequest>,
413 ) -> Result<Response<()>, Status> {
414 let req_dk = match &request.get_ref().device_keys {
415 Some(v) => v,
416 None => {
417 return Err(Status::invalid_argument("device_keys is missing"));
418 }
419 };
420 let dev_eui = EUI64::from_str(&req_dk.dev_eui).map_err(|e| e.status())?;
421
422 self.validator
423 .validate(
424 request.extensions(),
425 validator::ValidateDeviceAccess::new(validator::Flag::Update, dev_eui),
426 )
427 .await?;
428
429 let dk = device_keys::get(&dev_eui).await.map_err(|e| e.status())?;
430 let dk = device_keys::DeviceKeys {
431 dev_eui: dk.dev_eui,
432 created_at: dk.created_at,
433 dev_nonces: dk.dev_nonces,
434 join_nonce: dk.join_nonce,
435 nwk_key: AES128Key::from_str(&req_dk.nwk_key).map_err(|e| e.status())?,
436 app_key: AES128Key::from_str(&req_dk.app_key).map_err(|e| e.status())?,
437 gen_app_key: AES128Key::from_str(&req_dk.gen_app_key).map_err(|e| e.status())?,
438 ..Default::default()
439 };
440 let _ = device_keys::update(dk).await.map_err(|e| e.status())?;
441
442 let mut resp = Response::new(());
443 resp.metadata_mut()
444 .insert("x-log-dev_eui", req_dk.dev_eui.parse().unwrap());
445
446 Ok(resp)
447 }
448
449 async fn delete_keys(
450 &self,

Callers 1

test_deviceFunction · 0.80

Calls 6

statusMethod · 0.80
insertMethod · 0.80
unwrapMethod · 0.80
getFunction · 0.50
updateFunction · 0.50
validateMethod · 0.45

Tested by 1

test_deviceFunction · 0.64