diff options
Diffstat (limited to 'javascript/test')
-rw-r--r-- | javascript/test/megolm.spec.js | 73 | ||||
-rw-r--r-- | javascript/test/olm.spec.js | 101 | ||||
-rw-r--r-- | javascript/test/pk.spec.js | 122 | ||||
-rw-r--r-- | javascript/test/sas.spec.js | 62 |
4 files changed, 0 insertions, 358 deletions
diff --git a/javascript/test/megolm.spec.js b/javascript/test/megolm.spec.js deleted file mode 100644 index 241d4bd..0000000 --- a/javascript/test/megolm.spec.js +++ /dev/null @@ -1,73 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd -Copyright 2018 New Vector 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"; - -var Olm = require('../olm'); - -describe("megolm", function() { - var aliceSession, bobSession; - - beforeEach(function(done) { - Olm.init().then(function() { - aliceSession = new Olm.OutboundGroupSession(); - bobSession = new Olm.InboundGroupSession(); - - done(); - }); - }); - - afterEach(function() { - if (aliceSession !== undefined) { - aliceSession.free(); - aliceSession = undefined; - } - - if (bobSession !== undefined) { - bobSession.free(); - bobSession = undefined; - } - }); - - it("should encrypt and decrypt", function() { - aliceSession.create(); - expect(aliceSession.message_index()).toEqual(0); - bobSession.create(aliceSession.session_key()); - - var TEST_TEXT='têst1'; - var encrypted = aliceSession.encrypt(TEST_TEXT); - var decrypted = bobSession.decrypt(encrypted); - console.log(TEST_TEXT, "->", decrypted); - expect(decrypted.plaintext).toEqual(TEST_TEXT); - expect(decrypted.message_index).toEqual(0); - - TEST_TEXT='hot beverage: ☕'; - encrypted = aliceSession.encrypt(TEST_TEXT); - decrypted = bobSession.decrypt(encrypted); - console.log(TEST_TEXT, "->", decrypted); - expect(decrypted.plaintext).toEqual(TEST_TEXT); - expect(decrypted.message_index).toEqual(1); - - // shorter text, to spot buffer overruns - TEST_TEXT='☕'; - encrypted = aliceSession.encrypt(TEST_TEXT); - decrypted = bobSession.decrypt(encrypted); - console.log(TEST_TEXT, "->", decrypted); - expect(decrypted.plaintext).toEqual(TEST_TEXT); - expect(decrypted.message_index).toEqual(2); - }); -}); diff --git a/javascript/test/olm.spec.js b/javascript/test/olm.spec.js deleted file mode 100644 index a698314..0000000 --- a/javascript/test/olm.spec.js +++ /dev/null @@ -1,101 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd -Copyright 2018 New Vector 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"; - -var Olm = require('../olm'); - -if (!Object.keys) { - Object.keys = function(o) { - var k=[], p; - for (p in o) if (Object.prototype.hasOwnProperty.call(o,p)) k.push(p); - return k; - } -} - -describe("olm", function() { - var aliceAccount, bobAccount; - var aliceSession, bobSession; - - beforeEach(function(done) { - // This should really be in a beforeAll, but jasmine-node - // doesn't support that - Olm.init().then(function() { - aliceAccount = new Olm.Account(); - bobAccount = new Olm.Account(); - aliceSession = new Olm.Session(); - bobSession = new Olm.Session(); - - done(); - }); - }); - - afterEach(function() { - if (aliceAccount !== undefined) { - aliceAccount.free(); - aliceAccount = undefined; - } - - if (bobAccount !== undefined) { - bobAccount.free(); - bobAccount = undefined; - } - - if (aliceSession !== undefined) { - aliceSession.free(); - aliceSession = undefined; - } - - if (bobSession !== undefined) { - bobSession.free(); - bobSession = undefined; - } - }); - - it('should encrypt and decrypt', function() { - aliceAccount.create(); - bobAccount.create(); - - bobAccount.generate_one_time_keys(1); - var bobOneTimeKeys = JSON.parse(bobAccount.one_time_keys()).curve25519; - bobAccount.mark_keys_as_published(); - - var bobIdKey = JSON.parse(bobAccount.identity_keys()).curve25519; - - var otk_id = Object.keys(bobOneTimeKeys)[0]; - - aliceSession.create_outbound( - aliceAccount, bobIdKey, bobOneTimeKeys[otk_id] - ); - - var TEST_TEXT='têst1'; - var encrypted = aliceSession.encrypt(TEST_TEXT); - expect(encrypted.type).toEqual(0); - bobSession.create_inbound(bobAccount, encrypted.body); - bobAccount.remove_one_time_keys(bobSession); - var decrypted = bobSession.decrypt(encrypted.type, encrypted.body); - console.log(TEST_TEXT, "->", decrypted); - expect(decrypted).toEqual(TEST_TEXT); - - TEST_TEXT='hot beverage: ☕'; - encrypted = bobSession.encrypt(TEST_TEXT); - expect(encrypted.type).toEqual(1); - decrypted = aliceSession.decrypt(encrypted.type, encrypted.body); - console.log(TEST_TEXT, "->", decrypted); - expect(decrypted).toEqual(TEST_TEXT); - }); -}); diff --git a/javascript/test/pk.spec.js b/javascript/test/pk.spec.js deleted file mode 100644 index f212b96..0000000 --- a/javascript/test/pk.spec.js +++ /dev/null @@ -1,122 +0,0 @@ -/* -Copyright 2018, 2019 New Vector 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"; - -var Olm = require('../olm'); - -describe("pk", function() { - var encryption, decryption, signing; - - beforeEach(function(done) { - Olm.init().then(function() { - encryption = new Olm.PkEncryption(); - decryption = new Olm.PkDecryption(); - signing = new Olm.PkSigning(); - - done(); - }); - }); - - afterEach(function () { - if (encryption !== undefined) { - encryption.free(); - encryption = undefined; - } - if (decryption !== undefined) { - decryption.free(); - decryption = undefined; - } - if (signing !== undefined) { - signing.free(); - signing = undefined; - } - }); - - it('should import & export keys from private parts', function () { - var alice_private = new Uint8Array([ - 0x77, 0x07, 0x6D, 0x0A, 0x73, 0x18, 0xA5, 0x7D, - 0x3C, 0x16, 0xC1, 0x72, 0x51, 0xB2, 0x66, 0x45, - 0xDF, 0x4C, 0x2F, 0x87, 0xEB, 0xC0, 0x99, 0x2A, - 0xB1, 0x77, 0xFB, 0xA5, 0x1D, 0xB9, 0x2C, 0x2A - ]); - var alice_public = decryption.init_with_private_key(alice_private); - expect(alice_public).toEqual("hSDwCYkwp1R0i33ctD73Wg2/Og0mOBr066SpjqqbTmo"); - - var alice_private_out = decryption.get_private_key(); - expect(alice_private_out).toEqual(alice_private); - }); - - it('should encrypt and decrypt', function () { - var TEST_TEXT='têst1'; - var pubkey = decryption.generate_key(); - encryption.set_recipient_key(pubkey); - var encrypted = encryption.encrypt(TEST_TEXT); - var decrypted = decryption.decrypt(encrypted.ephemeral, encrypted.mac, encrypted.ciphertext); - console.log(TEST_TEXT, "->", decrypted); - expect(decrypted).toEqual(TEST_TEXT); - - TEST_TEXT='hot beverage: ☕'; - encryption.set_recipient_key(pubkey); - encrypted = encryption.encrypt(TEST_TEXT); - decrypted = decryption.decrypt(encrypted.ephemeral, encrypted.mac, encrypted.ciphertext); - console.log(TEST_TEXT, "->", decrypted); - expect(decrypted).toEqual(TEST_TEXT); - }); - - it('should pickle and unpickle', function () { - var TEST_TEXT = 'têst1'; - var pubkey = decryption.generate_key(); - encryption.set_recipient_key(pubkey); - var encrypted = encryption.encrypt(TEST_TEXT); - - var PICKLE_KEY = 'secret_key'; - var pickle = decryption.pickle(PICKLE_KEY); - - var new_decryption = new Olm.PkDecryption(); - var new_pubkey = new_decryption.unpickle(PICKLE_KEY, pickle); - expect(new_pubkey).toEqual(pubkey); - var decrypted = new_decryption.decrypt(encrypted.ephemeral, encrypted.mac, encrypted.ciphertext); - console.log(TEST_TEXT, "->", decrypted); - expect(decrypted).toEqual(TEST_TEXT); - new_decryption.free(); - }); - - it('should sign and verify', function () { - var seed = new Uint8Array([ - 0x77, 0x07, 0x6D, 0x0A, 0x73, 0x18, 0xA5, 0x7D, - 0x3C, 0x16, 0xC1, 0x72, 0x51, 0xB2, 0x66, 0x45, - 0xDF, 0x4C, 0x2F, 0x87, 0xEB, 0xC0, 0x99, 0x2A, - 0xB1, 0x77, 0xFB, 0xA5, 0x1D, 0xB9, 0x2C, 0x2A - ]); - - var TEST_TEXT = "We hold these truths to be self-evident, that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty and the pursuit of Happiness."; - //var seed = signing.generate_seed(); - var pubkey = signing.init_with_seed(seed); - var sig = signing.sign(TEST_TEXT); - - var util = new Olm.Utility(); - util.ed25519_verify(pubkey, TEST_TEXT, sig); - var verifyFailure; - try { - util.ed25519_verify(pubkey, TEST_TEXT, 'p' + sig.slice(1)); - } catch (e) { - verifyFailure = e; - } - expect(verifyFailure).not.toBeNull(); - util.free(); - }); -}); diff --git a/javascript/test/sas.spec.js b/javascript/test/sas.spec.js deleted file mode 100644 index 4ab4120..0000000 --- a/javascript/test/sas.spec.js +++ /dev/null @@ -1,62 +0,0 @@ -/* -Copyright 2018 New Vector 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. -*/ - -var Olm = require('../olm'); - -describe("sas", function() { - var alice, bob; - - beforeEach(async function(done) { - Olm.init().then(function() { - alice = new Olm.SAS(); - bob = new Olm.SAS(); - - done(); - }); - }); - - afterEach(function () { - if (alice !== undefined) { - alice.free(); - alice = undefined; - } - if (bob !== undefined) { - bob.free(); - bob = undefined; - } - }); - - it('should create matching SAS bytes', function () { - alice.set_their_key(bob.get_pubkey()); - bob.set_their_key(alice.get_pubkey()); - expect(alice.generate_bytes("SAS", 5).toString()).toEqual(bob.generate_bytes("SAS", 5).toString()); - }); - - it('should create matching MACs', function () { - alice.set_their_key(bob.get_pubkey()); - bob.set_their_key(alice.get_pubkey()); - expect(alice.calculate_mac("test", "MAC").toString()).toEqual(bob.calculate_mac("test", "MAC").toString()); - }); - - it('should fail to generate bytes if their key is not set', function () { - expect(alice.is_their_key_set()).toBeFalsy(); - expect(() => { - alice.generate_bytes("SAS", 5); - }).toThrow(); - alice.set_their_key(bob.get_pubkey()); - expect(alice.is_their_key_set()).toBeTruthy(); - }); -}); |