* Initial design for encryption SPI & T544 support
* Fix missed vararg
* Move EncryptWorkerService to internal spi
* Add useAndroid val to QQAndroidClient and rebase to the latest dev branch
* Remove docs and annotations (Throws and MiraiExperimentalApi)
* Remove unwanted changes
* Remove redundant runBlocking in tlv544
* Tweak the file annotation location
* Remove suspend modifier for doTLVEncrypt
* Disable DebuggingProperties
* Fix format
* Remove empty line
* Remove empty line again
* Use instance field directly
* Add Volatile annotation to instance
* Use atomicRef instead of field
* Use kotlin lambda for readability
* wip
* Improve EncryptService API
* Add possible values
* remove docs
* Add key BOT_PROTOCOL
---------
Co-authored-by: Him188 <Him188@mamoe.net>
* [console/it] Fix testers not run when testers modified
* [console] Add options to control plugin classpath resolving
- Also add `META-INF/mirai-console-plugin/options.properties`
* [console/it] Testers for options.properties
* api dump
* update property names
* doc update
* [core] update protocol
* [core] fix t106 decryption key
* [core] handle t543
* [core] revert t106
* [core] revert native test pow data
* [core] split build version and apk version name
* [core] pass time to t1 instead of time diff
* [core] remove unused t106 writer & rename param ip to ipv4 of t1 and t106
* [core] implement qimei for t545
TODO: aes and rsa crypto for nativeMain
* [core] fix base64 decode for android in rsa
* [core] fix unix timestamp parsing on native and add more tests
* [api] DeviceInfo move `androidId` to main constructor and adjust test.
* [api] do not request qimei when protocol is neither ANDROID_PHONE nor ANDROID_PAD
* [api] implement aes crypto for native target
* [api] rsa crypto for multi-platform
* [api] crypto test
* [api] move freePointer util
* [api] openssl api compatibility
* [core] add explicit `androidId` param
* [core] remove unused `tlvCount`
* [core] optimize crypto
* [core] move Qimei to network package
* [core] move appId to protocol
* [core] lazily initialize qimeiLogger
* [core] write byte array to BIO mem
* [core] move qimei to client, add direct serializer for DeviceInfo
* [core] optimize DeviceInfoDelegateSerializer
* [core] real user-agent when requesting qimei
* [core] use `DeviceInfo.version.release`
* [core] remove unused wtlogin packet
* [core] do what constructor serializer should do
* [core] fix endless cache validation caused by not upgrading device info file.
* [core] request qimei before fast-login
* [core] tlv order
* [core] remove wrong tests and print more detail when deserialize failed.
* [core] device info upgrade for native
* [core] request qimei after validating cache
* [core] DeviceInfo compatibility
* [core] DeviceInfo test name
* [core] compatibility serializer
* [core] disable rsa crypto test on android unit test
* [core] move rsa impl to jvmBase
* action
* import
* api dump
* api dump
* revert wrong api dumps
* [core] Deprecate DeviceInfo constructor and serializer, provide `serializeToString` and `deserializeFromString` for replacement
* rerun ci
* optimize
* use serializer directly
* optimize test
* revert
* [core] CacheValidator use `DeviceInfo.serializeToString()` instead of direct serializer
* Remove `println` in `DeviceInfoManager`
* Add legacy deserialize overload for ABI compatibility
* Remove uncompleted docs for DeviceInfo
* Suppress DeviceInfo deprecation warnings for internal usages
---------
Co-authored-by: Him188 <Him188@mamoe.net>
added some opt-in markers on API which should have:
- `appendMiraiCodeTo`
Made API stable (otherwise they require too heavy opt-ins):
- MiraiConsoleImplementation$ConsoleLaunchOptions
- LowLevelApi
[core] OnDemandChannel: Ensure channel close and emit shares same behavior
[core] OnDemandChannel: Ensure channel is closed properly when producer throws an exception
[core] OnDemandChannel: Ensure coroutine scope cancelled when producer coroutine throws exception,
also added more tests
[core] Start producer coroutine immediately on `expectMore` and yield
Improve docs for OnDemandChannel
Rename factory function `OnDemandReceiveChannel` to `OnDemandChannel` to better cover its meaning
Create deferred lazily in Producing state
Rename ProducerState to ChannelState
fix atomicfu bug receiveOrNull
Add docs (WIP, to be rebased)
[core] OnDemandChannel: Catch Throwable in `receiveOrNull` to prevent possible failures
- Generate relocated JARs with classifier `relocated`, instead of replacing the output of `:jar` task.
- Create `JvmRelocated` publications to publish relocated artifacts.
- Patch Kotlin Metadata and Maven Pom for the added publication.
- Updated deps test to be more strict