The source moved to gitlab.com/extant2000 and flamenet-elligator2 was published, so BIS and NSA were notified again. The first entry is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8.3 KiB
Export compliance, v0.2
This is a record of a decision, not legal advice. The authorities are the Bureau of Industry and Security and Apple. Where this document is unsure it says so rather than sounding certain.
The route: publicly available source code
Flamenet Messenger takes the publicly available encryption source code route, License Exception TSU, EAR §740.13(e). The obligation is one email to BIS and one to NSA naming where the source lives. There is no encryption registration, no Encryption Registration Number, and no annual self-classification report.
Two facts make it eligible, and both are checkable rather than asserted:
- All four repositories are public.
flamenet-messenger-ios,flamenet-messenger-android,flamenet-relayandflamenet-e2eall answer an anonymous request. Every line of the protocol, the client and the server is readable by anyone. - The licence is MIT. §740.13(e) excludes source code that is subject to an express agreement for the payment of a licensing fee or royalty for commercial production or sale. MIT charges neither.
What this replaced
v0.1 of this document chose the other route: mass-market, self-classified 5D992.c, with the annual BIS self-classification report and encryption registration through SNAP-R. That route needs an ERN, because registration is what issues one. It also cited §740.17(e)(3), which is the reporting rule for License Exception ENC rather than for mass market.
The two routes are alternatives, not steps. Nothing had been filed under the old one, so switching costs nothing.
The notification: sent 2026-09-15
Sent to both addresses on 2026-09-15 at 17:37 UTC, from
security@flamenetmessenger.com, and accepted by both:
- BIS,
crypt@bis.doc.gov:250 2.6.0 ... Queued mail for delivery - NSA,
enc@nsa.gov:250 ok: Message 151032564 accepted
Accepted is not the same as read. Keep an eye on that mailbox for a reply, and keep these lines: they are the evidence that the notification went, and the date is what a later question would turn on.
The text as sent:
Subject: Notification under EAR 740.13(e): publicly available encryption source code
Extant 2000 LLC notifies BIS and NSA, under EAR §740.13(e), of the internet location of publicly available encryption source code.
Submitter Extant 2000 LLC 7051 Brookfield Plz, PO Box 41, Springfield, VA 22150, USA security@flamenetmessenger.com
Product Flamenet Messenger, an end-to-end encrypted instant messenger for iPhone and Android, with its relay server and its protocol engine.
Source code locations https://gitlab.com/paulhitt/flamenet-messenger-ios https://gitlab.com/paulhitt/flamenet-messenger-android https://gitlab.com/paulhitt/flamenet-relay https://gitlab.com/paulhitt/flamenet-e2e
The source at those locations is public and free to read. It is published under the MIT licence and is not subject to an express agreement for the payment of a licensing fee or royalty for commercial production or sale.
Algorithms: X25519 key agreement, Ed25519 signatures, ML-KEM-768 (FIPS 203), ML-DSA-65 (FIPS 204), HKDF-SHA256, HMAC-SHA256, AES-256-GCM, SHA-256 and SHA-512.
Protocols: the published X3DH key agreement and the Double Ratchet. ML-KEM-768 is combined with X25519 for key agreement, and ML-DSA-65 accompanies Ed25519 on identity keys. The implementation contains no proprietary or non-standard cryptography.
Re-notify if the source moves to a different location. Notification is about where the code is, so a new commit needs nothing; a new URL does.
The re-notification: sent 2026-09-28
On 28 September 2026 the source moved from gitlab.com/paulhitt to
gitlab.com/extant2000. On the same day flamenet-elligator2, which holds the
obfs4 bridge and the iPhone app's obfs4 transport, was published under MIT.
Both changes call for a new notification, so one was sent.
Sent to both addresses on 2026-09-28 at 19:10 UTC, in one message from
security@flamenetmessenger.com, and accepted by both:
- BIS,
crypt@bis.doc.gov:250 2.6.0 ... Queued mail for delivery - NSA,
enc@nsa.gov:250 ok: Message 199757828 accepted
The locations it gave:
https://gitlab.com/extant2000/flamenet-messenger-ios
https://gitlab.com/extant2000/flamenet-messenger-android
https://gitlab.com/extant2000/flamenet-relay
https://gitlab.com/extant2000/flamenet-e2e
https://gitlab.com/extant2000/flamenet-elligator2
It also listed the four earlier locations above and said they now redirect. The algorithm list repeats the one in the first notification, and adds what the obfs4 transport uses: the Elligator2 encoding of Curve25519 public keys, the ntor handshake (Curve25519 with HMAC-SHA256), XSalsa20-Poly1305 (NaCl secretbox) and SipHash-2-4.
The same rule applies from here: a new commit needs nothing, and a new location or a newly published repository with cryptography in it needs another notification.
Open question worth an hour of a lawyer
Whether the binary Apple distributes counts as the object code corresponding to that published source. The iOS app, the engine and the relay are all public, so the honest reading is that it does, but the binary also links Apple CryptoKit and WebRTC, which are not ours and not published by us. If that reading is wrong, the fallback is the mass-market route this document used to describe, and then an ERN is needed after all. Worth asking before relying on it for years rather than before the first submission.
App Store Connect
Apple's questionnaire is a separate obligation from the BIS one, and it still has to be answered on the submission.
- Does your app use encryption? Yes.
- Does it qualify for any of the exemptions? Apple's list includes an option for apps whose encryption source code is publicly available. Read the options on the screen and pick that one if it is offered, because it is now the accurate answer. v0.1 answered No here, which was accurate under the mass-market route and is not under this one.
- Does it implement proprietary or non-standard algorithms? No. Standard published algorithms only, listed above.
Whether ITSAppUsesNonExemptEncryption should be false follows from that
exemption answer rather than being decided here: if Apple treats the app as
exempt, the plist can say so and later uploads skip the questionnaire. Do not
guess it. Setting a non-exempt declaration without a matching
ITSEncryptionExportComplianceCode from documentation Apple has issued
rejects the upload with "Invalid Export Compliance Code", which is how this
was found the first time.
Crypto description, to paste when asked:
Flamenet Messenger is an end-to-end encrypted instant messenger. It uses the published Signal protocol constructions: X3DH asynchronous key agreement and the Double Ratchet, implemented with Apple CryptoKit using standard algorithms only, Curve25519 (X25519 key agreement, Ed25519 signatures), HKDF-SHA256, HMAC-SHA256, and AES-256-GCM authenticated encryption. Key agreement and identity signatures are hybrid post-quantum: ML-KEM-768 (FIPS 203) is combined with X25519 so that recorded traffic stays protected against a future quantum adversary, and ML-DSA-65 (FIPS 204) accompanies Ed25519 on identity keys so an attacker must defeat both rather than whichever is weaker. Both are NIST-standard algorithms used through Apple CryptoKit. Media attachments are encrypted client-side with per-file AES-256-GCM keys conveyed inside the encrypted channel. Voice calls use WebRTC's standard DTLS-SRTP with the certificate fingerprints authenticated through the same encrypted channel. TLS (HTTPS) protects all client-server transport. No proprietary or non-standard cryptography is implemented.
Keeping this true
The algorithm list above is part of a declaration, so it has to match the binary. The post-quantum algorithms were added after v0.1 was written and were missing from it, and a declaration that omits an algorithm the binary contains is inaccurate. Anything added to the protocol from here belongs in this list on the same commit that ships it.
The repositories being public is the whole basis of this route. If any of them is ever made private, this document stops being true and the mass-market route, with its registration and its annual report, comes back.