|
4 | 4 | [](https://www.npmjs.com/package/libomemo.js) |
5 | 5 | [](http://www.gnu.org/licenses/gpl-3.0.html) |
6 | 6 |
|
| 7 | +> **Note:** this library has not yet undergone a formal third-party security |
| 8 | +> audit. Review the code before relying on it, and please report any suspected |
| 9 | +> vulnerability privately as described in [`SECURITY.md`](./SECURITY.md). |
| 10 | +
|
7 | 11 | **libomemo.js** is a TypeScript implementation of the [OMEMO Multi-End Message and Object Encryption](https://xmpp.org/extensions/xep-0384.html) protocol for [XMPP](https://xmpp.org). |
8 | 12 | It provides ratcheting forward secrecy for synchronous and asynchronous messaging environments, enabling secure multi-device encrypted communication. |
9 | 13 |
|
@@ -320,10 +324,37 @@ Thank you to the [NLNet Foundation](https://nlnet.nl/) for sponsoring work on th |
320 | 324 | wrappers in `native/ed25519/additions/omemo_convert.c` follow its approach so the on-wire |
321 | 325 | identity-key encoding interoperates with libomemo-c-based clients such as Dino. |
322 | 326 |
|
| 327 | +## LLM and GenAI usage |
| 328 | + |
| 329 | +Large Language Models (DeepSeek 4 Pro, Qwen 3.7 max and Claude Opus 4.8) were used |
| 330 | +to assist with tasks such as writing code, editing text and research. |
| 331 | + |
| 332 | +**Where AI was not used:** no cryptographic primitive or protocol logic was |
| 333 | +designed or invented by an LLM. The cryptographic core derives from established, |
| 334 | +widely-reviewed sources: |
| 335 | + |
| 336 | +- [libsignal](https://github.com/signalapp/libsignal-protocol-javascript) for the Double Ratchet and X3DH |
| 337 | +- [libomemo-c](https://github.com/dino/libomemo-c) for the OMEMO 2 Curve25519 & Ed25519 operations |
| 338 | + |
| 339 | +AI assistance was limited to porting, tests, tooling and documentation. |
| 340 | + |
| 341 | +Correctness is checked independently of any AI: |
| 342 | + |
| 343 | +- the test suite runs on Node.js and in a real browser (via Playwright) against |
| 344 | + known-answer test vectors; |
| 345 | +- the omemo:2 wire format is pinned by a cross-implementation interop vector |
| 346 | + generated by libomemo-c (the C library [Dino](https://dino.im) uses): the |
| 347 | + suite decrypts libomemo-c's real ciphertexts and verifies its signatures, and |
| 348 | + the reverse direction (libomemo-c decrypting this library's output) is |
| 349 | + confirmed out of band. |
| 350 | + |
| 351 | +Any LLM-generated content is carefully and manually reviewed, as would any 3rd |
| 352 | +party contribution. A human maintainer remains responsible for every line |
| 353 | +regardless of how it was drafted. |
| 354 | + |
323 | 355 | ## License |
324 | 356 |
|
325 | 357 | Copyright 2015-2018 Open Whisper Systems |
326 | | - |
327 | 358 | Copyright 2022-2026 JC Brand |
328 | 359 |
|
329 | 360 | Licensed under the GPLv3: [http://www.gnu.org/licenses/gpl-3.0.html](http://www.gnu.org/licenses/gpl-3.0.html) |
0 commit comments