- Removed guava and replaced common helpers to local ones
- Updated gradle to 7.2 and agp to 7.1.2
- Added gradle wrapper to git
- Updated dependencies to match the new version
- Fully removed android's Parcel implementations for better compatibility with pure java/kotlin implementation
- Fixed OkHttp TLS v1.2 for api < 22
- First major version
- Updated retrofit, okhttp and others version to latest
- Updated android gradle plugin
- Added
MinterSDK.DEFAULT_COIN_ID
, now coins are represented by theirs ID, not by name - Added
synchronized
blocks to methods those uses native secp256k1 context - Now fully uppercase data like MinterHash or MinterPublicKey is a valid
- All data with prefix (Mt, Mx etc) now deserializes case-insensitive
- Added parcel for MinterPublicKey
- Cleanup
- Refactored chars buffer
- Removed old deserializers
- Deleted old BytesData (with byte[] backend), renamed UnsignedBytesData to BytesData - now backend is char[]
- Deprecated old-style Gson converters, pay attention on deprecated notices
- Added support for UnsignedBytesData to RLP encoding
- Fixed major issue: UnsignedBytesData#equals() on the same length and different data, returned true instead of false
- Interpret RLP empty object[] as empty char[]
- Fixed encoding zero value in RLP
- Fixed bytes comparison if both arrays have zero length
- Fixed RLP encoding empty string with fixed bytes length
- Now SDK uses androidx instead of legacy support libraries
- Updated BIP39 library
- Updated secp256k1 library - fixed NPE after fail signing
- Fixed RLP encoding for raw bytes contains leading zeroes
- Checking for existence
android.os*
class inApiService
- Created Unsigned byte buffer to deal with RLP single byte (value 128) encoding as
{128}
than as{0, -127}
. Backend for it:char
type instead of byte. - Created RLP for working with
char[]
values - Updated native libraries to latest version (changed projects structure)
- Added helper function for dropping leading zero bytes
- Enable TLS v1.1 and v1.2 an android 4.4
- BigIntegerDeserializer now handles empty strings as zero value
- Added
removeHttpInterceptor
toApiService
client, for easy http request mocking - Added
java.io.EOFException
as friend exception toNetworkException
. Also addedIOException
andIOError
- Hotfix: logger Mint.tag() worked wrong with NPE. Fixed with dummy object on uninitialized logger.
- MinterHash fix, length can be more than 20 bytes
- Added ability to pass
byte[][]
orbyte[]...
toBytesData
(to combine multiple arrays like from RecoverableSignature) - Added sha256 hash method to
BytesData
- BREAKING CHANGES:
- Removed UriDeserializer
- Replaced
android.util.Pair
with custom class. Android'sPair
usesjava.util.Objects
and it's not supported on android < 19 - Added checked
NativeLoadException
forMinterSDK.initialize()
- Reduced android dependencies usage
- Added random generate method to create random mnemonic (using native PCG random)
CallbackProvider<T>
now deprecated. UseLazy<T>
- Added
Retrofit.Builder
configuration callback inApiService.Builder
- Added unified logger: see
Mint
- Added public SONAME and arrays of native lib file names
- Added ability to create private key from mnemonic phrase directly
- Added more constructors to private key
- Moved tests from instrumentation to unit (now, native lib required to be installed in system)
- Added minter "check" bytes model
- More tests
- Readme additions
- Target api 28