Struct rings_core::session::SessionManager
source · pub struct SessionManager { /* private fields */ }Expand description
Manager about Session.
Implementations§
source§impl SessionManager
impl SessionManager
sourcepub fn gen_unsign_info_with_ed25519_pubkey(
ttl: Option<Ttl>,
pubkey: PublicKey
) -> Result<(AuthorizedInfo, SecretKey)>
pub fn gen_unsign_info_with_ed25519_pubkey(
ttl: Option<Ttl>,
pubkey: PublicKey
) -> Result<(AuthorizedInfo, SecretKey)>
gen unsign info with a given ed25519 pubkey
sourcepub fn gen_unsign_info_with_pubkey(
ttl: Option<Ttl>,
signer: Option<Signer>,
pubkey: PublicKey
) -> Result<(AuthorizedInfo, SecretKey)>
pub fn gen_unsign_info_with_pubkey(
ttl: Option<Ttl>,
signer: Option<Signer>,
pubkey: PublicKey
) -> Result<(AuthorizedInfo, SecretKey)>
sourcepub fn gen_unsign_info(
did: Did,
ttl: Option<Ttl>,
signer: Option<Signer>
) -> (AuthorizedInfo, SecretKey)
pub fn gen_unsign_info(
did: Did,
ttl: Option<Ttl>,
signer: Option<Signer>
) -> (AuthorizedInfo, SecretKey)
sourcepub fn new(
sig: &[u8],
auth_info: &AuthorizedInfo,
session_key: &SecretKey
) -> Self
pub fn new(
sig: &[u8],
auth_info: &AuthorizedInfo,
session_key: &SecretKey
) -> Self
sig: Signature of AuthorizedInfo
auth_info: generated from gen_unsign_info
session_key: temp key from gen_unsign_info
sourcepub fn new_with_seckey(key: &SecretKey, ttl: Option<Ttl>) -> Result<Self>
pub fn new_with_seckey(key: &SecretKey, ttl: Option<Ttl>) -> Result<Self>
generate Session with private key only use it for unittest
Examples found in repository?
src/swarm.rs (line 114)
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
pub fn build(self) -> Result<Swarm> {
let session_manager = {
if self.session_manager.is_some() {
Ok(self.session_manager.unwrap())
} else if self.key.is_some() {
SessionManager::new_with_seckey(&self.key.unwrap(), self.session_ttl)
} else {
Err(Error::SwarmBuildFailed(
"Should set session_manager or key".into(),
))
}
}?;
let dht_did = self
.dht_did
.ok_or_else(|| Error::SwarmBuildFailed("Should set session_manager or key".into()))?;
let dht = PeerRing::new_with_storage(dht_did, self.dht_succ_max, self.dht_storage);
Ok(Swarm {
pending_transports: Arc::new(Mutex::new(vec![])),
transports: MemStorage::new(),
transport_event_channel: Channel::new(),
ice_servers: self.ice_servers,
external_address: self.external_address,
dht: Arc::new(dht),
services: self.services,
session_manager,
})
}pub fn renew(
&self,
sig: &[u8],
auth_info: &AuthorizedInfo,
key: &SecretKey
) -> Result<&Self>
sourcepub fn session_key(&self) -> Result<SecretKey>
pub fn session_key(&self) -> Result<SecretKey>
Examples found in repository?
More examples
sourcepub fn session(&self) -> Result<Session>
pub fn session(&self) -> Result<Session>
Examples found in repository?
More examples
src/message/payload.rs (line 88)
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
pub fn new(
data: T,
session_manager: &SessionManager,
origin_verification_gen: OriginVerificationGen,
relay: MessageRelay,
) -> Result<Self> {
let ts_ms = get_epoch_ms();
let ttl_ms = DEFAULT_TTL_MS;
let msg = &MessageVerification::pack_msg(&data, ts_ms, ttl_ms)?;
let tx_id = uuid::Uuid::new_v4();
let addr = session_manager.authorizer()?;
let verification = MessageVerification {
session: session_manager.session()?,
sig: session_manager.sign(msg)?,
ttl_ms,
ts_ms,
};
let origin_verification = match origin_verification_gen {
OriginVerificationGen::Origin => verification.clone(),
OriginVerificationGen::Stick(ov) => ov,
};
Ok(Self {
data,
tx_id,
addr,
verification,
origin_verification,
relay,
})
}sourcepub fn sign(&self, msg: &str) -> Result<Vec<u8>>
pub fn sign(&self, msg: &str) -> Result<Vec<u8>>
Examples found in repository?
src/message/payload.rs (line 89)
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
pub fn new(
data: T,
session_manager: &SessionManager,
origin_verification_gen: OriginVerificationGen,
relay: MessageRelay,
) -> Result<Self> {
let ts_ms = get_epoch_ms();
let ttl_ms = DEFAULT_TTL_MS;
let msg = &MessageVerification::pack_msg(&data, ts_ms, ttl_ms)?;
let tx_id = uuid::Uuid::new_v4();
let addr = session_manager.authorizer()?;
let verification = MessageVerification {
session: session_manager.session()?,
sig: session_manager.sign(msg)?,
ttl_ms,
ts_ms,
};
let origin_verification = match origin_verification_gen {
OriginVerificationGen::Origin => verification.clone(),
OriginVerificationGen::Stick(ov) => ov,
};
Ok(Self {
data,
tx_id,
addr,
verification,
origin_verification,
relay,
})
}Examples found in repository?
src/message/payload.rs (line 86)
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
pub fn new(
data: T,
session_manager: &SessionManager,
origin_verification_gen: OriginVerificationGen,
relay: MessageRelay,
) -> Result<Self> {
let ts_ms = get_epoch_ms();
let ttl_ms = DEFAULT_TTL_MS;
let msg = &MessageVerification::pack_msg(&data, ts_ms, ttl_ms)?;
let tx_id = uuid::Uuid::new_v4();
let addr = session_manager.authorizer()?;
let verification = MessageVerification {
session: session_manager.session()?,
sig: session_manager.sign(msg)?,
ttl_ms,
ts_ms,
};
let origin_verification = match origin_verification_gen {
OriginVerificationGen::Origin => verification.clone(),
OriginVerificationGen::Stick(ov) => ov,
};
Ok(Self {
data,
tx_id,
addr,
verification,
origin_verification,
relay,
})
}
pub fn new_send(
data: T,
session_manager: &SessionManager,
next_hop: Did,
destination: Did,
) -> Result<Self> {
let relay = MessageRelay::new(
RelayMethod::SEND,
vec![session_manager.authorizer()?],
None,
Some(next_hop),
destination,
);
Self::new(data, session_manager, OriginVerificationGen::Origin, relay)
}More examples
src/transports/default/transport.rs (line 482)
446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485
async fn get_handshake_info(
&self,
session_manager: &SessionManager,
kind: RTCSdpType,
services: HashSet<PeerService>,
) -> Result<Encoded> {
tracing::trace!("prepareing handshake info {:?}", kind);
let sdp = match kind {
RTCSdpType::Answer => self.get_answer().await?,
RTCSdpType::Offer => self.get_offer().await?,
kind => {
let mut sdp = self.get_offer().await?;
sdp.sdp_type = kind;
sdp
}
};
let local_candidates_json = join_all(
self.pending_candidates
.lock()
.await
.iter()
.map(async move |c| c.clone().to_json().unwrap().into()),
)
.await;
if local_candidates_json.is_empty() {
return Err(Error::FailedOnGatherLocalCandidate);
}
let data = TricklePayload {
sdp: serde_json::to_string(&sdp).unwrap(),
candidates: local_candidates_json,
services: services.into_iter().collect_vec(),
};
tracing::trace!("prepared handshake info :{:?}", data);
let resp = MessagePayload::new_direct(
data,
session_manager,
session_manager.authorizer()?.to_owned(), // This is a fake destination
)?;
Ok(resp.encode()?)
}