2023.12.25
- Removed Makefile targets as they are difficult to support:
launch-emulator-1, launch-emulator-2, load-apk-release, release.
- Removed import statements.
- Removed redundant conversions.
- Replaced StringBuilder with String in some instances.
- String comparisons and equalsIgnoreCase().
2023.05.10
- Android API 28. Older devices may not be functional.
- BouncyCastle's Rainbow implementation in version 1.73 is new.
Legacy Rainbow is compromised and deprecated. A new implementation
will not be included.
- Current documentation.
- Final APK release. Future releases will be source-only. Future-future
releases may include APKs.
- Free server has been discontinued.
- McEliece is not functional in BouncyCastle version 1.72 and newer.
A new implementation is required. This will not be addressed.
- New Rainbow parameters. Previous parameters cannot be tolerated.
2023.04.05
- Corrected state of Purge Fiasco Keys context menu item in Member
activity.
2023.03.30
- Forceful termination of TCP sockets on severe errors.
2023.03.15
- Emergency initialization of singletons, if possible.
2023.03.11
- New Steams will be initially unlocked.
- Toggle Lock Status context-menu item in Steam activity.
2023.03.10
- Steam is now functional on Android 10 and 13. Do not interpret an
integer as a Base64.
2023.01.10
- Corrected state of Delete Fiasco Keys context menu item in Settings
activity.
2023.01.07
- Corrected error text.
- Do not disable generate widgets during generation functions. Progress
widgets are sufficient.
- Enable Participants context-menu items if data are available:
Delete Fiasco Keys, Delete Public Keys.
- Reverted to Bouncy Castle 1.71 as key generation fails in 1.72.
2023.01.05
- Bouncy Castle 1.72.
- Happy New Year!
- Retain Selection State in Member activity. Session only.
2022.11.15
- Bouncy Castle 1.71.
- Optional message-read responses.
- Steam unlocking.
2022.05.28
- Documentation.
- Larger touch areas.
- New public server.
2022.04.10
- A neighbor removed from Settings will be deleted in a separate
task.
- Avoid accessing encrypted database content if not authenticated:
publishing keys, publishing status, retrieving messages.
- Corrected RSA key size for Steam: 3072, not 3096.
- New parameters for Rainbow. Please read
https://eprint.iacr.org/2022/214.
- Proper termination of Smoke service.
- Terminate connections on TLS handshake errors.
2021.12.25
- Enable SO_LINGER on TCP sockets.
- Fewer Context objects.
- Monospace fonts.
2021.12.17
- Bouncy Castle 1.70.
- Notify Member activity of new Steams.
2021.10.05
- Concurrent collections.
- Introduced new database table index for Member activity.
- Lock safety.
- Rainbow digital signature scheme.
- Release Ringtone resources.
- Sphincs digital signature scheme.
- Steam locking, or, prevent the replacement of completed transfers.
- Write identities in silent mode.
2021.07.25
- Allow removal of Fiasco keys from Member activity.
- Concurrent collections.
- Decreased lock regions.
- Limit execSQL(): cannot be delete / insert / select / update.
- Resume All Steams context-menu option.
- Silence over the wires. Optional.
- Steam percents.
- Wrap switches.
2021.07.07
- Avoid extending received Steam names.
- Bouncy Castle 1.69.
- Improved SQLite selection of deliverable messages.
- JuggerLi, or, the Juggernaut protocol via xor(public keys).
- Prevent duplicate offset acknowledgments in Steam.
- Steamrolling, or, sharing complete and incomplete Steams.
2021.03.20
- Ignore duplicate calling keys.
- Message details in Member activity.
- Tulip server discontinued.
2021.02.27
- Corrected raw SQLite queries.
- Decreased awaitTermination() values. Method may stall Smoke.
- ETags for bypassing congestion.
- Reliable distribution of deliverable text messages. Requires
reinstall as new database fields have been introduced.
- Replaced checkboxes with switches.
- Tool tips.
- Warn if the time server cannot be queried.
2021.02.10
- Fewer locks.
- Improved process termination.
- New server tulip-ipv4.tilaa.cloud.
2021.01.30
- Retain Fire messages.
- Weak references.
2021.01.20
- Corrected reset of local authentication key.
- Obfuscate local authentication and encryption keys.
- Prepare Steam key container properly.
2021.01.10
- Avoid creating tasks for completed Steams.
- Free Steam resources.
- Sort sub-title IP address.
2020.12.25
- Bouncy Castle 1.68.
- Corrected comparisons of byte arrays.
- Disable context menus if public keys are not available.
- Estimate the number of physical cores for Argon2id. Smoke must be
reinstalled.
- Future-proofing Smoke.
- Guard String.indexOf().
- Hide ephemeral key types for Other Steam destinations.
2020.12.15
- Future-proofing cryptographic primitives.
- New Steam database field. Please reinstall Smoke.
- Permanent RSA keys are now 4096 bits.
- Steam keys: McEliece, RSA.
- Super McEliece (m = 13, t = 118).
2020.11.15
- Bouncy Castle 1.67.
- Disable Chat:Send if there is at least one selected participant
without a session key pair.
- Efficient ArrayList::remove(). Remove from the end of the array.
- Full, reliable, Steam! File sharing.
- Improved TLS handshake-completed state.
- Issue Settings::prepareListeners() shortly after the Settings activity
has been instantiated.
- Monitor connection activity; decreased polling.
- Notify the user of incorrect device time via
https://worldtimeapi.org/api/timezone/Etc/UTC.txt. Optional.
- Prepare initial private keys during a public-key exchange.
- Provide message-read responses to SmokeStack instances.
- Random identities need not be recorded to databases.
- Removed SecureRandom.getInstance("SHA1PRNG").
- Removed verbose threads and replaced with events.
- Request Ozone messages shortly after a TCP connection has been
established or a TLS session has been established.
- SipHash-128.
- Write local identity immediately upon completion of TLS handshake.
2020.04.07
- Artificial random-access Steam files.
- New Scripts directory.
- Retain Steam rates.
2020.04.05
- Clear Smokescreen password.
- Static variables.
2020.04.04
- Bouncy Castle 1.65!
- Denote Juggernaut protocol failures and successes.
- Kernel broadcast receiver for immediate delivery of internal
instructions.
- McEliece Pointcheval conversion. Smoke must be reinstalled!
- Non-TLS devices.
- Partial Steam.
- Passthrough devices.
- Smokescreen, or, application lock.
2020.01.01
- Happy New Year!
- New Argon2id parameters.
2019.12.30
- Argon2id key-derivation function.
2019.12.10
- Allow Android to recycle bitmaps.
- Corrected the private server authentication protocol.
2019.11.30
- Support various McEliece parameters.
2019.11.25
- Bouncy Castle version 1.64.
- Corrected primary key in participants table. Please reinstall Smoke.
- Corrected widget states during initialization.
2019.09.30
- Bouncy Castle version 1.63.
- Exit option. May be incomplete on some devices.
- Guard socket buffers.
- New icons.
- Save attachments to Downloads (Internal Storage -> Download).
- Settings -> View Details functional on Android 9.
2019.04.14
- JuggerKnot.
- Properly create strings from bytes. Ozones and participants must be
redefined.
2019.04.04
- Allow removal of participant public keys.
- Close Java streams.
- Default socket buffer sizes.
- Juggernaut Protocol.
- Minor Fire layout changes.
- Release resources on onPause(), onStop().
- Removed deepCopy().
- Smoke Alias. Change your credentials while preserving your
relationships.
2019.03.03
- Allow removal of specific messages in Member.
- Decreased maximum buffer size from 32 MiB to 8 MiB.
- Prefer delete() over setLength(0) on buffers.
- Recycle bitmaps.
2019.02.25
- Bouncy Castle version 1.61.
- Material icons.
- Optional foreground service.
2019.02.02
- Array lengths may not be negative.
- Automatic removal of incorrect network data. Smoke and SmokeStack.
- Corrected conditional in UdpMulticastNeighbor::send(). SmokeStack.
- Disable Nagle's algorithm.
- Energy and iterations.
- Optional initialization of Ozone during neighbor definition.
- Orderly shutdown of schedules.
- Pause schedules, notify if necessary.
- Replaced Spongy Castle with Bouncy Castle. Please replace existing
listeners. SmokeStack.
- SNAP!
- Smaller lock regions.
- SmokeStack confirmation for identity sharing of personal identity.
- StringBuilder over StringBuffer if possible.
2018.10.10
- Compute SHA-512 display digest of PEM(certificate).
- Inspect length in String::substring().
- New server (tulip-ipv4.tilaa.cloud).
2018.09.01
- Allow resending of messages.
- Deleting Fiasco keys lacked proper confirmation.
- Denote messages which have been read by the recipient.
- Denote messages which have been sent.
- Depict Smoke failures.
- Lock SipHash::hmac().
- New participants_messages database fields. Requires new
installation.
2018.08.19
- Allow generation of only PK material in Settings.
- Allow new participant names via context menus;
Settings::Participants.
- Automatically set the Ozone to the Smoke ID on new installations.
- Blocking socket reads.
- Bouncy Castle at version 1.60.
- Calling via ephemeral McEliece; Member activity only.
- Clear internal messaging log on Chat::Clear.
- Corrected faulty widget listeners in Fire.
- Corrected slight time differences between time stamps in messages
destined for SmokeStacks and messages destined for participants.
- Increased key-publishing period from 15 seconds to 45 seconds. Also
removed self-publishing.
- Material Design-compliant color selections.
- McEliece parameters m = 12, t = 68.
Compatibility with m = 11, t = 50 is preserved.
- Messages in Member activity will not be duplicated in the Chat
activity.
- New Fiasco Keys column in Settings::Participants.
- New chat-message format. Incompatible with previous releases.
- Pause threads when possible.
- Periodically request Ozone messages.
- Private servers through SmokeStack.
- Removed the superfluous name field from the participants database
table.
- Replaced complex if-statements with switch statements.
- Several member variables in the Neighbor class were defined as static.
Corrected.
- Share capabilities and identities shortly after the SSL/TLS handshake
has completed on TCP sockets.
- Shared keys without signatures are now accepted and properly depicted
in Settings.
- Sign encryption and signature public keys as pairs.
- Singular member pages. Single image attachments included.
- Uniquely-persistent Fire identities.
- Viewing of member details now available via Settings::Participants
context menu.
2018.05.05
- Forward secrecy from the past.
2018.04.04
- LocalBroadcastManager instances.
- Single ID per Fire.
2018.03.15
- Congestion-control improvements.
- Corrected nested locks (isNetworkConnected()).
- Insert-or-throw SQLite database queries.
- The ProgressDialog class has been deprecated. ProgressBars have now
been added.
- The replace method may not be available in a hash table; put().
2018.03.03
- Attempt socket connections regardless of WiFi availability. Insight.
- Automatically import rosemary-ipv4.tilaa.cloud:4710 on new
installations.
- Corrected local echo behavior.
- Echo Fire, if possible!
- Fire Digest Key and Salt fields may not be empty. Corrected.
- Host translation must be performed before every socket connection
attempt.
- Large-area congestion-control mutex.
- Partition messages over UDP links into 576-byte datagrams.
- Provide the HMAC algorithm during identity distribution.
- The Call widget should only be enabled if a network is present.
- Time-tag SmokeStack-bound messages before departure. Otherwise,
SmokeStack instances will discard expired messages.
- Wonderful documentation.
2018.02.20
- Abort simultaneous calls.
- Inspect WiFi availability before attempting socket connections.
- New Chat background color.
- Prepare calling public-key pairs without locking calling queue
object.
- Replaced integers with long integers where necessary.
- Set Fire height to 60% of screen height.
2018.02.10
- Allow empty Fire participant names.
- Allow purging of neighbor queues.
- Automatic, oscillatory EPKS.
- Avoid non-essential operations if network channels are not available.
- Depict corrupted database entries.
- Enabled Nagle's algorithm.
- Introduced McEliece-Fujisaki via Bouncy Castle. Cross-communications
supported.
- Minimum password length set to one character.
- New Fire key generation. Destination tags are required for
SmokeStack.
- Participant name changes should be reflected in the Chat activity.
- Trim Channel, Digest Key, and Salt values on Fire.
2018.01.05
- Fire, or, group communications. Compatible with Spot-On.
- Increased lane widths to 8 MiB.
2017.08.19
- Set a non-zero SO_TIMEOUT as some devices do not unblock socket reads
after sockets are closed.
2017.07.20
- AndroidManifest.xml was missing WakeLock permissions.
- Do not attempt to send duplicate data.
- Do not specify timeouts in socket reads as separate threads are
responsible for socket reads.
- Removed all Thread.sleep() instances.
- Replaced StringBuilder Neighbor member with StringBuffer. StringBuffer
is thread-safe.
- Signed release.
- WiFi lock.
2017.07.16
- Less activity on disconnected neighbors.
2017.07.09
- Detect existing key pairs in writeParticipant().
- Smaller database transaction areas.
2017.07.07
- Do not automatically purge the temporary identity for offline message
retrieval unless some inactive period has elapsed.
- Issue SQLiteDatabase.update() whenever a participant is added. This
will allow for replacing of participant names without removal of
existing data.
- SmokeStack as a private public key repository.