encrypt private messages end to end - #276
Conversation
|
Important Review skippedToo many files! This PR contains 127 files, which is 27 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (4)
📒 Files selected for processing (127)
You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Automated deployment preview for the PR in the Cloudflare Pages. |
42ed495 to
3ed99fc
Compare
Encrypts private messages and file attachments between two Obby clients. It also speaks OTR, so it works with irssi, Pidgin and WeeChat. Everything happens in the client. The server only ever relays bytes it cannot read.
.obb. Needs obby-api 0.1.1.Why the diff is big
Only about 9.5k lines are hand written. The rest is a vendored library and translations, both marked in
.gitattributesso GitHub collapses them.src/lib/otr/vendor/otr.bundle.js.Why OTR is vendored instead of installed
It is four UMD files from 2015 that predate modules: CryptoJS, EventEmitter, Leemon Baird BigInt and otr.js. To run at all they have to be concatenated, handed a
rootobject carrying Web Crypto, and re-exported as ESM, withmoduleanddefineshadowed so each file attaches itself to the global instead. You cannot write that as a dependency inpackage.json.Two more reasons to leave it vendored. OTRv3 is frozen, so the file lands once and never changes again. And it is crypto, so the bytes we reviewed are the bytes that ship, instead of whatever a 2015 npm account serves at install time.