Merge pull request #2020 from matrix-org/florianduros/bindings/add-missing-key-identity

Bindings JS: Add missing keys to `UserIdentity` and `OwnUserIdentity`
This commit is contained in:
Damir Jelić
2023-06-07 10:00:20 +02:00
committed by GitHub
3 changed files with 61 additions and 0 deletions

View File

@@ -1,3 +1,7 @@
# Next version
- Add `masterKey`, `userSigningKey`, `selfSigningKey` to `UserIdentity` and `OwnUserIdentity`
# v0.1.0-alpha.9
- Extend `OlmDevice.markRequestAsSent` to accept responses to

View File

@@ -85,6 +85,28 @@ impl OwnUserIdentity {
future_to_promise(async move { Ok(me.trusts_our_own_device().await?) })
}
/// Get the master key of the identity.
#[wasm_bindgen(getter, js_name = "masterKey")]
pub fn master_key(&self) -> Result<String, JsError> {
let master_key = self.inner.master_key().as_ref();
Ok(serde_json::to_string(master_key)?)
}
/// Get the self-signing key of the identity.
#[wasm_bindgen(getter, js_name = "selfSigningKey")]
pub fn self_signing_key(&self) -> Result<String, JsError> {
let self_signing_key = self.inner.self_signing_key().as_ref();
Ok(serde_json::to_string(self_signing_key)?)
}
/// Get the user-signing key of the identity, this is only present for our
/// own user identity..
#[wasm_bindgen(getter, js_name = "userSigningKey")]
pub fn user_signing_key(&self) -> Result<String, JsError> {
let user_signing_key = self.inner.user_signing_key().as_ref();
Ok(serde_json::to_string(user_signing_key)?)
}
}
/// Struct representing a cross signing identity of a user.
@@ -169,4 +191,18 @@ impl UserIdentity {
Ok(serde_json::to_string(&me.verification_request_content(methods).await)?)
}))
}
/// Get the master key of the identity.
#[wasm_bindgen(getter, js_name = "masterKey")]
pub fn master_key(&self) -> Result<String, JsError> {
let master_key = self.inner.master_key().as_ref();
Ok(serde_json::to_string(master_key)?)
}
/// Get the self-signing key of the identity.
#[wasm_bindgen(getter, js_name = "selfSigningKey")]
pub fn self_signing_key(&self) -> Result<String, JsError> {
let self_signing_key = self.inner.self_signing_key().as_ref();
Ok(serde_json::to_string(self_signing_key)?)
}
}

View File

@@ -601,6 +601,27 @@ describe(OlmMachine.name, () => {
const identity = await m.getIdentity(user);
expect(identity).toBeInstanceOf(OwnUserIdentity);
const masterKey = JSON.parse(identity.masterKey);
const selfSigningKey = JSON.parse(identity.selfSigningKey);
const userSigningKey = JSON.parse(identity.userSigningKey);
const masterObjKeys = Object.keys(masterKey.keys);
const keyFromMasterKey = masterKey.keys[masterObjKeys[0]];
// self signing key exists
expect(Object.keys(selfSigningKey.keys).length).toBe(1);
// self signing key is different from the master key
expect(selfSigningKey.keys[keyFromMasterKey]).not.toBeDefined();
const selfSigningObjKeys = Object.keys(selfSigningKey.keys);
const keyFromSelfSigningKey = masterKey.keys[selfSigningObjKeys[0]];
// user signing key exists
expect(Object.keys(userSigningKey.keys).length).toBe(1);
// user signing key is different from the master key
expect(userSigningKey.keys[keyFromMasterKey]).not.toBeDefined();
// user signing key is different from the self signing key
expect(userSigningKey.keys[keyFromSelfSigningKey]).not.toBeDefined();
const signatureUploadRequest = await identity.verify();
expect(signatureUploadRequest).toBeInstanceOf(SignatureUploadRequest);