/** * Send a RoomKeyRequest to a list of recipients * * @param message the message * @param recipients the recipients. * @param transactionId the transaction id * @param callback the asynchronous callback. */ private void sendMessageToDevices(final Map<String, Object> message, List<Map<String, String>> recipients, String transactionId, final ApiCallback<Void> callback) { MXUsersDevicesMap<Map<String, Object>> contentMap = new MXUsersDevicesMap<>(); for (Map<String, String> recipient : recipients) { contentMap.setObject(message, recipient.get("userId"), recipient.get("deviceId")); } mSession.getCryptoRestClient().sendToDevice(Event.EVENT_TYPE_ROOM_KEY_REQUEST, contentMap, transactionId, callback); } }
mSession.getCryptoRestClient().uploadKeys(null, oneTimeJson, mMyDevice.deviceId, new SimpleApiCallback<KeysUploadResponse>(callback) { @Override public void onSuccess(final KeysUploadResponse info) {
} else { mSession.getCryptoRestClient().uploadKeys(null, null, mMyDevice.deviceId, new ApiCallback<KeysUploadResponse>() { private void onFailed(String errorMessage) { if (null != errorMessage) {
/** * Upload my user's device keys. * This method must called on getEncryptingThreadHandler() thread. * The callback will called on UI thread. * * @param callback the asynchronous callback */ private void uploadDeviceKeys(ApiCallback<KeysUploadResponse> callback) { // Prepare the device keys data to send // Sign it mMyDevice.signatures = signObject(JsonUtils.getCanonicalizedJsonString(mMyDevice.signalableJSONDictionary())); // For now, we set the device id explicitly, as we may not be using the // same one as used in login. mSession.getCryptoRestClient().uploadKeys(mMyDevice.JSONDictionary(), null, mMyDevice.deviceId, callback); }
mSession.getCryptoRestClient().claimOneTimeKeysForUsersDevices(usersDevicesToClaim, new ApiCallback<MXUsersDevicesMap<MXKey>>() { @Override public void onSuccess(final MXUsersDevicesMap<MXKey> oneTimeKeys) {
mxSession.getCryptoRestClient() .downloadKeysForUsers(filteredUsers, mxSession.getDataHandler().getStore().getEventStreamToken(), new ApiCallback<KeysQueryResponse>() { @Override
@Test public void test02_testOneTimeKeys() throws Exception { Context context = InstrumentationRegistry.getContext(); final SessionTestParams testParams = new SessionTestParams(true); final MXSession bobSession = mTestHelper.createAccount(TestConstants.USER_BOB, testParams); final Map<String, Object> results = new HashMap<>(); final Map<String, Object> otks = new HashMap<>(); otks.put("curve25519:AAAABQ", "ueuHES/Q0P1MZ4J3IUpC8iQTkgQNX66ZpxVLUaTDuB8"); otks.put("curve25519:AAAABA", "PmyaaB68Any+za9CuZXzFsQZW31s/TW6XbAB9akEpQs"); CountDownLatch lock1 = new CountDownLatch(1); bobSession.getCryptoRestClient().uploadKeys(null, otks, "dev1", new TestApiCallback<KeysUploadResponse>(lock1) { @Override public void onSuccess(KeysUploadResponse keysUploadResponse) { results.put("keysUploadResponse", keysUploadResponse); super.onSuccess(keysUploadResponse); } }); mTestHelper.await(lock1); KeysUploadResponse keysUploadResponse = (KeysUploadResponse) results.get("keysUploadResponse"); Assert.assertNotNull(keysUploadResponse); Assert.assertNotNull(keysUploadResponse.oneTimeKeyCounts); Assert.assertEquals(1, keysUploadResponse.oneTimeKeyCounts.size()); Assert.assertEquals(2, keysUploadResponse.oneTimeKeyCountsForAlgorithm("curve25519")); Assert.assertEquals(0, keysUploadResponse.oneTimeKeyCountsForAlgorithm("deded")); bobSession.clear(context); }
bobSession.getCryptoRestClient().uploadKeys(null, otks, "dev1", new TestApiCallback<KeysUploadResponse>(lock1) { @Override public void onSuccess(KeysUploadResponse keysUploadResponse) { aliceSession.getCryptoRestClient().claimOneTimeKeysForUsersDevices(usersDevicesKeyTypesMap, new TestApiCallback<MXUsersDevicesMap<MXKey>>(lock2) { @Override public void onSuccess(MXUsersDevicesMap<MXKey> usersDevicesMap) {
bobSession.getCryptoRestClient().uploadKeys(bobDevice.JSONDictionary(), null, "dev1", new TestApiCallback<KeysUploadResponse>(lock0) { @Override public void onSuccess(KeysUploadResponse keysUploadResponse) { bobSession.getCryptoRestClient().downloadKeysForUsers(Arrays.asList(bobSession.getMyUserId()), null, new TestApiCallback<KeysQueryResponse>(lock1) { @Override public void onSuccess(KeysQueryResponse keysQueryResponse) {