diff --git a/src/encryption.js b/src/encryption.js
new file mode 100644
index 0000000000000000000000000000000000000000..dea454a3f3c47a06b0c493f0c7f910ddc9ddad0e
--- /dev/null
+++ b/src/encryption.js
@@ -0,0 +1,40 @@
+/*
+Copyright 2015 OpenMarket Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+'use strict';
+
+function enableEncyption(client, roomId, members) {
+    members = members.slice(0);
+    members.push(client.credentials.userId);
+    // TODO: Check the keys actually match what keys the user has.
+    // TODO: Don't redownload keys each time.
+    return client.downloadKeys(members, "forceDownload").then(function(res) {
+        return client.setRoomEncryption(roomId, {
+            algorithm: "m.olm.v1.curve25519-aes-sha2",
+            members: members,
+        });
+    })
+}
+
+function disableEncryption(client, roomId) {
+    return client.disableRoomEncryption(roomId);
+}
+
+
+module.exports = {
+    enableEncryption: enableEncyption,
+    disableEncryption: disableEncryption,
+}