1.Body is a lambda function, so invoke it by only once
2.Fix wrong protoBuf serializer, use protocol one
3.Pass all packets to EncryptService (which packet should be sign should judge by service itself)
4.Fix wrong proto number and add missed default value, also fix proto naming
* 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>
* [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