change to check authv2

This commit is contained in:
mfahampshire
2025-08-05 16:20:56 +02:00
parent 6d0b899648
commit 3ec9c4d8d7
4 changed files with 83 additions and 34 deletions
@@ -16,6 +16,9 @@ pub struct AuthenticateRequest {
pub content: AuthenticateRequestContent,
pub request_signature: ed25519::Signature,
#[serde(default)]
pub debug_trace_id: Option<String>,
}
impl AuthenticateRequest {
@@ -23,6 +26,7 @@ impl AuthenticateRequest {
protocol_version: u8,
shared_key: &SharedGatewayKey,
identity_keys: &ed25519::KeyPair,
debug_trace_id: Option<String>,
) -> Result<AuthenticateRequest, GatewayRequestsError> {
let content = AuthenticateRequestContent::new(
protocol_version,
@@ -35,6 +39,7 @@ impl AuthenticateRequest {
Ok(AuthenticateRequest {
content,
request_signature,
debug_trace_id,
})
}
@@ -14,7 +14,9 @@ use nym_sphinx::DestinationAddressBytes;
use nym_statistics_common::types::SessionType;
use opentelemetry::trace::TraceContextExt;
use serde::{Deserialize, Serialize};
use std::panic;
use std::str::FromStr;
use tracing::{instrument, warn};
use tungstenite::Message;
pub mod authenticate;
@@ -77,7 +79,6 @@ pub enum ClientControlRequest {
address: String,
enc_address: String,
iv: String,
/// this is a trace id that is used in testing and performance verification
/// in mainnet, this will always be set to None
#[serde(default)]
@@ -134,9 +135,12 @@ impl ClientControlRequest {
let ciphertext = shared_key.encrypt_naive(address.as_bytes_ref(), Some(&nonce))?;
let otel_context = opentelemetry::Context::current();
warn!("OTEL CONTEXT: {:?}", otel_context);
let span = otel_context.span();
let context = span.span_context();
let trace_id = context.trace_id();
warn!("TRACE_ID: {:?}", trace_id);
panic!();
Ok(ClientControlRequest::Authenticate {
protocol_version,
@@ -147,6 +151,7 @@ impl ClientControlRequest {
})
}
#[instrument]
pub fn new_authenticate_v2(
shared_key: &SharedGatewayKey,
identity_keys: &ed25519::KeyPair,
@@ -154,8 +159,21 @@ impl ClientControlRequest {
// if we're using v2 authentication, we must announce at least that protocol version
let protocol_version = AUTHENTICATE_V2_PROTOCOL_VERSION;
let otel_context = opentelemetry::Context::current();
warn!("OTEL CONTEXT: {:?}", otel_context);
let span = otel_context.span();
let context = span.span_context();
let trace_id = context.trace_id();
warn!("TRACE_ID: {:?}", trace_id);
// panic!();
Ok(ClientControlRequest::AuthenticateV2(Box::new(
AuthenticateRequest::new(protocol_version, shared_key, identity_keys)?,
AuthenticateRequest::new(
protocol_version,
shared_key,
identity_keys,
Some(trace_id.to_string()),
)?,
)))
}
@@ -889,40 +889,41 @@ impl<R, S> FreshHandler<R, S> {
// All child spans inherit trace_id "abc123..." │
└───────────────────────────────────────────────────────┘
*/
let span = if let ClientControlRequest::Authenticate {
debug_trace_id: Some(ref trace_id),
..
} = request
{
warn!("RAW TRACE ID: {trace_id:?}");
let trace_id = opentelemetry::trace::TraceId::from_hex(&trace_id)
.expect("Invalid trace ID format");
warn!("🫂TraceID: {trace_id}🫂");
let span = if let ClientControlRequest::AuthenticateV2(ref auth_req) = request {
if let Some(ref trace_id) = auth_req.debug_trace_id {
warn!("RAW TRACE ID: {trace_id:?}");
let trace_id = opentelemetry::trace::TraceId::from_hex(&trace_id)
.expect("Invalid trace ID format");
warn!("🫂TraceID: {trace_id}🫂");
// We don't need to try and preserve the SpanID, just the TraceID (right?) so
// just making a new SpanID for the moment
let id_generator = RandomIdGenerator::default();
let span_id = id_generator.new_span_id();
// We don't need to try and preserve the SpanID, just the TraceID (right?) so
// just making a new SpanID for the moment
let id_generator = RandomIdGenerator::default();
let span_id = id_generator.new_span_id();
let span_context = opentelemetry::trace::SpanContext::new(
trace_id,
span_id,
opentelemetry::trace::TraceFlags::SAMPLED,
true, // is_remote = true since this comes from another service
Default::default(),
);
let span_context = opentelemetry::trace::SpanContext::new(
trace_id,
span_id,
opentelemetry::trace::TraceFlags::SAMPLED,
true, // is_remote = true since this comes from another service
Default::default(),
);
use opentelemetry::trace::TraceContextExt;
let remote_context =
opentelemetry::Context::current().with_remote_span_context(span_context);
use opentelemetry::trace::TraceContextExt;
let remote_context =
opentelemetry::Context::current().with_remote_span_context(span_context);
// Create span with remote context as parent
use tracing_opentelemetry::OpenTelemetrySpanExt;
let span = info_span!("authenticate_v1");
span.set_parent(remote_context);
Some(span)
// Create span with remote context as parent
use tracing_opentelemetry::OpenTelemetrySpanExt;
let span = info_span!("authenticate_v2");
span.set_parent(remote_context);
Some(span)
} else {
warn!("AuthenticateV2 request but no trace_id provided");
None
}
} else {
warn!("COULDN'T FIND TRACE_ID");
warn!("Not an AuthenticateV2 request");
None
};
+28 -3
View File
@@ -3,21 +3,26 @@ use nym_sdk::mixnet::{
AnonymousSenderTag, MixnetClientBuilder, MixnetMessageSender, ReconstructedMessage,
StoragePaths,
};
use std::path::PathBuf;
use tempfile::TempDir;
use opentelemetry::trace::TraceContextExt;
use opentelemetry::trace::Tracer;
use opentelemetry::trace::TracerProvider;
use opentelemetry::Context;
use opentelemetry::{global, KeyValue};
use opentelemetry_otlp::tonic_types::metadata::MetadataMap;
use opentelemetry_otlp::tonic_types::transport::ClientTlsConfig;
use opentelemetry_otlp::{WithExportConfig, WithTonicConfig};
use opentelemetry_sdk::metrics::{MeterProviderBuilder, PeriodicReader, SdkMeterProvider};
use opentelemetry_sdk::trace::IdGenerator;
use opentelemetry_sdk::trace::{RandomIdGenerator, SdkTracerProvider};
use opentelemetry_sdk::{trace::Sampler, Resource};
use opentelemetry_semantic_conventions::{
attribute::{DEPLOYMENT_ENVIRONMENT_NAME, SERVICE_VERSION},
SCHEMA_URL,
};
use std::path::PathBuf;
use tempfile::TempDir;
use tracing::instrument;
use tracing::{info, warn};
use tracing_core::Level;
use tracing_opentelemetry::{MetricsLayer, OpenTelemetryLayer};
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
@@ -64,6 +69,10 @@ fn init_tracer_provider(metadata: MetadataMap) -> anyhow::Result<SdkTracerProvid
.with_batch_exporter(exporter)
.build();
// We set this in meter provider but didn't in here
// :facepalm:
global::set_tracer_provider(tracer.clone());
Ok(tracer)
}
@@ -138,6 +147,7 @@ impl Drop for OtelGuard {
}
#[tokio::main]
#[instrument]
async fn main() -> anyhow::Result<()> {
// nym_bin_common::logging::setup_tracing_logger();
@@ -149,6 +159,21 @@ async fn main() -> anyhow::Result<()> {
metadata.insert("signoz-ingestion-key", key.parse()?);
let _guard = init_tracing_subscriber(metadata);
let tracer = global::tracer("sdk-example-surb-reply");
let span = tracer.start("test_span");
let cx = Context::current_with_span(span);
let _guard = cx.clone().attach();
let trace_id = cx.span().span_context().trace_id();
warn!("Main TRACE_ID (should be valid): {:?}", trace_id);
let otel_context = opentelemetry::Context::current();
warn!("OTEL CONTEXT: {:?}", otel_context);
let span = otel_context.span();
let context = span.span_context();
let trace_id = context.trace_id();
warn!("TRACE_ID: {:?}", trace_id);
// panic!();
// Specify some config options
// let config_dir: PathBuf = TempDir::new().unwrap().path().to_path_buf();