mirror of
https://github.com/signalapp/libsignal.git
synced 2026-04-26 01:35:22 +02:00
protocol: Clean up pending Kyber pre-keys from sessions
This commit is contained in:
@@ -68,6 +68,7 @@ pub async fn create_pre_key_bundle<R: Rng + CryptoRng>(
|
||||
) -> Result<PreKeyBundle, SignalProtocolError> {
|
||||
let pre_key_pair = KeyPair::generate(&mut csprng);
|
||||
let signed_pre_key_pair = KeyPair::generate(&mut csprng);
|
||||
let kyber_pre_key_pair = kem::KeyPair::generate(kem::KeyType::Kyber1024);
|
||||
|
||||
let signed_pre_key_public = signed_pre_key_pair.public_key.serialize();
|
||||
let signed_pre_key_signature = store
|
||||
@@ -76,9 +77,17 @@ pub async fn create_pre_key_bundle<R: Rng + CryptoRng>(
|
||||
.private_key()
|
||||
.calculate_signature(&signed_pre_key_public, &mut csprng)?;
|
||||
|
||||
let kyber_pre_key_public = kyber_pre_key_pair.public_key.serialize();
|
||||
let kyber_pre_key_signature = store
|
||||
.get_identity_key_pair()
|
||||
.await?
|
||||
.private_key()
|
||||
.calculate_signature(&kyber_pre_key_public, &mut csprng)?;
|
||||
|
||||
let device_id: u32 = csprng.gen();
|
||||
let pre_key_id: u32 = csprng.gen();
|
||||
let signed_pre_key_id: u32 = csprng.gen();
|
||||
let kyber_pre_key_id: u32 = csprng.gen();
|
||||
|
||||
let pre_key_bundle = PreKeyBundle::new(
|
||||
store.get_local_registration_id().await?,
|
||||
@@ -89,6 +98,11 @@ pub async fn create_pre_key_bundle<R: Rng + CryptoRng>(
|
||||
signed_pre_key_signature.to_vec(),
|
||||
*store.get_identity_key_pair().await?.identity_key(),
|
||||
)?;
|
||||
let pre_key_bundle = pre_key_bundle.with_kyber_pre_key(
|
||||
kyber_pre_key_id.into(),
|
||||
kyber_pre_key_pair.public_key.clone(),
|
||||
kyber_pre_key_signature.to_vec(),
|
||||
);
|
||||
|
||||
store
|
||||
.save_pre_key(
|
||||
@@ -111,6 +125,17 @@ pub async fn create_pre_key_bundle<R: Rng + CryptoRng>(
|
||||
)
|
||||
.await?;
|
||||
|
||||
store
|
||||
.save_kyber_pre_key(
|
||||
kyber_pre_key_id.into(),
|
||||
&KyberPreKeyRecord::new(
|
||||
kyber_pre_key_id.into(),
|
||||
43,
|
||||
&kyber_pre_key_pair,
|
||||
&kyber_pre_key_signature,
|
||||
),
|
||||
)
|
||||
.await?;
|
||||
Ok(pre_key_bundle)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user