Commit graph

1083 commits

Author SHA1 Message Date
Matt Corallo
85f33345ab Move test shuffling to js/testvectors.js 2014-07-23 20:29:45 -04:00
Matt Corallo
0088721343 Move AXOLOTL test vectors to js/testvectors.js 2014-07-23 18:22:16 -04:00
Matt Corallo
07f79cb4bf Fix tester 2014-07-23 03:59:22 -04:00
Matt Corallo
7013c5e031 First steps towards BOB test vectors 2014-07-23 03:57:50 -04:00
Matt Corallo
ebcfd4736e Fix session lookup in duplicate prekeymessage case 2014-07-23 03:36:11 -04:00
Matt Corallo
5040bfbe44 Fix pending verifications 2014-07-23 02:53:31 -04:00
Matt Corallo
a76ae2f1f8 Add verification tags, make alice tests strict(ish) again 2014-07-23 02:49:47 -04:00
Matt Corallo
287b55120d First cut of ALICE test vectors 2014-07-23 01:49:13 -04:00
Matt Corallo
a8908646aa Fix null flags in v3 2014-07-22 21:38:48 -04:00
Matt Corallo
0d4ae6a8cb Fix undefined variable in for's (browser update to strict mode?) 2014-07-22 21:33:35 -04:00
Matt Corallo
de83429962 v3 steps 2014-07-22 21:23:52 -04:00
Matt Corallo
66bf371aa7 Use staging server (ie update to server keys v2) and protocolv3 2014-07-22 21:23:35 -04:00
Matt Corallo
53f8ac9ad9 Generate signed keys (breaks registration) 2014-07-22 21:23:35 -04:00
Matt Corallo
4c3ee6f23b Compare equality w/o getString (in the future) 2014-07-22 21:23:35 -04:00
Matt Corallo
3190fe97f9 HMAC Update for Protov3 2014-07-22 21:23:35 -04:00
Matt Corallo
b5c6e3d101 JS ed25519 2014-07-20 16:49:40 -04:00
Matt Corallo
b94ba6b726 USE_NACL = true 2014-07-20 16:49:40 -04:00
Matt Corallo
7d27df9868 Report testing done 2014-07-20 16:29:42 -04:00
Matt Corallo
a2da4fffb0 Remove useless function 2014-07-17 18:13:32 -04:00
Marco
13a9329bcf improved number validation (based on google's libphonenumber) 2014-06-29 16:39:05 -07:00
Matt Corallo
92514ad08f Fix missing baseKey 2014-06-09 20:27:09 -04:00
Matt Corallo
ceca03c5d0 Close chainKey.key 2014-06-09 20:27:09 -04:00
lilia
ce3c5eb909 Refactor conversation list view
Pull apart UI classes for displaying and creating threads.
Also get rid of ugly alert popup in favor of Whisper.notify.
2014-06-07 16:31:40 -07:00
Matt Corallo
1ec6b0aed6 Better TODO wording 2014-06-05 22:34:01 -04:00
Matt Corallo
12a849957a Refresh groups on (probably) new identity key (maybe more often?) 2014-06-05 22:28:30 -04:00
Matt Corallo
0f126fc0f8 Keep track of number->groups, add TODO to refresh, other tweaks 2014-06-05 21:05:42 -04:00
Matt Corallo
e495e8e3db Group updates to match real protocol and get better checking 2014-06-05 19:20:09 -04:00
lilia
ec900e0ea4 Fix double display of outgoing messages 2014-06-03 20:05:41 -07:00
lilia
a09a4776d3 Fix incoming message display/storage
There were a few problems.

1. The message event was being triggered in background, not popup
2. The initial message/thread fetches from localStorage were mis-ordered
3. The timestamp wasn't being extracted from the right place
4. #3 caused messages to fail validation and not be saved

1-3 are fixed. To address 4 I switched validate() to log a warning
instead of preventing save.
2014-06-03 19:57:03 -07:00
Matt Corallo
c90b9a5c59 Some group update verification 2014-06-03 22:23:51 -04:00
Matt Corallo
b1ec02fa92 Group API 2014-06-03 21:09:04 -04:00
Matt Corallo
c953c6c16d closeSession 2014-06-03 17:44:30 -04:00
Matt Corallo
d0fd3e94d8 sendMessage refactor, initial group stuff (breaks message storage) 2014-06-03 15:28:30 -04:00
Matt Corallo
fb2aa6144c Merge pull request #45 from codedust/extractchrome
moved some chromium-specific code into chromium.js
2014-06-02 00:41:51 +00:00
Marco
5cddcb59aa improved some css for options.html 2014-06-01 22:31:19 +02:00
Marco
69ba6581b0 moved some chromium-specific code into chromium.js (using extension.navigator namespace) 2014-06-01 21:33:58 +02:00
Matt Corallo
cf35b7056f Retry API, standardize <script> list 2014-06-01 13:39:35 -04:00
Matt Corallo
8f49d201e6 Fix longstanding(?) attachment bug 2014-05-31 13:33:41 -04:00
Matt Corallo
c2d1d816f2 Save sessions in deviceObjects, test using fake_api, minor tweaks 2014-05-31 13:28:46 -04:00
Matt Corallo
1724d122d3 More typos from me being too tired 2014-05-28 04:33:01 +02:00
Matt Corallo
5cea7b6857 Few typos blocking registration 2014-05-28 04:03:23 +02:00
Matt Corallo
eb80a10ed1 Fix new function(){}() typo (thanks codedust on GitHub) 2014-05-28 03:53:43 +02:00
Matt Corallo
aec36468bc Request new keys (largely untested) 2014-05-28 03:45:40 +02:00
Matt Corallo
56433bd9af One more tiny error refactor 2014-05-28 03:45:40 +02:00
Matt Corallo
68131a6e2a Add human readable version of errors 2014-05-28 03:45:40 +02:00
Matt Corallo
753a950816 Redo registration process 2014-05-28 03:45:40 +02:00
lilia
83508abab8 Thread model and UI improvements
Adds thread model/collection for managing conversation-level state, such
as unreadCounts, group membership, thread order, etc... plus various UI
improvements enabled by thread model, including an improved compose
flow, and thread-destroy button.

Adds Whisper.notify for presenting messages to the user in an orderly
fashion. Currently using a growl-style fade in/out effect.

Also some housekeeping:
Cut up views into separate files.
Partial fix for formatTimestamp.
Tweaked buttons and other styles.
2014-05-26 15:33:45 -07:00
Matt Corallo
2d12a33ead Fix decoding/protos/tests 2014-05-26 01:48:41 +02:00
Matt Corallo
ac48d552fa Fix some bugs recently introduced 2014-05-26 00:45:55 +02:00
Matt Corallo
21b95ce1d3 Re-create some of d9bf0a4, which was broken and reverted in 1e6720 2014-05-26 00:45:55 +02:00
Matt Corallo
18f1eed70f Some number verification refactor stuff 2014-05-26 00:45:55 +02:00
Matt Corallo
d387cd22f5 s/getEncodedNumber// (with XXXs) 2014-05-26 00:45:55 +02:00
Matt Corallo
9aae93fc99 textsecure.protos 2014-05-26 00:45:55 +02:00
lilia
1e672030de Fix a couple things broken in d9bf0a4
Slight revert from said commit. We really do need the
IncomingPushMessageSignal protobuf at the UI layer, mostly because
it contains the 'source' attribute, without which we don't know
who sent the message.

Also fix a crash when there are no attachments on a message.
2014-05-22 21:59:34 -07:00
lilia
de0a1df3ca Fix broken registration flow
Better load the functions defined in chromium.js before trying to use
them. Hmm.. also, options.js should probably wait for the DOM to load
before it tries to initialize things in it.
2014-05-20 21:39:29 -07:00
Matt Corallo
d9bf0a41fb textsecure.storage, chromium.js 2014-05-20 22:21:07 -04:00
Matt Corallo
ee2f43aba4 Fix, display (image) attachments 2014-05-19 03:07:01 -04:00
Matt Corallo
be82547ea1 Move message saving out of helpers.js 2014-05-18 19:50:30 -04:00
lilia
3bd559bbaa DRY up PushMessageContentProtobuf construction
Messages now know how to protobuf-ify themselves.
2014-05-18 14:33:18 -07:00
lilia
2601c3cc3a Rename some things to be a little more semantic
The 'sender' field actually holds the recipient for outgoing
messages. Rename that field to 'person', indicating the 2nd
party generically.

Also decouples the thread name from thread recipients at the
view layer, in preparation for group support.
2014-05-18 13:49:11 -07:00
Marco
14ebef70cb fixed 'TypeError: Promise.resolve is not a constructor' in Firefox 2014-05-18 21:58:53 +02:00
lilia
810aabf2a6 Save messages from 'Compose' UI 2014-05-17 20:42:08 -07:00
lilia
b852e68290 Backbone message storage and views
Adds Backbone-based Whisper.Messages model/collection with local storage
extension. Saves sent and received messages in Whisper.Messages instead
of message map. This will assign a unique id to the message and save it
to localStorage.

Adds Backbone-based view to popup.html
  Automatically updates itself when new messages are saved to
  Whisper.Messages db from the background page.

Added some shiny new styles, and started splitting up css into multiple
files for sanity's sake.
2014-05-17 20:26:50 -07:00
lilia
170257dafb Fix subscribeToPush is not defined 2014-05-17 14:15:13 -07:00
lilia
ed3aa9667d Fix undefined URL_BASE in background.js
Sieze an opportunity to move code out of the helpers.js.
Only 616 more lines to go.
2014-05-17 14:02:35 -07:00
Matt Corallo
4efb8a2616 Fix NaCL (maybe it should be removed?) 2014-05-17 01:55:32 -04:00
Matt Corallo
6bc19ef558 More namespacing 2014-05-17 01:53:58 -04:00
Matt Corallo
05101b69b0 Some initial helpers.js namespaceing 2014-05-17 00:54:12 -04:00
Matt Corallo
07a23f0759 Fix attachments 2014-05-15 01:02:15 -04:00
Matt Corallo
3103eaa192 Commit broken attachment loader (S3 403s I can't figure out...) 2014-05-15 00:26:37 -04:00
Matt Corallo
ea1bd535dc Fix interpretation of prekeymsg.registrationId 2014-05-14 23:26:46 -04:00
Matt Corallo
2f16b884a5 Fixup last commit 2014-05-14 18:26:07 -04:00
Matt Corallo
e3097746c0 Check registration ID on prekeymsg 2014-05-14 18:15:46 -04:00
Matt Corallo
76e7dcb77d Clean up session retreival (fixes #30) 2014-05-14 17:21:54 -04:00
Matt Corallo
8d408e6d8f THOUGH SALL USE TABSTOP AND SHIFTWIDTH 4 (so that indents read right) 2014-05-14 17:21:49 -04:00
Matt Corallo
ae41a5df71 Merge remote-tracking branch 'lilia/master' 2014-05-14 17:21:40 -04:00
Matt Corallo
d5491bda0b Stop an attacker from closing a session that isn't theirs (#29) 2014-05-14 14:27:08 -04:00
Matt Corallo
3a812d4958 Multi-session storage for close/regular message race conditions 2014-05-14 05:10:05 -04:00
Matt Corallo
cdebc8afb4 Also delete chain key 2014-05-14 03:33:24 -04:00
Matt Corallo
08093a206d Fix old chain deletion 2014-05-14 03:02:47 -04:00
Matt Corallo
605863ffa3 Fix decryption of large messages (eg w/ attachments) 2014-05-14 02:08:01 -04:00
lilia
e3b00e08f3 Generate and submit registrationId, fixes #25
If we're expecting to get registrationIds from others, it's only fair
that we also supply our own.
2014-05-13 20:10:30 -07:00
Matt Corallo
5752a772d1 promises, type conversion errors 2014-05-13 15:15:45 -04:00
Matt Corallo
caa363b929 FINALLY report crypto, etc errors to console thanks to promises... 2014-05-13 04:40:29 -04:00
Matt Corallo
a7de5e2159 last(?) round of crypto.js AB-type-conversion changes, new tests 2014-05-13 01:52:25 -04:00
lilia
1d95fcc027 Fix exception in options.js on first run
Fixes #22 Uncaught ReferenceError: getRandomBytes is not defined
options.js:41
2014-05-12 13:45:52 -07:00
Matt Corallo
5583e82a20 Refactor some low-level crypto things 2014-05-09 03:43:23 -04:00
Matt Corallo
905357a2e1 More wholesale conversion to promises 2014-05-09 03:20:54 -04:00
Matt Corallo
efe2fa1021 Move crypto things to js/crypto.js 2014-05-09 02:00:49 -04:00
Matt Corallo
2b21111d7b Fix/test pre key generation 2014-05-09 01:35:16 -04:00
Matt Corallo
3fffbad11a Fix now-broken test cases and change lots of things over to promises 2014-05-06 23:46:32 -04:00
lilia
41d50d7480 Lilia's Webcrypto branch rebased and a few very tiny tweaks 2014-05-06 23:45:55 -04:00
Matt Corallo
1137f9d711 Add TODO file showing what still needs to be done 2014-05-04 17:07:25 -04:00
Matt Corallo
138581701c tweak ui things a tiny bit 2014-05-04 02:50:34 -04:00
Matt Corallo
3e60368a16 LGPL license (I'd like to be an axolotl/TS JS lib in the future) 2014-05-04 02:34:13 -04:00
Matt Corallo
01c4f3dd56 Fix ALL the things! 2014-05-04 02:21:31 -04:00
Matt Corallo
d213cb0598 I like stack traces, also, fix identity key bit fiddle crap 2014-05-04 02:21:31 -04:00
Matt Corallo
705f8ce818 generic-ize 2014-05-04 02:21:31 -04:00
Matt Corallo
87c19c0c94 Another step forward 2014-05-04 02:21:31 -04:00
Ventero
3d7db4dbc3 Correctly extract string data for password.
btoa expects a string argument, so when passing it the ArrayBuffer
object returned by getRandomBytes(), it's converted to a string by
calling .toString() on it. This always results in "[object ArrayBuffer]",
effectively resulting in a completely non-random password.
2014-04-17 15:56:50 +02:00
Matt Corallo
cf79b41cc4 Merge pull request #8 from liliakai/master
Fix click handler
2014-04-09 02:07:28 -04:00
lilia
68027dadd4 Fix click handler
var i was being bound in the closure of this click handler, then
incremented by the for loop, such that its value was 1 by the time the
handler was called, so we were grabbing the message body from, e.g.
$("#input1") when we wanted $("#input0").
2014-04-08 23:03:34 -07:00
Matt Corallo
d56c3e1051 Add bit for !identityKey and commit wip test-cases 2014-04-07 13:11:01 -04:00
Matt Corallo
244aa8df92 Fix NaCL priv calc code 2014-04-07 13:11:01 -04:00
lilia
984a76eeb1 Fix crashing send button
destinations is dead. all hail group.members.
2014-04-06 14:26:38 -07:00
lilia
49cdf04065 Work on message styling
Replicates some styles from the android app.
2014-04-06 14:26:09 -07:00
Matt Corallo
e492aae172 Fix popup refreshing on send 2014-04-04 05:50:46 -04:00
Matt Corallo
732f9ac089 ping server to keep connection open 2014-04-04 04:47:04 -04:00
lilia
a67ab3a46f Make popup a little nicer to look at
Also add a little auto-suggestion contacts list. For now it just
contains your own number.
2014-04-02 23:11:34 -07:00
Matt Corallo
2ae5628122 Send-to-self works =D 2014-03-26 15:05:09 -04:00
Matt Corallo
136a8941c1 Things:
* key API changes moxie made because he disliked the other API
 * remove atmosphere
 * Fix some bugs in the send path, update for new send API
 * Send HTML
2014-03-25 15:27:19 -04:00
Matt Corallo
000a5e1440 Fix up a few things so registration works 2014-03-23 13:19:53 -04:00
Matt Corallo
832daf54db tabstabstabstabstabs 2014-03-22 18:45:01 -04:00
lilia
be52e4c3a4 Fix infinite recursion in ensureStringed(Array)
To ensureStringed(thing), you must first ensureStringed(thing)...
This was causing an infintel loop in multidevice mode.
2014-03-20 00:57:29 -07:00
lilia
fe1b5435aa Add FakeWhisperAPI for serverless development
When included after api.js, fake_api.js inits a FakeWhisperAPI.

FakeWhisperAPI inherits the methods of API, overrides a few, and
then usurps its place as the one true API.

Single device mode successfully "registers" against FakeAPI. Sadly,
multidevice mode has a recursive loop somewhere that makes the callstack
asplode.
2014-03-20 00:57:29 -07:00
lilia
6934ba0b92 Refactor Server API functions
The details of the server API are now mostly relegated to api.js, and
accessed through the API container object, improving modularity and
readability, and setting us up to derive a FakeAPI for serverless
development.
2014-03-15 19:57:40 -07:00
Matt Corallo
1c20dba67f Merge pull request #2 from liliakai/master
Make booleans stringable
2014-03-11 11:13:34 -07:00
lilia
0d5d14da6a Fix the clickies 2014-03-10 22:53:06 -07:00
lilia
820d67a0ba Avoid jsonifying undefined data
For example, when requesting a verification code, there is no JSON data
to send.
2014-03-10 19:09:10 -07:00
lilia
0fff393ebf Make booleans stringable
Fixes "unsure of how to jsonify object of type boolean",
e.g., supportsSms: false
2014-03-10 15:50:28 -07:00
Matt Corallo
fee6a69083 Optional curve25519 in js 2014-03-09 20:32:00 -04:00
Matt Corallo
85f419b923 Passing test-cases (fscking type conversions...) 2014-03-08 20:23:24 -05:00
Matt Corallo
e932536dfd Untested send-encrypted support 2014-03-08 19:15:36 -05:00
Matt Corallo
fe570c754a Genericify initSession (and break it for alice) 2014-03-08 19:08:40 -04:00
Matt Corallo
611d5329d3 Pass tests 2014-03-08 00:13:53 -04:00
Matt Corallo
6e0fe271ab Few more steps 2014-03-06 17:44:59 -04:00
Matt Corallo
465bdf2bd3 Abstract out lots of CryptoJS 2014-03-06 15:01:23 -04:00
Matt Corallo
dd3dd11b32 Updates, more tests, etc 2014-03-06 14:18:11 -04:00
Matt Corallo
da1b021972 Fix up initial ratchet stuff 2014-03-06 00:17:09 -04:00
Matt Corallo
3c603c72b4 Lots of updates post-test-cases 2014-03-04 21:31:15 -04:00
Matt Corallo
e0d0df3b4a ECDHE through NaCL 2014-01-22 07:37:14 +00:00
Matt Corallo
8db3885659 Updates, NaCL 2014-01-22 06:23:41 +00:00
Matt Corallo
eec4c66ef6 Fixup dir structure 2014-01-22 03:28:35 +00:00