@@ -1522,36 +1522,77 @@ async fn main() -> Result<()> {
15221522 ) ;
15231523 }
15241524 KeyCommands :: Fetch { node_id, json } => {
1525- let ( api_base, auth_header) = resolve_user_auth ( ) ?;
1526- let token = auth_header. strip_prefix ( "Bearer " ) . unwrap_or ( & auth_header) ;
1527- let platform = PlatformClient :: new ( & api_base) . with_token ( token) ;
1528- let registry = prism_client:: node_registry:: NodeRegistryClient :: new ( & platform) ;
1529- let response = registry. get_public_key ( & node_id) . await ?;
1525+ let ( api_base, auth) = resolve_agent_auth ( ) ?;
1526+ let client = reqwest:: Client :: builder ( )
1527+ . timeout ( Duration :: from_secs ( 30 ) )
1528+ . build ( ) ?;
1529+ let response: serde_json:: Value = auth
1530+ . apply ( client. get ( format ! ( "{api_base}/nodes/{node_id}/public-key" ) ) )
1531+ . send ( )
1532+ . await ?
1533+ . error_for_status ( ) ?
1534+ . json ( )
1535+ . await ?;
15301536 if json {
15311537 println ! ( "{}" , serde_json:: to_string_pretty( & response) ?) ;
15321538 } else {
1533- println ! ( "Node: {}" , response. name) ;
1534- println ! ( "Node ID: {}" , response. node_id) ;
1535- println ! ( "Algorithm: {}" , response. algorithm) ;
1536- println ! ( "Public key: {}" , response. public_key) ;
1539+ println ! (
1540+ "Node: {}" ,
1541+ value_string( & response, & [ "name" ] ) . unwrap_or( "unknown" )
1542+ ) ;
1543+ println ! (
1544+ "Node ID: {}" ,
1545+ value_string( & response, & [ "node_id" , "id" ] ) . unwrap_or( & node_id)
1546+ ) ;
1547+ println ! (
1548+ "Algorithm: {}" ,
1549+ value_string( & response, & [ "algorithm" ] ) . unwrap_or( "x25519" )
1550+ ) ;
1551+ println ! (
1552+ "Public key: {}" ,
1553+ value_string( & response, & [ "public_key" ] ) . unwrap_or( "" )
1554+ ) ;
15371555 }
15381556 }
15391557 KeyCommands :: Exchange { node_id, json } => {
15401558 let ( _secret, public) =
15411559 prism_node:: crypto:: load_or_generate_key ( & paths. state_dir ) ?;
15421560 let our_public_key = prism_node:: crypto:: encode_public_key ( & public) ;
1543- let ( api_base, auth_header) = resolve_user_auth ( ) ?;
1544- let token = auth_header. strip_prefix ( "Bearer " ) . unwrap_or ( & auth_header) ;
1545- let platform = PlatformClient :: new ( & api_base) . with_token ( token) ;
1546- let registry = prism_client:: node_registry:: NodeRegistryClient :: new ( & platform) ;
1547- let response = registry. exchange_key ( & node_id, & our_public_key) . await ?;
1561+ let ( api_base, auth) = resolve_agent_auth ( ) ?;
1562+ let client = reqwest:: Client :: builder ( )
1563+ . timeout ( Duration :: from_secs ( 30 ) )
1564+ . build ( ) ?;
1565+ let response: serde_json:: Value = auth
1566+ . apply ( client. post ( format ! ( "{api_base}/nodes/{node_id}/exchange-key" ) ) )
1567+ . json ( & serde_json:: json!( {
1568+ "public_key" : our_public_key,
1569+ } ) )
1570+ . send ( )
1571+ . await ?
1572+ . error_for_status ( ) ?
1573+ . json ( )
1574+ . await ?;
15481575 if json {
15491576 println ! ( "{}" , serde_json:: to_string_pretty( & response) ?) ;
15501577 } else {
1551- println ! ( "Target node ID: {}" , response. target_node_id) ;
1552- println ! ( "Algorithm: {}" , response. algorithm) ;
1553- println ! ( "Target public key: {}" , response. target_public_key) ;
1554- println ! ( "Public key sent: {}" , response. your_public_key_received) ;
1578+ println ! (
1579+ "Target node ID: {}" ,
1580+ value_string( & response, & [ "target_node_id" , "node_id" , "id" ] )
1581+ . unwrap_or( & node_id)
1582+ ) ;
1583+ println ! (
1584+ "Algorithm: {}" ,
1585+ value_string( & response, & [ "algorithm" ] ) . unwrap_or( "x25519" )
1586+ ) ;
1587+ println ! (
1588+ "Target public key: {}" ,
1589+ value_string( & response, & [ "target_public_key" , "public_key" ] )
1590+ . unwrap_or( "" )
1591+ ) ;
1592+ println ! (
1593+ "Public key sent: {}" ,
1594+ value_string( & response, & [ "your_public_key_received" ] ) . unwrap_or( "" )
1595+ ) ;
15551596 }
15561597 }
15571598 } ,
0 commit comments