MCPcopy Create free account
hub / github.com/Dstack-TEE/dstack / derive_key

Method derive_key

guest-agent/src/rpc_service.rs:478–506  ·  view source on GitHub ↗
(self, request: DeriveKeyArgs)

Source from the content-addressed store, hash-verified

476
477impl TappdRpc for InternalRpcHandlerV0 {
478 async fn derive_key(self, request: DeriveKeyArgs) -> anyhow::Result<GetTlsKeyResponse> {
479 let mut mbuf = [0u8; 32];
480 let seed = if request.random_seed {
481 SystemRandom::new()
482 .fill(&mut mbuf)
483 .context("Failed to generate secure seed")?;
484 &mbuf[..]
485 } else {
486 &self.state.inner.keys.k256_key
487 };
488 let derived_key = derive_p256_key_pair_from_bytes(seed, &[request.path.as_bytes()])
489 .context("Failed to derive key")?;
490 let config = CertConfigV2 {
491 org_name: None,
492 subject: request.subject,
493 subject_alt_names: request.alt_names,
494 usage_server_auth: request.usage_server_auth,
495 usage_client_auth: request.usage_client_auth,
496 ext_quote: request.usage_ra_tls,
497 ext_app_info: false,
498 not_before: None,
499 not_after: None,
500 };
501 let certificate_chain = self.state.inner.issue_cert(&derived_key, config).await?;
502 Ok(GetTlsKeyResponse {
503 key: derived_key.serialize_pem(),
504 certificate_chain,
505 })
506 }
507
508 async fn derive_k256_key(self, request: GetKeyArgs) -> Result<DeriveK256KeyResponse> {
509 let res = InternalRpcHandler { state: self.state }

Callers

nothing calls this directly

Calls 2

issue_certMethod · 0.80

Tested by

no test coverage detected