|
5 | 5 | use std::sync::Arc; |
6 | 6 |
|
7 | 7 | use anyhow::{Context, Result}; |
| 8 | +use base64::{engine::general_purpose::URL_SAFE_NO_PAD, Engine as _}; |
8 | 9 | use cert_client::CertRequestClient; |
9 | 10 | use dstack_guest_agent_rpc::{ |
10 | 11 | dstack_guest_server::{DstackGuestRpc, DstackGuestServer}, |
@@ -89,10 +90,17 @@ impl AppState { |
89 | 90 | let secp256k1_pubkey = secp256k1_key.verifying_key().to_sec1_bytes(); |
90 | 91 |
|
91 | 92 | let mut ed25519_report_data = [0u8; 64]; |
92 | | - ed25519_report_data[..ed25519_pubkey.len()].copy_from_slice(&ed25519_pubkey); |
| 93 | + let ed25519_b64 = URL_SAFE_NO_PAD.encode(ed25519_pubkey); |
| 94 | + let ed25519_report_string = format!("dip1::ed25519-pk:{}", ed25519_b64); |
| 95 | + let ed_bytes = ed25519_report_string.as_bytes(); |
| 96 | + ed25519_report_data[..ed_bytes.len()].copy_from_slice(ed_bytes); |
93 | 97 |
|
94 | 98 | let mut secp256k1_report_data = [0u8; 64]; |
95 | | - secp256k1_report_data[..secp256k1_pubkey.len()].copy_from_slice(&secp256k1_pubkey); |
| 99 | + let secp256k1_b64 = URL_SAFE_NO_PAD.encode(secp256k1_pubkey); |
| 100 | + let secp256k1_report_string = format!("dip1::secp256k1c-pk:{}", secp256k1_b64); |
| 101 | + let secp_bytes = secp256k1_report_string.as_bytes(); |
| 102 | + secp256k1_report_data[..secp_bytes.len()].copy_from_slice(secp_bytes); |
| 103 | + |
96 | 104 | let (ed25519_attestation, secp256k1_attestation) = if config.simulator.enabled { |
97 | 105 | ( |
98 | 106 | simulate_quote(&config, ed25519_report_data, &vm_config)?, |
|
0 commit comments