(self, request: DeriveKeyArgs)
| 476 | |
| 477 | impl 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 } |
nothing calls this directly
no test coverage detected