Age | Commit message (Collapse) | Author |
|
|
|
WebAssembly support
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mostly because the standard emscripten docker image does not have
libjson-perl, but python always comes with json. But also because
it was impenetrable.
|
|
|
|
|
|
Call appropriate wrapper function
|
|
|
|
Change interface to allow the app to get the private part of the
key and instantiate a decryption object from just the private part
of the key.
Changes the function generating a key from random bytes to be
initialising a key with a private key (because it's exactly the
same thing). Exports & imports private key parts as ArrayBuffer at
JS level rather than base64 assuming we are moving that way in
general.
|
|
|
|
Remove trailing letter 'K's from the test pubkeys
|
|
base64 encoded newlines somehow?
|
|
|
|
Don't think this matters since there's no PkEncryption /
PkDecryption object being passed, but for the sake of consistency
|
|
|
|
|
|
|
|
So we only init the library once.
|
|
Change the interface again, hopefully this time a bit more normal.
Now we wrap the emscripten module completely and just expose the
high level objects.
The olm library export is now imported as normal (ie. returns
a module rather than a function returning a module) but has an
`init` method which *must* be called. This returns a promise
which resolves when the module is ready. It also rejects if the
module failed to set up, unlike before (and unlike the
promise-not-a-promise that emscripten returns).
Generally catch failures to init the module.
|
|
|
|
The closure compiler was just renaming the variable so it never
would have picked them up. Make it an extern so it knows what to do.
|
|
Quite a lot going on in this PR:
* Updates to support recent emscripten, switching to WASM which is now the default
* Use emscripten's MODULARIZE option rather than wrapping it ourself, since doing
so in pre-post js doesn't work anymore.
* Most changes are moving the emscripten runtime functions to top-level
calls rather than in the Module object.
* Get rid of duplicated NULL_BYTE_PADDING_LENGTH
* Fix ciphertext_length used without being declared
* Fix things that caused the closure compiler to error, eg. using
OLM_OPTIONS without a declaration.
* Wait until module is inited to do OLM_ERROR = olm_error()
The main BREAKING CHANGE here is that the module now needs to initialise
asyncronously (because it has to load the wasm file). require()ing olm
now gives a function which needs to be called to create an instance.
The resulting object has a promise-like then() method that can be used
to detect when the module is ready. (We could use MODULARIZE_INSTANCE
to return the module directly as before, rather than the function,
but then we don't get the .then() method).
|
|
Fix output buffer length check
|
|
...when generating a key in PkDecryption.
The pubkey is base64ed on the output, so will be longer.
|
|
|
|
This patch adds the ability to build the bindings without having a
globally installed Olm C library.
Provided that the C library is already built, the tests can be run now
with make test.
Signed-off-by: Damir Jelić <poljar@termina.org.uk>
|
|
This commit imports the python bindings from:
https://github.com/poljar/python-olm
The bindings are imported at commit c44b145818520d69eaaa350fb95afcb846125e0f
Minor modifications were made while importing:
- Removed travis config
- Removed Arch Linux PKGBUILD
- Removed the html docs, they can be rebuild by running make html in
the docs folder
- Slightly modified the README
The new bindings feature some improvements over the old ones:
- Python 2 and 3 support
- Automatic memory management
- Automatic memory clearing before it is freed
- Type signatures via the python typing module
- Full test coverage
- Properties are utilized where it makes sense (e.g. account.id)
Signed-off-by: Damir Jelić <poljar@termina.org.uk>
|
|
Signed-off-by: Damir Jelić <poljar@termina.org.uk>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|