[#236] Kotlin and other dependency update
* [#236] Gradle versions plugin 0.50.0 [#236] Ktlint 1.1.0 Ktlint warnings Detekt warnings Regenerate deps locks * [#236] Kotest 5.8.0 * [#236] Dokka 1.9.10 * [#236] Kotlin 1.9.21 * Add dependency locking switch Update deps locks * Changelog update
This commit is contained in:
parent
0cf37d1097
commit
4b356a236a
|
@ -8,6 +8,8 @@ and this library adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
### Changed
|
||||
- Gradle 8.5
|
||||
- Kotlin 1.9.21
|
||||
- Other dependency update
|
||||
|
||||
## [1.0.6] - 2023-09-27
|
||||
- Gradle 8.3
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -41,7 +41,6 @@ object Mnemonics {
|
|||
|
||||
class MnemonicCode(val chars: CharArray, val languageCode: String = DEFAULT_LANGUAGE_CODE) :
|
||||
Closeable, Iterable<String> {
|
||||
|
||||
constructor(
|
||||
phrase: String,
|
||||
languageCode: String = DEFAULT_LANGUAGE_CODE
|
||||
|
@ -67,39 +66,42 @@ object Mnemonics {
|
|||
* chars can be enough.
|
||||
*/
|
||||
val words: List<CharArray>
|
||||
get() = ArrayList<CharArray>(wordCount).apply {
|
||||
var cursor = 0
|
||||
chars.forEachIndexed { i, c ->
|
||||
if (c == ' ' || i == chars.lastIndex) {
|
||||
add(chars.copyOfRange(cursor, if (chars[i].isWhitespace()) i else i + 1))
|
||||
cursor = i + 1
|
||||
get() =
|
||||
ArrayList<CharArray>(wordCount).apply {
|
||||
var cursor = 0
|
||||
chars.forEachIndexed { i, c ->
|
||||
if (c == ' ' || i == chars.lastIndex) {
|
||||
add(chars.copyOfRange(cursor, if (chars[i].isWhitespace()) i else i + 1))
|
||||
cursor = i + 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun clear() = chars.fill(0.toChar())
|
||||
|
||||
fun isEmpty() = chars.isEmpty()
|
||||
|
||||
override fun iterator(): Iterator<String> = object : Iterator<String> {
|
||||
var cursor: Int = 0
|
||||
override fun hasNext() = cursor < chars.size - 1
|
||||
override fun iterator(): Iterator<String> =
|
||||
object : Iterator<String> {
|
||||
var cursor: Int = 0
|
||||
|
||||
override fun next(): String {
|
||||
val nextSpaceIndex = nextSpaceIndex()
|
||||
val word = chars.concatToString(cursor, cursor + (nextSpaceIndex - cursor))
|
||||
cursor = nextSpaceIndex + 1
|
||||
return word
|
||||
}
|
||||
override fun hasNext() = cursor < chars.size - 1
|
||||
|
||||
private fun nextSpaceIndex(): Int {
|
||||
var i = cursor
|
||||
while (i < chars.size - 1) {
|
||||
if (chars[i].isWhitespace()) return i else i++
|
||||
override fun next(): String {
|
||||
val nextSpaceIndex = nextSpaceIndex()
|
||||
val word = chars.concatToString(cursor, cursor + (nextSpaceIndex - cursor))
|
||||
cursor = nextSpaceIndex + 1
|
||||
return word
|
||||
}
|
||||
|
||||
private fun nextSpaceIndex(): Int {
|
||||
var i = cursor
|
||||
while (i < chars.size - 1) {
|
||||
if (chars[i].isWhitespace()) return i else i++
|
||||
}
|
||||
return chars.size
|
||||
}
|
||||
return chars.size
|
||||
}
|
||||
}
|
||||
|
||||
fun validate() {
|
||||
// verify: word count is supported
|
||||
|
@ -195,7 +197,6 @@ object Mnemonics {
|
|||
}
|
||||
|
||||
companion object {
|
||||
|
||||
/**
|
||||
* Utility function to create a mnemonic code as a character array from the given
|
||||
* entropy. Typically, new mnemonic codes are created starting with a WordCount
|
||||
|
@ -223,7 +224,10 @@ object Mnemonics {
|
|||
|
||||
// inner function that updates the index and copies a word after every 11 bits
|
||||
// Note: the excess bits of the checksum are intentionally ignored, per BIP-39
|
||||
fun processBit(bit: Boolean, chars: ArrayList<Char>) {
|
||||
fun processBit(
|
||||
bit: Boolean,
|
||||
chars: ArrayList<Char>
|
||||
) {
|
||||
// update the index
|
||||
index = index shl 1
|
||||
if (bit) index = index or 1
|
||||
|
@ -272,7 +276,6 @@ object Mnemonics {
|
|||
val bitLength = count / 3 * 32
|
||||
|
||||
companion object {
|
||||
|
||||
/**
|
||||
* Convert a count into an instance of [WordCount].
|
||||
*/
|
||||
|
@ -349,9 +352,10 @@ fun MnemonicCode.toSeed(
|
|||
}
|
||||
}
|
||||
|
||||
fun WordCount.toEntropy(): ByteArray = ByteArray(bitLength / 8).apply {
|
||||
Mnemonics.secureRandom.nextBytes(this)
|
||||
}
|
||||
fun WordCount.toEntropy(): ByteArray =
|
||||
ByteArray(bitLength / 8).apply {
|
||||
Mnemonics.secureRandom.nextBytes(this)
|
||||
}
|
||||
|
||||
//
|
||||
// Private Extensions
|
||||
|
|
|
@ -9,7 +9,6 @@ import cash.z.ecc.android.bip39.Mnemonics.DEFAULT_LANGUAGE_CODE
|
|||
* any code.
|
||||
*/
|
||||
class WordList internal constructor(val languageCode: String = DEFAULT_LANGUAGE_CODE) {
|
||||
|
||||
init {
|
||||
validate(languageCode)
|
||||
}
|
||||
|
@ -24,7 +23,6 @@ class WordList internal constructor(val languageCode: String = DEFAULT_LANGUAGE_
|
|||
val words get() = _words
|
||||
|
||||
companion object {
|
||||
|
||||
private const val WORD_LIST_ELEMENT_COUNT = 2048
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package cash.z.ecc.android.crypto
|
||||
|
||||
internal expect class PBEKeySpecCommon(password: CharArray?, salt: ByteArray, iterationCount: Int, keyLength: Int) {
|
||||
|
||||
var password: CharArray?
|
||||
private set
|
||||
var salt: ByteArray?
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package cash.z.ecc.android.crypto
|
||||
|
||||
internal expect object Pbkdf2Sha512 {
|
||||
|
||||
/**
|
||||
* Generate a derived key from the given parameters.
|
||||
*
|
||||
|
@ -10,5 +9,10 @@ internal expect object Pbkdf2Sha512 {
|
|||
* @param c the iteration count
|
||||
* @param dkLen the key length in bits
|
||||
*/
|
||||
fun derive(p: CharArray, s: ByteArray, c: Int, dkLen: Int): ByteArray
|
||||
fun derive(
|
||||
p: CharArray,
|
||||
s: ByteArray,
|
||||
c: Int,
|
||||
dkLen: Int
|
||||
): ByteArray
|
||||
}
|
||||
|
|
|
@ -5,6 +5,10 @@ internal expect class SecretKeyFactoryCommon {
|
|||
|
||||
companion object {
|
||||
fun getInstance(algorithm: String): SecretKeyFactoryCommon
|
||||
fun getInstance(algorithm: String, provider: FallbackProvider): SecretKeyFactoryCommon
|
||||
|
||||
fun getInstance(
|
||||
algorithm: String,
|
||||
provider: FallbackProvider
|
||||
): SecretKeyFactoryCommon
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,8 +18,9 @@ import io.kotest.matchers.shouldNotBe
|
|||
private const val DEFAULT_LANGUAGE_CODE = "en"
|
||||
|
||||
class MnemonicsTest : BehaviorSpec({
|
||||
val validPhrase = "void come effort suffer camp survey warrior heavy shoot primary clutch crush open amazing" +
|
||||
" screen patrol group space point ten exist slush involve unfold"
|
||||
val validPhrase =
|
||||
"void come effort suffer camp survey warrior heavy shoot primary clutch crush open amazing" +
|
||||
" screen patrol group space point ten exist slush involve unfold"
|
||||
|
||||
Given("a valid, known mnemonic phrase") {
|
||||
When("it is converted into a seed") {
|
||||
|
@ -186,9 +187,10 @@ class MnemonicsTest : BehaviorSpec({
|
|||
}
|
||||
}
|
||||
When("it contains an invalid word") {
|
||||
val mnemonicPhrase = validPhrase.split(' ').let { words ->
|
||||
validPhrase.replace(words[23], "convincee")
|
||||
}
|
||||
val mnemonicPhrase =
|
||||
validPhrase.split(' ').let { words ->
|
||||
validPhrase.replace(words[23], "convincee")
|
||||
}
|
||||
mnemonicPhrase.asClue {
|
||||
Then("validate() fails with a word validation error") {
|
||||
shouldThrow<Mnemonics.InvalidWordException> {
|
||||
|
|
|
@ -3,9 +3,10 @@ package cash.z.ecc.android.bip39.utils
|
|||
fun ByteArray.toHex(): String {
|
||||
val sb = StringBuilder(size * 2)
|
||||
for (b in this) {
|
||||
val hexValue = b.let { if (it >= 0) it.toInt() else 256 + it }
|
||||
.toString(16)
|
||||
.let { if (it.length < 2) "0$it" else it }
|
||||
val hexValue =
|
||||
b.let { if (it >= 0) it.toInt() else 256 + it }
|
||||
.toString(16)
|
||||
.let { if (it.length < 2) "0$it" else it }
|
||||
sb.append(hexValue)
|
||||
}
|
||||
return sb.toString()
|
||||
|
@ -23,17 +24,21 @@ fun String.fromHex(): ByteArray {
|
|||
return data
|
||||
}
|
||||
|
||||
fun String.swap(srcWord: Int, destWord: Int = srcWord + 1): String {
|
||||
fun String.swap(
|
||||
srcWord: Int,
|
||||
destWord: Int = srcWord + 1
|
||||
): String {
|
||||
require(srcWord < destWord) { "srcWord must be less than destWord" }
|
||||
require(destWord <= count { it == ' ' }) { "there aren't that many words" }
|
||||
|
||||
return split(' ').let { words ->
|
||||
words.reduceIndexed { i, result, word ->
|
||||
val next = when (i) {
|
||||
srcWord -> words[destWord]
|
||||
destWord -> words[srcWord]
|
||||
else -> word
|
||||
}
|
||||
val next =
|
||||
when (i) {
|
||||
srcWord -> words[destWord]
|
||||
destWord -> words[srcWord]
|
||||
else -> word
|
||||
}
|
||||
if (srcWord == 0 && i == 1) "${words[destWord]} $next" else "$result $next"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,149 +1,150 @@
|
|||
package cash.z.ecc.android.bip39.utils
|
||||
|
||||
@Suppress("MaxLineLength")
|
||||
val englishTestData = listOf(
|
||||
val englishTestData =
|
||||
listOf(
|
||||
"00000000000000000000000000000000",
|
||||
"abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about",
|
||||
"c55257c360c07c72029aebc1b53c05ed0362ada38ead3e3e9efa3708e53495531f09a6987599d18264c1e1c92f2cf141630c7a3c4ab7c81b2f001698e7463b04",
|
||||
"xprv9s21ZrQH143K3h3fDYiay8mocZ3afhfULfb5GX8kCBdno77K4HiA15Tg23wpbeF1pLfs1c5SPmYHrEpTuuRhxMwvKDwqdKiGJS9XFKzUsAF"
|
||||
),
|
||||
listOf(
|
||||
"7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f",
|
||||
"legal winner thank year wave sausage worth useful legal winner thank yellow",
|
||||
"2e8905819b8723fe2c1d161860e5ee1830318dbf49a83bd451cfb8440c28bd6fa457fe1296106559a3c80937a1c1069be3a3a5bd381ee6260e8d9739fce1f607",
|
||||
"xprv9s21ZrQH143K2gA81bYFHqU68xz1cX2APaSq5tt6MFSLeXnCKV1RVUJt9FWNTbrrryem4ZckN8k4Ls1H6nwdvDTvnV7zEXs2HgPezuVccsq"
|
||||
),
|
||||
listOf(
|
||||
"80808080808080808080808080808080",
|
||||
"letter advice cage absurd amount doctor acoustic avoid letter advice cage above",
|
||||
"d71de856f81a8acc65e6fc851a38d4d7ec216fd0796d0a6827a3ad6ed5511a30fa280f12eb2e47ed2ac03b5c462a0358d18d69fe4f985ec81778c1b370b652a8",
|
||||
"xprv9s21ZrQH143K2shfP28KM3nr5Ap1SXjz8gc2rAqqMEynmjt6o1qboCDpxckqXavCwdnYds6yBHZGKHv7ef2eTXy461PXUjBFQg6PrwY4Gzq"
|
||||
),
|
||||
listOf(
|
||||
"ffffffffffffffffffffffffffffffff",
|
||||
"zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong",
|
||||
"ac27495480225222079d7be181583751e86f571027b0497b5b5d11218e0a8a13332572917f0f8e5a589620c6f15b11c61dee327651a14c34e18231052e48c069",
|
||||
"xprv9s21ZrQH143K2V4oox4M8Zmhi2Fjx5XK4Lf7GKRvPSgydU3mjZuKGCTg7UPiBUD7ydVPvSLtg9hjp7MQTYsW67rZHAXeccqYqrsx8LcXnyd"
|
||||
),
|
||||
listOf(
|
||||
"000000000000000000000000000000000000000000000000",
|
||||
"abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon agent",
|
||||
"035895f2f481b1b0f01fcf8c289c794660b289981a78f8106447707fdd9666ca06da5a9a565181599b79f53b844d8a71dd9f439c52a3d7b3e8a79c906ac845fa",
|
||||
"xprv9s21ZrQH143K3mEDrypcZ2usWqFgzKB6jBBx9B6GfC7fu26X6hPRzVjzkqkPvDqp6g5eypdk6cyhGnBngbjeHTe4LsuLG1cCmKJka5SMkmU"
|
||||
),
|
||||
listOf(
|
||||
"7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f",
|
||||
"legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth useful legal will",
|
||||
"f2b94508732bcbacbcc020faefecfc89feafa6649a5491b8c952cede496c214a0c7b3c392d168748f2d4a612bada0753b52a1c7ac53c1e93abd5c6320b9e95dd",
|
||||
"xprv9s21ZrQH143K3Lv9MZLj16np5GzLe7tDKQfVusBni7toqJGcnKRtHSxUwbKUyUWiwpK55g1DUSsw76TF1T93VT4gz4wt5RM23pkaQLnvBh7"
|
||||
),
|
||||
listOf(
|
||||
"808080808080808080808080808080808080808080808080",
|
||||
"letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic avoid letter always",
|
||||
"107d7c02a5aa6f38c58083ff74f04c607c2d2c0ecc55501dadd72d025b751bc27fe913ffb796f841c49b1d33b610cf0e91d3aa239027f5e99fe4ce9e5088cd65",
|
||||
"xprv9s21ZrQH143K3VPCbxbUtpkh9pRG371UCLDz3BjceqP1jz7XZsQ5EnNkYAEkfeZp62cDNj13ZTEVG1TEro9sZ9grfRmcYWLBhCocViKEJae"
|
||||
),
|
||||
listOf(
|
||||
"ffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo when",
|
||||
"0cd6e5d827bb62eb8fc1e262254223817fd068a74b5b449cc2f667c3f1f985a76379b43348d952e2265b4cd129090758b3e3c2c49103b5051aac2eaeb890a528",
|
||||
"xprv9s21ZrQH143K36Ao5jHRVhFGDbLP6FCx8BEEmpru77ef3bmA928BxsqvVM27WnvvyfWywiFN8K6yToqMaGYfzS6Db1EHAXT5TuyCLBXUfdm"
|
||||
),
|
||||
listOf(
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art",
|
||||
"bda85446c68413707090a52022edd26a1c9462295029f2e60cd7c4f2bbd3097170af7a4d73245cafa9c3cca8d561a7c3de6f5d4a10be8ed2a5e608d68f92fcc8",
|
||||
"xprv9s21ZrQH143K32qBagUJAMU2LsHg3ka7jqMcV98Y7gVeVyNStwYS3U7yVVoDZ4btbRNf4h6ibWpY22iRmXq35qgLs79f312g2kj5539ebPM"
|
||||
),
|
||||
listOf(
|
||||
"7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f",
|
||||
"legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth title",
|
||||
"bc09fca1804f7e69da93c2f2028eb238c227f2e9dda30cd63699232578480a4021b146ad717fbb7e451ce9eb835f43620bf5c514db0f8add49f5d121449d3e87",
|
||||
"xprv9s21ZrQH143K3Y1sd2XVu9wtqxJRvybCfAetjUrMMco6r3v9qZTBeXiBZkS8JxWbcGJZyio8TrZtm6pkbzG8SYt1sxwNLh3Wx7to5pgiVFU"
|
||||
),
|
||||
listOf(
|
||||
"8080808080808080808080808080808080808080808080808080808080808080",
|
||||
"letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic bless",
|
||||
"c0c519bd0e91a2ed54357d9d1ebef6f5af218a153624cf4f2da911a0ed8f7a09e2ef61af0aca007096df430022f7a2b6fb91661a9589097069720d015e4e982f",
|
||||
"xprv9s21ZrQH143K3CSnQNYC3MqAAqHwxeTLhDbhF43A4ss4ciWNmCY9zQGvAKUSqVUf2vPHBTSE1rB2pg4avopqSiLVzXEU8KziNnVPauTqLRo"
|
||||
),
|
||||
listOf(
|
||||
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo vote",
|
||||
"dd48c104698c30cfe2b6142103248622fb7bb0ff692eebb00089b32d22484e1613912f0a5b694407be899ffd31ed3992c456cdf60f5d4564b8ba3f05a69890ad",
|
||||
"xprv9s21ZrQH143K2WFF16X85T2QCpndrGwx6GueB72Zf3AHwHJaknRXNF37ZmDrtHrrLSHvbuRejXcnYxoZKvRquTPyp2JiNG3XcjQyzSEgqCB"
|
||||
),
|
||||
listOf(
|
||||
"9e885d952ad362caeb4efe34a8e91bd2",
|
||||
"ozone drill grab fiber curtain grace pudding thank cruise elder eight picnic",
|
||||
"274ddc525802f7c828d8ef7ddbcdc5304e87ac3535913611fbbfa986d0c9e5476c91689f9c8a54fd55bd38606aa6a8595ad213d4c9c9f9aca3fb217069a41028",
|
||||
"xprv9s21ZrQH143K2oZ9stBYpoaZ2ktHj7jLz7iMqpgg1En8kKFTXJHsjxry1JbKH19YrDTicVwKPehFKTbmaxgVEc5TpHdS1aYhB2s9aFJBeJH"
|
||||
),
|
||||
listOf(
|
||||
"6610b25967cdcca9d59875f5cb50b0ea75433311869e930b",
|
||||
"gravity machine north sort system female filter attitude volume fold club stay feature office ecology stable narrow fog",
|
||||
"628c3827a8823298ee685db84f55caa34b5cc195a778e52d45f59bcf75aba68e4d7590e101dc414bc1bbd5737666fbbef35d1f1903953b66624f910feef245ac",
|
||||
"xprv9s21ZrQH143K3uT8eQowUjsxrmsA9YUuQQK1RLqFufzybxD6DH6gPY7NjJ5G3EPHjsWDrs9iivSbmvjc9DQJbJGatfa9pv4MZ3wjr8qWPAK"
|
||||
),
|
||||
listOf(
|
||||
"68a79eaca2324873eacc50cb9c6eca8cc68ea5d936f98787c60c7ebc74e6ce7c",
|
||||
"hamster diagram private dutch cause delay private meat slide toddler razor book happy fancy gospel tennis maple dilemma loan word shrug inflict delay length",
|
||||
"64c87cde7e12ecf6704ab95bb1408bef047c22db4cc7491c4271d170a1b213d20b385bc1588d9c7b38f1b39d415665b8a9030c9ec653d75e65f847d8fc1fc440",
|
||||
"xprv9s21ZrQH143K2XTAhys3pMNcGn261Fi5Ta2Pw8PwaVPhg3D8DWkzWQwjTJfskj8ofb81i9NP2cUNKxwjueJHHMQAnxtivTA75uUFqPFeWzk"
|
||||
),
|
||||
listOf(
|
||||
"c0ba5a8e914111210f2bd131f3d5e08d",
|
||||
"scheme spot photo card baby mountain device kick cradle pact join borrow",
|
||||
"ea725895aaae8d4c1cf682c1bfd2d358d52ed9f0f0591131b559e2724bb234fca05aa9c02c57407e04ee9dc3b454aa63fbff483a8b11de949624b9f1831a9612",
|
||||
"xprv9s21ZrQH143K3FperxDp8vFsFycKCRcJGAFmcV7umQmcnMZaLtZRt13QJDsoS5F6oYT6BB4sS6zmTmyQAEkJKxJ7yByDNtRe5asP2jFGhT6"
|
||||
),
|
||||
listOf(
|
||||
"6d9be1ee6ebd27a258115aad99b7317b9c8d28b6d76431c3",
|
||||
"horn tenant knee talent sponsor spell gate clip pulse soap slush warm silver nephew swap uncle crack brave",
|
||||
"fd579828af3da1d32544ce4db5c73d53fc8acc4ddb1e3b251a31179cdb71e853c56d2fcb11aed39898ce6c34b10b5382772db8796e52837b54468aeb312cfc3d",
|
||||
"xprv9s21ZrQH143K3R1SfVZZLtVbXEB9ryVxmVtVMsMwmEyEvgXN6Q84LKkLRmf4ST6QrLeBm3jQsb9gx1uo23TS7vo3vAkZGZz71uuLCcywUkt"
|
||||
),
|
||||
listOf(
|
||||
"9f6a2878b2520799a44ef18bc7df394e7061a224d2c33cd015b157d746869863",
|
||||
"panda eyebrow bullet gorilla call smoke muffin taste mesh discover soft ostrich alcohol speed nation flash devote level hobby quick inner drive ghost inside",
|
||||
"72be8e052fc4919d2adf28d5306b5474b0069df35b02303de8c1729c9538dbb6fc2d731d5f832193cd9fb6aeecbc469594a70e3dd50811b5067f3b88b28c3e8d",
|
||||
"xprv9s21ZrQH143K2WNnKmssvZYM96VAr47iHUQUTUyUXH3sAGNjhJANddnhw3i3y3pBbRAVk5M5qUGFr4rHbEWwXgX4qrvrceifCYQJbbFDems"
|
||||
),
|
||||
listOf(
|
||||
"23db8160a31d3e0dca3688ed941adbf3",
|
||||
"cat swing flag economy stadium alone churn speed unique patch report train",
|
||||
"deb5f45449e615feff5640f2e49f933ff51895de3b4381832b3139941c57b59205a42480c52175b6efcffaa58a2503887c1e8b363a707256bdd2b587b46541f5",
|
||||
"xprv9s21ZrQH143K4G28omGMogEoYgDQuigBo8AFHAGDaJdqQ99QKMQ5J6fYTMfANTJy6xBmhvsNZ1CJzRZ64PWbnTFUn6CDV2FxoMDLXdk95DQ"
|
||||
),
|
||||
listOf(
|
||||
"8197a4a47f0425faeaa69deebc05ca29c0a5b5cc76ceacc0",
|
||||
"light rule cinnamon wrap drastic word pride squirrel upgrade then income fatal apart sustain crack supply proud access",
|
||||
"4cbdff1ca2db800fd61cae72a57475fdc6bab03e441fd63f96dabd1f183ef5b782925f00105f318309a7e9c3ea6967c7801e46c8a58082674c860a37b93eda02",
|
||||
"xprv9s21ZrQH143K3wtsvY8L2aZyxkiWULZH4vyQE5XkHTXkmx8gHo6RUEfH3Jyr6NwkJhvano7Xb2o6UqFKWHVo5scE31SGDCAUsgVhiUuUDyh"
|
||||
),
|
||||
listOf(
|
||||
"066dca1a2bb7e8a1db2832148ce9933eea0f3ac9548d793112d9a95c9407efad",
|
||||
"all hour make first leader extend hole alien behind guard gospel lava path output census museum junior mass reopen famous sing advance salt reform",
|
||||
"26e975ec644423f4a4c4f4215ef09b4bd7ef924e85d1d17c4cf3f136c2863cf6df0a475045652c57eb5fb41513ca2a2d67722b77e954b4b3fc11f7590449191d",
|
||||
"xprv9s21ZrQH143K3rEfqSM4QZRVmiMuSWY9wugscmaCjYja3SbUD3KPEB1a7QXJoajyR2T1SiXU7rFVRXMV9XdYVSZe7JoUXdP4SRHTxsT1nzm"
|
||||
),
|
||||
listOf(
|
||||
"f30f8c1da665478f49b001d94c5fc452",
|
||||
"vessel ladder alter error federal sibling chat ability sun glass valve picture",
|
||||
"2aaa9242daafcee6aa9d7269f17d4efe271e1b9a529178d7dc139cd18747090bf9d60295d0ce74309a78852a9caadf0af48aae1c6253839624076224374bc63f",
|
||||
"xprv9s21ZrQH143K2QWV9Wn8Vvs6jbqfF1YbTCdURQW9dLFKDovpKaKrqS3SEWsXCu6ZNky9PSAENg6c9AQYHcg4PjopRGGKmdD313ZHszymnps"
|
||||
),
|
||||
listOf(
|
||||
"c10ec20dc3cd9f652c7fac2f1230f7a3c828389a14392f05",
|
||||
"scissors invite lock maple supreme raw rapid void congress muscle digital elegant little brisk hair mango congress clump",
|
||||
"7b4a10be9d98e6cba265566db7f136718e1398c71cb581e1b2f464cac1ceedf4f3e274dc270003c670ad8d02c4558b2f8e39edea2775c9e232c7cb798b069e88",
|
||||
"xprv9s21ZrQH143K4aERa2bq7559eMCCEs2QmmqVjUuzfy5eAeDX4mqZffkYwpzGQRE2YEEeLVRoH4CSHxianrFaVnMN2RYaPUZJhJx8S5j6puX"
|
||||
),
|
||||
listOf(
|
||||
"f585c11aec520db57dd353c69554b21a89b20fb0650966fa0a9d6f74fd989d8f",
|
||||
"void come effort suffer camp survey warrior heavy shoot primary clutch crush open amazing screen patrol group space point ten exist slush involve unfold",
|
||||
"01f5bced59dec48e362f2c45b5de68b9fd6c92c6634f44d6d40aab69056506f0e35524a518034ddc1192e1dacd32c1ed3eaa3c3b131c88ed8e7e54c49a5d0998",
|
||||
"xprv9s21ZrQH143K39rnQJknpH1WEPFJrzmAqqasiDcVrNuk926oizzJDDQkdiTvNPr2FYDYzWgiMiC63YmfPAa2oPyNB23r2g7d1yiK6WpqaQS"
|
||||
listOf(
|
||||
"00000000000000000000000000000000",
|
||||
"abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about",
|
||||
"c55257c360c07c72029aebc1b53c05ed0362ada38ead3e3e9efa3708e53495531f09a6987599d18264c1e1c92f2cf141630c7a3c4ab7c81b2f001698e7463b04",
|
||||
"xprv9s21ZrQH143K3h3fDYiay8mocZ3afhfULfb5GX8kCBdno77K4HiA15Tg23wpbeF1pLfs1c5SPmYHrEpTuuRhxMwvKDwqdKiGJS9XFKzUsAF"
|
||||
),
|
||||
listOf(
|
||||
"7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f",
|
||||
"legal winner thank year wave sausage worth useful legal winner thank yellow",
|
||||
"2e8905819b8723fe2c1d161860e5ee1830318dbf49a83bd451cfb8440c28bd6fa457fe1296106559a3c80937a1c1069be3a3a5bd381ee6260e8d9739fce1f607",
|
||||
"xprv9s21ZrQH143K2gA81bYFHqU68xz1cX2APaSq5tt6MFSLeXnCKV1RVUJt9FWNTbrrryem4ZckN8k4Ls1H6nwdvDTvnV7zEXs2HgPezuVccsq"
|
||||
),
|
||||
listOf(
|
||||
"80808080808080808080808080808080",
|
||||
"letter advice cage absurd amount doctor acoustic avoid letter advice cage above",
|
||||
"d71de856f81a8acc65e6fc851a38d4d7ec216fd0796d0a6827a3ad6ed5511a30fa280f12eb2e47ed2ac03b5c462a0358d18d69fe4f985ec81778c1b370b652a8",
|
||||
"xprv9s21ZrQH143K2shfP28KM3nr5Ap1SXjz8gc2rAqqMEynmjt6o1qboCDpxckqXavCwdnYds6yBHZGKHv7ef2eTXy461PXUjBFQg6PrwY4Gzq"
|
||||
),
|
||||
listOf(
|
||||
"ffffffffffffffffffffffffffffffff",
|
||||
"zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong",
|
||||
"ac27495480225222079d7be181583751e86f571027b0497b5b5d11218e0a8a13332572917f0f8e5a589620c6f15b11c61dee327651a14c34e18231052e48c069",
|
||||
"xprv9s21ZrQH143K2V4oox4M8Zmhi2Fjx5XK4Lf7GKRvPSgydU3mjZuKGCTg7UPiBUD7ydVPvSLtg9hjp7MQTYsW67rZHAXeccqYqrsx8LcXnyd"
|
||||
),
|
||||
listOf(
|
||||
"000000000000000000000000000000000000000000000000",
|
||||
"abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon agent",
|
||||
"035895f2f481b1b0f01fcf8c289c794660b289981a78f8106447707fdd9666ca06da5a9a565181599b79f53b844d8a71dd9f439c52a3d7b3e8a79c906ac845fa",
|
||||
"xprv9s21ZrQH143K3mEDrypcZ2usWqFgzKB6jBBx9B6GfC7fu26X6hPRzVjzkqkPvDqp6g5eypdk6cyhGnBngbjeHTe4LsuLG1cCmKJka5SMkmU"
|
||||
),
|
||||
listOf(
|
||||
"7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f",
|
||||
"legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth useful legal will",
|
||||
"f2b94508732bcbacbcc020faefecfc89feafa6649a5491b8c952cede496c214a0c7b3c392d168748f2d4a612bada0753b52a1c7ac53c1e93abd5c6320b9e95dd",
|
||||
"xprv9s21ZrQH143K3Lv9MZLj16np5GzLe7tDKQfVusBni7toqJGcnKRtHSxUwbKUyUWiwpK55g1DUSsw76TF1T93VT4gz4wt5RM23pkaQLnvBh7"
|
||||
),
|
||||
listOf(
|
||||
"808080808080808080808080808080808080808080808080",
|
||||
"letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic avoid letter always",
|
||||
"107d7c02a5aa6f38c58083ff74f04c607c2d2c0ecc55501dadd72d025b751bc27fe913ffb796f841c49b1d33b610cf0e91d3aa239027f5e99fe4ce9e5088cd65",
|
||||
"xprv9s21ZrQH143K3VPCbxbUtpkh9pRG371UCLDz3BjceqP1jz7XZsQ5EnNkYAEkfeZp62cDNj13ZTEVG1TEro9sZ9grfRmcYWLBhCocViKEJae"
|
||||
),
|
||||
listOf(
|
||||
"ffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo when",
|
||||
"0cd6e5d827bb62eb8fc1e262254223817fd068a74b5b449cc2f667c3f1f985a76379b43348d952e2265b4cd129090758b3e3c2c49103b5051aac2eaeb890a528",
|
||||
"xprv9s21ZrQH143K36Ao5jHRVhFGDbLP6FCx8BEEmpru77ef3bmA928BxsqvVM27WnvvyfWywiFN8K6yToqMaGYfzS6Db1EHAXT5TuyCLBXUfdm"
|
||||
),
|
||||
listOf(
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art",
|
||||
"bda85446c68413707090a52022edd26a1c9462295029f2e60cd7c4f2bbd3097170af7a4d73245cafa9c3cca8d561a7c3de6f5d4a10be8ed2a5e608d68f92fcc8",
|
||||
"xprv9s21ZrQH143K32qBagUJAMU2LsHg3ka7jqMcV98Y7gVeVyNStwYS3U7yVVoDZ4btbRNf4h6ibWpY22iRmXq35qgLs79f312g2kj5539ebPM"
|
||||
),
|
||||
listOf(
|
||||
"7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f",
|
||||
"legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth title",
|
||||
"bc09fca1804f7e69da93c2f2028eb238c227f2e9dda30cd63699232578480a4021b146ad717fbb7e451ce9eb835f43620bf5c514db0f8add49f5d121449d3e87",
|
||||
"xprv9s21ZrQH143K3Y1sd2XVu9wtqxJRvybCfAetjUrMMco6r3v9qZTBeXiBZkS8JxWbcGJZyio8TrZtm6pkbzG8SYt1sxwNLh3Wx7to5pgiVFU"
|
||||
),
|
||||
listOf(
|
||||
"8080808080808080808080808080808080808080808080808080808080808080",
|
||||
"letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic bless",
|
||||
"c0c519bd0e91a2ed54357d9d1ebef6f5af218a153624cf4f2da911a0ed8f7a09e2ef61af0aca007096df430022f7a2b6fb91661a9589097069720d015e4e982f",
|
||||
"xprv9s21ZrQH143K3CSnQNYC3MqAAqHwxeTLhDbhF43A4ss4ciWNmCY9zQGvAKUSqVUf2vPHBTSE1rB2pg4avopqSiLVzXEU8KziNnVPauTqLRo"
|
||||
),
|
||||
listOf(
|
||||
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo vote",
|
||||
"dd48c104698c30cfe2b6142103248622fb7bb0ff692eebb00089b32d22484e1613912f0a5b694407be899ffd31ed3992c456cdf60f5d4564b8ba3f05a69890ad",
|
||||
"xprv9s21ZrQH143K2WFF16X85T2QCpndrGwx6GueB72Zf3AHwHJaknRXNF37ZmDrtHrrLSHvbuRejXcnYxoZKvRquTPyp2JiNG3XcjQyzSEgqCB"
|
||||
),
|
||||
listOf(
|
||||
"9e885d952ad362caeb4efe34a8e91bd2",
|
||||
"ozone drill grab fiber curtain grace pudding thank cruise elder eight picnic",
|
||||
"274ddc525802f7c828d8ef7ddbcdc5304e87ac3535913611fbbfa986d0c9e5476c91689f9c8a54fd55bd38606aa6a8595ad213d4c9c9f9aca3fb217069a41028",
|
||||
"xprv9s21ZrQH143K2oZ9stBYpoaZ2ktHj7jLz7iMqpgg1En8kKFTXJHsjxry1JbKH19YrDTicVwKPehFKTbmaxgVEc5TpHdS1aYhB2s9aFJBeJH"
|
||||
),
|
||||
listOf(
|
||||
"6610b25967cdcca9d59875f5cb50b0ea75433311869e930b",
|
||||
"gravity machine north sort system female filter attitude volume fold club stay feature office ecology stable narrow fog",
|
||||
"628c3827a8823298ee685db84f55caa34b5cc195a778e52d45f59bcf75aba68e4d7590e101dc414bc1bbd5737666fbbef35d1f1903953b66624f910feef245ac",
|
||||
"xprv9s21ZrQH143K3uT8eQowUjsxrmsA9YUuQQK1RLqFufzybxD6DH6gPY7NjJ5G3EPHjsWDrs9iivSbmvjc9DQJbJGatfa9pv4MZ3wjr8qWPAK"
|
||||
),
|
||||
listOf(
|
||||
"68a79eaca2324873eacc50cb9c6eca8cc68ea5d936f98787c60c7ebc74e6ce7c",
|
||||
"hamster diagram private dutch cause delay private meat slide toddler razor book happy fancy gospel tennis maple dilemma loan word shrug inflict delay length",
|
||||
"64c87cde7e12ecf6704ab95bb1408bef047c22db4cc7491c4271d170a1b213d20b385bc1588d9c7b38f1b39d415665b8a9030c9ec653d75e65f847d8fc1fc440",
|
||||
"xprv9s21ZrQH143K2XTAhys3pMNcGn261Fi5Ta2Pw8PwaVPhg3D8DWkzWQwjTJfskj8ofb81i9NP2cUNKxwjueJHHMQAnxtivTA75uUFqPFeWzk"
|
||||
),
|
||||
listOf(
|
||||
"c0ba5a8e914111210f2bd131f3d5e08d",
|
||||
"scheme spot photo card baby mountain device kick cradle pact join borrow",
|
||||
"ea725895aaae8d4c1cf682c1bfd2d358d52ed9f0f0591131b559e2724bb234fca05aa9c02c57407e04ee9dc3b454aa63fbff483a8b11de949624b9f1831a9612",
|
||||
"xprv9s21ZrQH143K3FperxDp8vFsFycKCRcJGAFmcV7umQmcnMZaLtZRt13QJDsoS5F6oYT6BB4sS6zmTmyQAEkJKxJ7yByDNtRe5asP2jFGhT6"
|
||||
),
|
||||
listOf(
|
||||
"6d9be1ee6ebd27a258115aad99b7317b9c8d28b6d76431c3",
|
||||
"horn tenant knee talent sponsor spell gate clip pulse soap slush warm silver nephew swap uncle crack brave",
|
||||
"fd579828af3da1d32544ce4db5c73d53fc8acc4ddb1e3b251a31179cdb71e853c56d2fcb11aed39898ce6c34b10b5382772db8796e52837b54468aeb312cfc3d",
|
||||
"xprv9s21ZrQH143K3R1SfVZZLtVbXEB9ryVxmVtVMsMwmEyEvgXN6Q84LKkLRmf4ST6QrLeBm3jQsb9gx1uo23TS7vo3vAkZGZz71uuLCcywUkt"
|
||||
),
|
||||
listOf(
|
||||
"9f6a2878b2520799a44ef18bc7df394e7061a224d2c33cd015b157d746869863",
|
||||
"panda eyebrow bullet gorilla call smoke muffin taste mesh discover soft ostrich alcohol speed nation flash devote level hobby quick inner drive ghost inside",
|
||||
"72be8e052fc4919d2adf28d5306b5474b0069df35b02303de8c1729c9538dbb6fc2d731d5f832193cd9fb6aeecbc469594a70e3dd50811b5067f3b88b28c3e8d",
|
||||
"xprv9s21ZrQH143K2WNnKmssvZYM96VAr47iHUQUTUyUXH3sAGNjhJANddnhw3i3y3pBbRAVk5M5qUGFr4rHbEWwXgX4qrvrceifCYQJbbFDems"
|
||||
),
|
||||
listOf(
|
||||
"23db8160a31d3e0dca3688ed941adbf3",
|
||||
"cat swing flag economy stadium alone churn speed unique patch report train",
|
||||
"deb5f45449e615feff5640f2e49f933ff51895de3b4381832b3139941c57b59205a42480c52175b6efcffaa58a2503887c1e8b363a707256bdd2b587b46541f5",
|
||||
"xprv9s21ZrQH143K4G28omGMogEoYgDQuigBo8AFHAGDaJdqQ99QKMQ5J6fYTMfANTJy6xBmhvsNZ1CJzRZ64PWbnTFUn6CDV2FxoMDLXdk95DQ"
|
||||
),
|
||||
listOf(
|
||||
"8197a4a47f0425faeaa69deebc05ca29c0a5b5cc76ceacc0",
|
||||
"light rule cinnamon wrap drastic word pride squirrel upgrade then income fatal apart sustain crack supply proud access",
|
||||
"4cbdff1ca2db800fd61cae72a57475fdc6bab03e441fd63f96dabd1f183ef5b782925f00105f318309a7e9c3ea6967c7801e46c8a58082674c860a37b93eda02",
|
||||
"xprv9s21ZrQH143K3wtsvY8L2aZyxkiWULZH4vyQE5XkHTXkmx8gHo6RUEfH3Jyr6NwkJhvano7Xb2o6UqFKWHVo5scE31SGDCAUsgVhiUuUDyh"
|
||||
),
|
||||
listOf(
|
||||
"066dca1a2bb7e8a1db2832148ce9933eea0f3ac9548d793112d9a95c9407efad",
|
||||
"all hour make first leader extend hole alien behind guard gospel lava path output census museum junior mass reopen famous sing advance salt reform",
|
||||
"26e975ec644423f4a4c4f4215ef09b4bd7ef924e85d1d17c4cf3f136c2863cf6df0a475045652c57eb5fb41513ca2a2d67722b77e954b4b3fc11f7590449191d",
|
||||
"xprv9s21ZrQH143K3rEfqSM4QZRVmiMuSWY9wugscmaCjYja3SbUD3KPEB1a7QXJoajyR2T1SiXU7rFVRXMV9XdYVSZe7JoUXdP4SRHTxsT1nzm"
|
||||
),
|
||||
listOf(
|
||||
"f30f8c1da665478f49b001d94c5fc452",
|
||||
"vessel ladder alter error federal sibling chat ability sun glass valve picture",
|
||||
"2aaa9242daafcee6aa9d7269f17d4efe271e1b9a529178d7dc139cd18747090bf9d60295d0ce74309a78852a9caadf0af48aae1c6253839624076224374bc63f",
|
||||
"xprv9s21ZrQH143K2QWV9Wn8Vvs6jbqfF1YbTCdURQW9dLFKDovpKaKrqS3SEWsXCu6ZNky9PSAENg6c9AQYHcg4PjopRGGKmdD313ZHszymnps"
|
||||
),
|
||||
listOf(
|
||||
"c10ec20dc3cd9f652c7fac2f1230f7a3c828389a14392f05",
|
||||
"scissors invite lock maple supreme raw rapid void congress muscle digital elegant little brisk hair mango congress clump",
|
||||
"7b4a10be9d98e6cba265566db7f136718e1398c71cb581e1b2f464cac1ceedf4f3e274dc270003c670ad8d02c4558b2f8e39edea2775c9e232c7cb798b069e88",
|
||||
"xprv9s21ZrQH143K4aERa2bq7559eMCCEs2QmmqVjUuzfy5eAeDX4mqZffkYwpzGQRE2YEEeLVRoH4CSHxianrFaVnMN2RYaPUZJhJx8S5j6puX"
|
||||
),
|
||||
listOf(
|
||||
"f585c11aec520db57dd353c69554b21a89b20fb0650966fa0a9d6f74fd989d8f",
|
||||
"void come effort suffer camp survey warrior heavy shoot primary clutch crush open amazing screen patrol group space point ten exist slush involve unfold",
|
||||
"01f5bced59dec48e362f2c45b5de68b9fd6c92c6634f44d6d40aab69056506f0e35524a518034ddc1192e1dacd32c1ed3eaa3c3b131c88ed8e7e54c49a5d0998",
|
||||
"xprv9s21ZrQH143K39rnQJknpH1WEPFJrzmAqqasiDcVrNuk926oizzJDDQkdiTvNPr2FYDYzWgiMiC63YmfPAa2oPyNB23r2g7d1yiK6WpqaQS"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
|
|
@ -11,38 +11,219 @@ class Pbkdf2Sha512Test : BehaviorSpec({
|
|||
Given("The test vectors") {
|
||||
When("each provided input is used to derive keys") {
|
||||
Then("it should match the expected output") {
|
||||
@Suppress("MaxLineLength")
|
||||
forAll(
|
||||
// modified from https://stackoverflow.com/a/19898265/178433
|
||||
row("passDATAb00AB7YxDTT", "saltKEYbcTcXHCBxtjD", 1, 512, "cbe6088ad4359af42e603c2a33760ef9d4017a7b2aad10af46f992c660a0b461ecb0dc2a79c2570941bea6a08d15d6887e79f32b132e1c134e9525eeddd744fa"),
|
||||
row("passDATAb00AB7YxDTTl", "saltKEYbcTcXHCBxtjD2", 3, 512, "3660a4d16e9f8c2d467a051d95444d33148fcb8e595767f05f554487a1f97426b8dad9a83538144539b14b9274a819a8bbe59267cc51073746eef67b6042ed9d"),
|
||||
row("passDATAb00AB7YxDTTlR", "saltKEYbcTcXHCBxtjD2P", 5, 512, "cc2fe2ab0ba48720dc1db53e850219fca6c5eada37023cb952e7f26d4ab707bcf7e25360e28db6cc97df1d6bf5fa49b2e0b1282fd6b05fed5766dca7bb306a2c"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE5", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJe", 7, 512, "3cba5dc465030d7d883df2d2eba356c2daf047605d873be576385acf50d57a574d4ccc2f65cfd63d04c6746d553605c7a1eafbadb86fde0600c6a0fefab076c3"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJem", 11, 512, "22110678bafc2672df890e9e54f4a8ca4cd4b92894a36003f293de1209497e8c4b1ab7a0e5da5868e1398787a3d3dd7a54d3ef0912bcf2322dd0521cd342c156"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57U", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemk", 13, 512, "726a143f2843b01b3074351842db496f102ca333e3eef51ae262984812cc133e57d61c89d90f455d64555b38f7a8f5dbf74f2ab1f5e3bd30eda32103d76365cc"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi0", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy", 17, 512, "b14ac88b22ca14b4a036159b9d671e542702ec07239108ea756040a7e189c6d4680e7875fc92849d853c93e9a89bf232a08fbd0d6e770a5b78ff6be5fd272d64"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6", 19, 512, "9f6b95569376f14c9b716741297b0f64e9ea46b837c7a4c2831d3c9f7a94633aa4eda057916ae03c09030aed2c6dd6203172e257ab08b98aa1ce60fe90a7a18f"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04U", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6P", 23, 512, "92c92d9ffe4242ed0691a8b704834621e909e2a03c101b4f90e098909039b819f3bcb55f08058fa96412d17c2e2b0ad52b095f782fb2969c50ff1e1262844cf9"),
|
||||
row("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", 29, 512, "5edc3d6649fa05c07622dede976997afe683f8b489d996509e2bf9421cd81f49b7bd38e78ad7ccad0a2a9070710ad451da7b6f5b207a0ee17c14ad2054bf492a"),
|
||||
row("passDATAb00AB7YxDTT", "saltKEYbcTcXHCBxtjD", 31, 504, "15530800da88a0776a812937eb2afeea4a2e7ecad633a918f1024688f73c5721d8bfcaa87f253cf50b9181ab3bb28043e13b1ce859f71d002674806bab0547"),
|
||||
row("passDATAb00AB7YxDTTl", "saltKEYbcTcXHCBxtjD2", 37, 504, "6a71211a3b59e4b76fe962e17c2db6232a84a10edc043807831992665ff9d0b9cc76c6f5dc84297050bdd026e05144e3e651b3f8b4108bb050e576ba0b9440"),
|
||||
row("passDATAb00AB7YxDTTlR", "saltKEYbcTcXHCBxtjD2P", 41, 504, "613a19696be76eb92a705b9a2fe6eb12cab31086c9b2778b8b83fc7f40cc3a02b39b3b17cbd0c97938be2e6e8d6f6bf73afbe7dea8cffcdd4e4bc6853f4e40"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE5", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJe", 43, 504, "e0d5567fb5f45381284d7d67a3386f943e14b1af2766b675cdd988614e40ffc012b9f320b5e33d3f6aea8af3fcd2f1077b4082e70414750af2b1b3bbf5948b"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJem", 47, 504, "c92ce4dceb97d3411e7a6ccd21d143d6a0f830b3d6e2ebe8dd6ff5aaac8d879bb7cda02dd652471243cb30e3bef8213dc4b6e4e9e2623af9702d67c30ea8ed"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57U", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemk", 53, 504, "40de5197dc99cf3c788ba10ad93fe8213584cc2c9304fce1ad2c0df261e28aac6769bebf7b19f4ca5b9758ad97c193a31a89faa80f1a0e75c8347da134f4c6"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi0", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy", 61, 504, "d2e627cbe497af8eba3c2d22bbb765c14b065259d3147f58e2d567236aebd0c9a2b00f4cf2d54f3f8235ee02d3541d4c6f7240f5fd9a47a94ce914a648c016"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6", 67, 504, "cc51a623e2a197a8b009815a6d4ebebaaa247beb7a0643ea2b77909ff10b4c6d85bf080e55f2954ae003a1cfb78fd940fedfd67fe8ed4849e2bc1ae42ec055"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04U", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6P", 71, 504, "f8e55259f1d1d884d0ffbd1d22bc7894c53e2a313131499ba8f35faeda6208a80c16ac93f5c0b79c3a1575d92f6a833ae7036d52be926e6468637c28222cd7"),
|
||||
row("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", 73, 504, "d5ef8859566cabceb37b6f4a91e54a36067084bed91d9ccbb4d1e65942764cc5ff45304a4788f1a181e4415df2104f299aaadaed25392b74d5ecdf1af09c10"),
|
||||
row("passDATAb00AB7YxDTT", "saltKEYbcTcXHCBxtjD", 79, 520, "3b9359b5639de3f8ec4009491b5fafe764548794c87f44a9fd6a7b9364522bee36b6b71819b71e9130dc6df1db6eba29133393762d9d89f68dd2d5d9d61488937e"),
|
||||
row("passDATAb00AB7YxDTTl", "saltKEYbcTcXHCBxtjD2", 83, 520, "8ec068d1a5ad8aec6ea95aab0b4545e86adeb940bfa71c9b6e8969cd70239ec60020137c8094cf466d2129f98bc55b53077e0befb72615f0fe38554cb22f2cf455"),
|
||||
row("passDATAb00AB7YxDTTlR", "saltKEYbcTcXHCBxtjD2P", 89, 520, "c882fda77fec48a78af3393a27cdcda40f8392ac5997ed150e45cc501dbcb1a4fdb770556f12f6c7c22bd8d111051bb6a9a260cff821f2cb5902ea6a6536338cf9"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE5", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJe", 97, 520, "d641b7852c0f5ad0bba73b155722bd9f0a6142765d0719eaabc36d25d7dc0a10edb2511d463748e611349a6c71b9b7f5dea5e445c1c98afc209387d6786970d21c"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJem", 101, 520, "d44e4dae8a7a5223898f419c18645191d57748bfdeef5b0f49bc36b5efa3611c76e82f097de834de3294bbad9f0a8071c0a09587bf748ed04118706f384ee87679"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57U", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemk", 103, 520, "2dbd66db3e0b9de948e5a76821a246bb1b03d5da68d1c1c0f7c6dbc41d5716caff82ac844d8107febb96ae9bae3958ade57528e27e53dab024263701ea432b9ed4"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi0", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy", 107, 520, "2186bb78640371f3912d8ce507a4323c903608ec54b85ecc43608eafe52ee1f403f3e68e09a150599ca9f70097bc51f232d6449586a70fc5b7b0a21c629110563d"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6", 109, 520, "c512aa138dd99b1a785c3ec048dddd4eb569d7f9eb7f206b0544746e266f214fdcc4f5d5ba0869140010bdce517a550c58b527439dc40463f9c7fba7e2cbbc8820"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04U", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6P", 113, 520, "e4c2be8f5cad779f90f54bec52888d6a1684f55d5145103515981217cc6609a039a86a41b3d22bae22f9a6687a605ae5c9e9dc411d83ba892f69af608b37fb89e8"),
|
||||
row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04Uz3ebEAhzZ4ve1A2wg5CnLXdZC5Y7gwfVgbEgZSTmoYQSzC5OW4dfrjqiwApTACO6xoOL1AjWj6X6f6qFfF8TVmOzU9RhOd1N4QtzWI4fP6FYttNz5FuLdtYVXWVXH2Tf7I9fieMeWCHTMkM4VcmQyQHpbcP8MEb5f1g6Ckg5xk3HQr3wMBvQcOHpCPy1K8HCM7a5wkPDhgVA0BVmwNpsRIbDQZRtHK6dT6bGyalp6gbFZBuBHwD86gTzkrFY7HkOVrgc0gJcGJZe65Ce8v4Jn5OzkuVsiU8efm2Pw2RnbpWSAr7SkVdCwXK2XSJDQ5fZ4HBEz9VTFYrG23ELuLjvx5njOLNgDAJuf5JB2tn4nMjjcnl1e8qcYVwZqFzEv2zhLyDWMkV4tzl4asLnvyAxTBkxPRZj2pRABWwb3kEofpsHYxMTAn38YSpZreoXipZWBnu6HDURaruXaIPYFPYHl9Ls9wsuD7rzaGfbOyfVgLIGK5rODphwRA7lm88bGKY8b7tWOtepyEvaLxMI7GZF5ScwpZTYeEDNUKPzvM2Im9zehIaznpguNdNXNMLWnwPu4H6zEvajkw3G3ucSiXKmh6XNe3hkdSANm3vnxzRXm4fcuzAx68IElXE2bkGFElluDLo6EsUDWZ4JIWBVaDwYdJx8uCXbQdoifzCs5kuuClaDaDqIhb5hJ2WR8mxiueFsS0aDGdIYmye5svmNmzQxFmdOkHoF7CfwuU1yy4uEEt9vPSP2wFp1dyaMvJW68vtB4kddLmI6gIgVVcT6ZX1Qm6WsusPrdisPLB2ScodXojCbL3DLj6PKG8QDVMWTrL1TpafT2wslRledWIhsTlv2mI3C066WMcTSwKLXdEDhVvFJ6ShiLKSN7gnRrlE0BnAw", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6PlBdILBOkKUB6TGTPJXh1tpdOHTG6KuIvcbQp9qWjaf1uxAKgiTtYRIHhxjJI2viVa6fDZ67QOouOaf2RXQhpsWaTtAVnff6PIFcvJhdPDFGV5nvmZWoCZQodj6yXRDHPw9PyF0iLYm9uFtEunlAAxGB5qqea4X5tZvB1OfLVwymY3a3JPjdxTdvHxCHbqqE0zip61JNqdmeWxGtlRBC6CGoCiHO4XxHCntQBRJDcG0zW7joTdgtTBarsQQhlLXBGMNBSNmmTbDf3hFtawUBCJH18IAiRMwyeQJbJ2bERsY3MVRPuYCf4Au7gN72iGh1lRktSQtEFye7pO46kMXRrEjHQWXInMzzy7X2StXUzHVTFF2VdOoKn0WUqFNvB6PF7qIsOlYKj57bi1Psa34s85WxMSbTkhrd7VHdHZkTVaWdraohXYOePdeEvIwObCGEXkETUzqM5P2yzoBOJSdjpIYaa8zzdLD3yrb1TwCZuJVxsrq0XXY6vErU4QntsW0972XmGNyumFNJiPm4ONKh1RLvS1kddY3nm8276S4TUuZfrRQO8QxZRNuSaZI8JRZp5VojB5DktuMxAQkqoPjQ5Vtb6oXeOyY591CB1MEW1fLTCs0NrL321SaNRMqza1ETogAxpEiYwZ6pIgnMmSqNMRdZnCqA4gMWw1lIVATWK83OCeicNRUNOdfzS7A8vbLcmvKPtpOFvhNzwrrUdkvuKvaYJviQgeR7snGetO9JLCwIlHIj52gMCNU18d32SJl7Xomtl3wIe02SMvq1i1BcaX7lXioqWGmgVqBWU3fsUuGwHi6RUKCCQdEOBfNo2WdpFaCflcgnn0O6jVHCqkv8cQk81AqS00rAmHGCNTwyA6Tq5TXoLlDnC8gAQjDUsZp0z", 127, 520, "bb344a5712d07c4c49dfb9f77e44c5b4c29406c78c84214b07defb36a7898ae7a96c6cfeaf8d753b4bde382c4e48f247a90c17df79726228e2fed11c40b98e2648")
|
||||
row(
|
||||
"passDATAb00AB7YxDTT",
|
||||
"saltKEYbcTcXHCBxtjD",
|
||||
1,
|
||||
512,
|
||||
"cbe6088ad4359af42e603c2a33760ef9d4017a7b2aad10af46f992c660a0b461ecb0dc2a79c2570941bea6a08d15d6887e79f32b132e1c134e9525eeddd744fa"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTl",
|
||||
"saltKEYbcTcXHCBxtjD2",
|
||||
3,
|
||||
512,
|
||||
"3660a4d16e9f8c2d467a051d95444d33148fcb8e595767f05f554487a1f97426b8dad9a83538144539b14b9274a819a8bbe59267cc51073746eef67b6042ed9d"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlR",
|
||||
"saltKEYbcTcXHCBxtjD2P",
|
||||
5,
|
||||
512,
|
||||
"cc2fe2ab0ba48720dc1db53e850219fca6c5eada37023cb952e7f26d4ab707bcf7e25360e28db6cc97df1d6bf5fa49b2e0b1282fd6b05fed5766dca7bb306a2c"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE5",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJe",
|
||||
7,
|
||||
512,
|
||||
"3cba5dc465030d7d883df2d2eba356c2daf047605d873be576385acf50d57a574d4ccc2f65cfd63d04c6746d553605c7a1eafbadb86fde0600c6a0fefab076c3"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJem",
|
||||
11,
|
||||
512,
|
||||
"22110678bafc2672df890e9e54f4a8ca4cd4b92894a36003f293de1209497e8c4b1ab7a0e5da5868e1398787a3d3dd7a54d3ef0912bcf2322dd0521cd342c156"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57U",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemk",
|
||||
13,
|
||||
512,
|
||||
"726a143f2843b01b3074351842db496f102ca333e3eef51ae262984812cc133e57d61c89d90f455d64555b38f7a8f5dbf74f2ab1f5e3bd30eda32103d76365cc"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi0",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy",
|
||||
17,
|
||||
512,
|
||||
"b14ac88b22ca14b4a036159b9d671e542702ec07239108ea756040a7e189c6d4680e7875fc92849d853c93e9a89bf232a08fbd0d6e770a5b78ff6be5fd272d64"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6",
|
||||
19,
|
||||
512,
|
||||
"9f6b95569376f14c9b716741297b0f64e9ea46b837c7a4c2831d3c9f7a94633aa4eda057916ae03c09030aed2c6dd6203172e257ab08b98aa1ce60fe90a7a18f"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04U",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6P",
|
||||
23,
|
||||
512,
|
||||
"92c92d9ffe4242ed0691a8b704834621e909e2a03c101b4f90e098909039b819f3bcb55f08058fa96412d17c2e2b0ad52b095f782fb2969c50ff1e1262844cf9"
|
||||
),
|
||||
row(
|
||||
"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",
|
||||
29,
|
||||
512,
|
||||
"5edc3d6649fa05c07622dede976997afe683f8b489d996509e2bf9421cd81f49b7bd38e78ad7ccad0a2a9070710ad451da7b6f5b207a0ee17c14ad2054bf492a"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTT",
|
||||
"saltKEYbcTcXHCBxtjD",
|
||||
31,
|
||||
504,
|
||||
"15530800da88a0776a812937eb2afeea4a2e7ecad633a918f1024688f73c5721d8bfcaa87f253cf50b9181ab3bb28043e13b1ce859f71d002674806bab0547"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTl",
|
||||
"saltKEYbcTcXHCBxtjD2",
|
||||
37,
|
||||
504,
|
||||
"6a71211a3b59e4b76fe962e17c2db6232a84a10edc043807831992665ff9d0b9cc76c6f5dc84297050bdd026e05144e3e651b3f8b4108bb050e576ba0b9440"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlR",
|
||||
"saltKEYbcTcXHCBxtjD2P",
|
||||
41,
|
||||
504,
|
||||
"613a19696be76eb92a705b9a2fe6eb12cab31086c9b2778b8b83fc7f40cc3a02b39b3b17cbd0c97938be2e6e8d6f6bf73afbe7dea8cffcdd4e4bc6853f4e40"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE5",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJe",
|
||||
43,
|
||||
504,
|
||||
"e0d5567fb5f45381284d7d67a3386f943e14b1af2766b675cdd988614e40ffc012b9f320b5e33d3f6aea8af3fcd2f1077b4082e70414750af2b1b3bbf5948b"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJem",
|
||||
47,
|
||||
504,
|
||||
"c92ce4dceb97d3411e7a6ccd21d143d6a0f830b3d6e2ebe8dd6ff5aaac8d879bb7cda02dd652471243cb30e3bef8213dc4b6e4e9e2623af9702d67c30ea8ed"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57U",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemk",
|
||||
53,
|
||||
504,
|
||||
"40de5197dc99cf3c788ba10ad93fe8213584cc2c9304fce1ad2c0df261e28aac6769bebf7b19f4ca5b9758ad97c193a31a89faa80f1a0e75c8347da134f4c6"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi0",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy",
|
||||
61,
|
||||
504,
|
||||
"d2e627cbe497af8eba3c2d22bbb765c14b065259d3147f58e2d567236aebd0c9a2b00f4cf2d54f3f8235ee02d3541d4c6f7240f5fd9a47a94ce914a648c016"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6",
|
||||
67,
|
||||
504,
|
||||
"cc51a623e2a197a8b009815a6d4ebebaaa247beb7a0643ea2b77909ff10b4c6d85bf080e55f2954ae003a1cfb78fd940fedfd67fe8ed4849e2bc1ae42ec055"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04U",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6P",
|
||||
71,
|
||||
504,
|
||||
"f8e55259f1d1d884d0ffbd1d22bc7894c53e2a313131499ba8f35faeda6208a80c16ac93f5c0b79c3a1575d92f6a833ae7036d52be926e6468637c28222cd7"
|
||||
),
|
||||
row(
|
||||
"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",
|
||||
73,
|
||||
504,
|
||||
"d5ef8859566cabceb37b6f4a91e54a36067084bed91d9ccbb4d1e65942764cc5ff45304a4788f1a181e4415df2104f299aaadaed25392b74d5ecdf1af09c10"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTT",
|
||||
"saltKEYbcTcXHCBxtjD",
|
||||
79,
|
||||
520,
|
||||
"3b9359b5639de3f8ec4009491b5fafe764548794c87f44a9fd6a7b9364522bee36b6b71819b71e9130dc6df1db6eba29133393762d9d89f68dd2d5d9d61488937e"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTl",
|
||||
"saltKEYbcTcXHCBxtjD2",
|
||||
83,
|
||||
520,
|
||||
"8ec068d1a5ad8aec6ea95aab0b4545e86adeb940bfa71c9b6e8969cd70239ec60020137c8094cf466d2129f98bc55b53077e0befb72615f0fe38554cb22f2cf455"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlR",
|
||||
"saltKEYbcTcXHCBxtjD2P",
|
||||
89,
|
||||
520,
|
||||
"c882fda77fec48a78af3393a27cdcda40f8392ac5997ed150e45cc501dbcb1a4fdb770556f12f6c7c22bd8d111051bb6a9a260cff821f2cb5902ea6a6536338cf9"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE5",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJe",
|
||||
97,
|
||||
520,
|
||||
"d641b7852c0f5ad0bba73b155722bd9f0a6142765d0719eaabc36d25d7dc0a10edb2511d463748e611349a6c71b9b7f5dea5e445c1c98afc209387d6786970d21c"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJem",
|
||||
101,
|
||||
520,
|
||||
"d44e4dae8a7a5223898f419c18645191d57748bfdeef5b0f49bc36b5efa3611c76e82f097de834de3294bbad9f0a8071c0a09587bf748ed04118706f384ee87679"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57U",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemk",
|
||||
103,
|
||||
520,
|
||||
"2dbd66db3e0b9de948e5a76821a246bb1b03d5da68d1c1c0f7c6dbc41d5716caff82ac844d8107febb96ae9bae3958ade57528e27e53dab024263701ea432b9ed4"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi0",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy",
|
||||
107,
|
||||
520,
|
||||
"2186bb78640371f3912d8ce507a4323c903608ec54b85ecc43608eafe52ee1f403f3e68e09a150599ca9f70097bc51f232d6449586a70fc5b7b0a21c629110563d"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6",
|
||||
109,
|
||||
520,
|
||||
"c512aa138dd99b1a785c3ec048dddd4eb569d7f9eb7f206b0544746e266f214fdcc4f5d5ba0869140010bdce517a550c58b527439dc40463f9c7fba7e2cbbc8820"
|
||||
),
|
||||
row(
|
||||
"passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04U",
|
||||
"saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6P",
|
||||
113,
|
||||
520,
|
||||
"e4c2be8f5cad779f90f54bec52888d6a1684f55d5145103515981217cc6609a039a86a41b3d22bae22f9a6687a605ae5c9e9dc411d83ba892f69af608b37fb89e8"
|
||||
),
|
||||
row(
|
||||
"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",
|
||||
127,
|
||||
520,
|
||||
"bb344a5712d07c4c49dfb9f77e44c5b4c29406c78c84214b07defb36a7898ae7a96c6cfeaf8d753b4bde382c4e48f247a90c17df79726228e2fed11c40b98e2648"
|
||||
)
|
||||
) { password: String, salt: String, count: Int, length: Int, expected: String ->
|
||||
val result = Pbkdf2Sha512.derive(password.toCharArray(), salt.encodeToByteArray(), count, length)
|
||||
result.toHex() shouldBe expected
|
||||
|
|
|
@ -8,13 +8,14 @@ import javax.crypto.SecretKeyFactorySpi
|
|||
import javax.crypto.spec.PBEKeySpec
|
||||
import javax.crypto.spec.SecretKeySpec
|
||||
|
||||
// Provider constructor was deprecated in Java 9, but for compatibility with Android (Java 8, effectively) the old
|
||||
// constructor must continue to be used.
|
||||
|
||||
/**
|
||||
* A provider to use in the event that the necessary cryptographic algorithm is not available in the
|
||||
* service provider. This provides a bridge to a commonly used Java implementation that has been
|
||||
* moderately adapted to Kotlin.
|
||||
*/
|
||||
// Constructor was deprecated in Java 9, but for compatibility with Android (Java 8, effectively) the old constructor
|
||||
// must continue to be used.
|
||||
@Suppress("DEPRECATION")
|
||||
internal actual class FallbackProvider : Provider(
|
||||
"FallbackProvider",
|
||||
|
@ -22,17 +23,20 @@ internal actual class FallbackProvider : Provider(
|
|||
"Provides a bridge to a default implementation of the PBKDF2WithHmacSHA512 algorithm" +
|
||||
" to use when one is not already available on the device."
|
||||
) {
|
||||
override fun getService(type: String?, algorithm: String?): Service? {
|
||||
override fun getService(
|
||||
type: String?,
|
||||
algorithm: String?
|
||||
): Service? {
|
||||
return ServiceProvider().takeIf {
|
||||
SecretKeyFactory::class.java.simpleName.equals(type, true) &&
|
||||
Pbkdf2KeyFactory.algorithm.equals(algorithm, true)
|
||||
Pbkdf2KeyFactory.ALGORITHM.equals(algorithm, true)
|
||||
}
|
||||
}
|
||||
|
||||
inner class ServiceProvider : Service(
|
||||
this@FallbackProvider,
|
||||
SecretKeyFactory::class.java.simpleName,
|
||||
Pbkdf2KeyFactory.algorithm,
|
||||
Pbkdf2KeyFactory.ALGORITHM,
|
||||
ServiceProvider::class.java.simpleName,
|
||||
null,
|
||||
null
|
||||
|
@ -52,17 +56,20 @@ internal actual class FallbackProvider : Provider(
|
|||
* available so this is used to bridge to a popular java implementation simply as a fallback.
|
||||
*/
|
||||
class Pbkdf2KeyFactory : SecretKeyFactorySpi() {
|
||||
|
||||
override fun engineGenerateSecret(keySpec: KeySpec): SecretKey {
|
||||
return (keySpec as PBEKeySpec).run {
|
||||
SecretKeySpec(Pbkdf2Sha512.derive(password, salt, iterationCount, keyLength), algorithm)
|
||||
SecretKeySpec(Pbkdf2Sha512.derive(password, salt, iterationCount, keyLength), ALGORITHM)
|
||||
}
|
||||
}
|
||||
|
||||
override fun engineGetKeySpec(s: SecretKey, p: Class<*>) = throw UnsupportedOperationException()
|
||||
override fun engineGetKeySpec(
|
||||
s: SecretKey,
|
||||
p: Class<*>
|
||||
) = throw UnsupportedOperationException()
|
||||
|
||||
override fun engineTranslateKey(s: SecretKey?) = throw UnsupportedOperationException()
|
||||
|
||||
companion object {
|
||||
const val algorithm = "PBKDF2WithHmacSHA512"
|
||||
const val ALGORITHM = "PBKDF2WithHmacSHA512"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,7 +22,6 @@ import kotlin.math.ceil
|
|||
* Modified to for Kotlin - Kevin Gorham anothergmale@gmail.com
|
||||
*/
|
||||
internal actual object Pbkdf2Sha512 {
|
||||
|
||||
/**
|
||||
* Generate a derived key from the given parameters.
|
||||
*
|
||||
|
@ -31,12 +30,18 @@ internal actual object Pbkdf2Sha512 {
|
|||
* @param c the iteration count
|
||||
* @param dkLen the key length in bits
|
||||
*/
|
||||
actual fun derive(p: CharArray, s: ByteArray, c: Int, dkLen: Int): ByteArray {
|
||||
actual fun derive(
|
||||
p: CharArray,
|
||||
s: ByteArray,
|
||||
c: Int,
|
||||
dkLen: Int
|
||||
): ByteArray {
|
||||
ByteArrayOutputStream().use { baos ->
|
||||
val dkLenBytes = dkLen / 8
|
||||
val pBytes = p.foldIndexed(ByteArray(p.size)) { i, acc, c ->
|
||||
acc.apply { this[i] = c.code.toByte() }
|
||||
}
|
||||
val pBytes =
|
||||
p.foldIndexed(ByteArray(p.size)) { i, acc, c ->
|
||||
acc.apply { this[i] = c.code.toByte() }
|
||||
}
|
||||
val hLen = 20.0
|
||||
// note: dropped length check because it's redundant, given the size of an int in kotlin
|
||||
val l = ceil(dkLenBytes / hLen).toInt()
|
||||
|
@ -51,7 +56,12 @@ internal actual object Pbkdf2Sha512 {
|
|||
}
|
||||
}
|
||||
|
||||
private fun f(p: ByteArray, s: ByteArray, c: Int, i: Int): ByteArray {
|
||||
private fun f(
|
||||
p: ByteArray,
|
||||
s: ByteArray,
|
||||
c: Int,
|
||||
i: Int
|
||||
): ByteArray {
|
||||
val key = SecretKeySpec(p, "HmacSHA512")
|
||||
val mac = Mac.getInstance(key.algorithm).apply { init(key) }
|
||||
val bU = ByteArray(s.size + 4)
|
||||
|
|
|
@ -3,6 +3,5 @@ package cash.z.ecc.android.crypto
|
|||
import javax.crypto.SecretKey
|
||||
|
||||
internal actual class SecretKeyCommon(generatedSecret: SecretKey) {
|
||||
|
||||
actual val encoded = generatedSecret.encoded
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package cash.z.ecc.android.crypto
|
||||
|
||||
internal actual class SecretKeyFactoryCommon(private val jvmSecretKeyFactory: javax.crypto.SecretKeyFactory) {
|
||||
|
||||
actual fun generateSecret(pbeKeySpec: PBEKeySpecCommon): SecretKeyCommon =
|
||||
SecretKeyCommon(jvmSecretKeyFactory.generateSecret(pbeKeySpec.wrappedPbeKeySpec))
|
||||
|
||||
|
@ -9,7 +8,9 @@ internal actual class SecretKeyFactoryCommon(private val jvmSecretKeyFactory: ja
|
|||
actual fun getInstance(algorithm: String): SecretKeyFactoryCommon =
|
||||
SecretKeyFactoryCommon(javax.crypto.SecretKeyFactory.getInstance(algorithm))
|
||||
|
||||
actual fun getInstance(algorithm: String, provider: FallbackProvider): SecretKeyFactoryCommon =
|
||||
SecretKeyFactoryCommon(javax.crypto.SecretKeyFactory.getInstance(algorithm))
|
||||
actual fun getInstance(
|
||||
algorithm: String,
|
||||
provider: FallbackProvider
|
||||
): SecretKeyFactoryCommon = SecretKeyFactoryCommon(javax.crypto.SecretKeyFactory.getInstance(algorithm))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,15 +12,16 @@ import platform.windows.CMC_STATUS_SUCCESS
|
|||
actual class SecureRandom {
|
||||
@OptIn(kotlinx.cinterop.ExperimentalForeignApi::class)
|
||||
actual fun nextBytes(bytes: ByteArray) {
|
||||
val result = bytes.usePinned {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
BCryptGenRandom(
|
||||
null,
|
||||
it.addressOf(0) as CPointer<UByteVar>,
|
||||
bytes.size.convert(),
|
||||
BCRYPT_USE_SYSTEM_PREFERRED_RNG.toUInt()
|
||||
)
|
||||
}
|
||||
val result =
|
||||
bytes.usePinned {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
BCryptGenRandom(
|
||||
null,
|
||||
it.addressOf(0) as CPointer<UByteVar>,
|
||||
bytes.size.convert(),
|
||||
BCRYPT_USE_SYSTEM_PREFERRED_RNG.toUInt()
|
||||
)
|
||||
}
|
||||
check(result != CMC_STATUS_SUCCESS) {
|
||||
"Could not get random number from BCryptGenRandom"
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package cash.z.ecc.android.crypto
|
||||
|
||||
internal actual class PBEKeySpecCommon {
|
||||
|
||||
/**
|
||||
* Returns the iteration count or 0 if not specified.
|
||||
*
|
||||
|
|
|
@ -21,11 +21,10 @@ import kotlin.math.ceil
|
|||
* Modified to for Kotlin Multiplatform w/ okio - Luca Spinazzola anothergmale@gmail.com
|
||||
*/
|
||||
internal actual object Pbkdf2Sha512 {
|
||||
|
||||
/**
|
||||
* The size of Tn in bytes. Which will always be 64 bytes, as it is the xor of hmacSha512.
|
||||
*/
|
||||
private const val tnLen = 64
|
||||
private const val TN_LENGTH = 64
|
||||
|
||||
/**
|
||||
* Generate a derived key from the given parameters.
|
||||
|
@ -35,18 +34,24 @@ internal actual object Pbkdf2Sha512 {
|
|||
* @param c the iteration count
|
||||
* @param dkLen the key length in bits
|
||||
*/
|
||||
actual fun derive(p: CharArray, s: ByteArray, c: Int, dkLen: Int): ByteArray {
|
||||
actual fun derive(
|
||||
p: CharArray,
|
||||
s: ByteArray,
|
||||
c: Int,
|
||||
dkLen: Int
|
||||
): ByteArray {
|
||||
val dkLenBytes = dkLen / 8
|
||||
val pBytes = p.foldIndexed(ByteArray(p.size)) { i, acc, cc ->
|
||||
acc.apply { this[i] = cc.code.toByte() }
|
||||
}
|
||||
val pBytes =
|
||||
p.foldIndexed(ByteArray(p.size)) { i, acc, cc ->
|
||||
acc.apply { this[i] = cc.code.toByte() }
|
||||
}
|
||||
val hLen = 20.0
|
||||
// note: dropped length check because it's redundant, given the size of an int in kotlin
|
||||
val l = ceil(dkLenBytes / hLen).toInt()
|
||||
val baos = ByteArray(l * tnLen)
|
||||
val baos = ByteArray(l * TN_LENGTH)
|
||||
for (i in 1..l) {
|
||||
f(pBytes, s, c, i).let { Tn ->
|
||||
Tn.copyInto(baos, (i - 1) * tnLen)
|
||||
Tn.copyInto(baos, (i - 1) * TN_LENGTH)
|
||||
}
|
||||
}
|
||||
return baos.sliceArray(0 until dkLenBytes)
|
||||
|
|
|
@ -1,18 +1,20 @@
|
|||
package cash.z.ecc.android.crypto
|
||||
|
||||
internal actual class SecretKeyFactoryCommon() {
|
||||
|
||||
actual fun generateSecret(pbeKeySpec: PBEKeySpecCommon): SecretKeyCommon {
|
||||
val encoded = pbeKeySpec.run {
|
||||
Pbkdf2Sha512.derive(password!!, salt!!, iterationCount, keyLength)
|
||||
}
|
||||
val encoded =
|
||||
pbeKeySpec.run {
|
||||
Pbkdf2Sha512.derive(password!!, salt!!, iterationCount, keyLength)
|
||||
}
|
||||
return SecretKeyCommon(encoded)
|
||||
}
|
||||
|
||||
actual companion object {
|
||||
actual fun getInstance(algorithm: String): SecretKeyFactoryCommon = SecretKeyFactoryCommon()
|
||||
|
||||
actual fun getInstance(algorithm: String, provider: FallbackProvider): SecretKeyFactoryCommon =
|
||||
SecretKeyFactoryCommon()
|
||||
actual fun getInstance(
|
||||
algorithm: String,
|
||||
provider: FallbackProvider
|
||||
): SecretKeyFactoryCommon = SecretKeyFactoryCommon()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,23 +11,24 @@ import platform.posix.open
|
|||
import platform.posix.read
|
||||
|
||||
actual class SecureRandom {
|
||||
|
||||
/**
|
||||
* Implementation based on:
|
||||
* https://stackoverflow.com/a/2572373/1363742
|
||||
*/
|
||||
@OptIn(UnsafeNumber::class, ExperimentalForeignApi::class)
|
||||
actual fun nextBytes(bytes: ByteArray) = memScoped {
|
||||
val randomData = open("/dev/urandom", O_RDONLY)
|
||||
if (randomData < 0) {
|
||||
throw UnsupportedOperationException("Could not open /dev/urandom")
|
||||
} else {
|
||||
val result = bytes.usePinned {
|
||||
read(randomData, it.addressOf(0), bytes.size.convert())
|
||||
}
|
||||
check(result >= 0) {
|
||||
"Could not get random number from /dev/urandom"
|
||||
actual fun nextBytes(bytes: ByteArray) =
|
||||
memScoped {
|
||||
val randomData = open("/dev/urandom", O_RDONLY)
|
||||
if (randomData < 0) {
|
||||
throw UnsupportedOperationException("Could not open /dev/urandom")
|
||||
} else {
|
||||
val result =
|
||||
bytes.usePinned {
|
||||
read(randomData, it.addressOf(0), bytes.size.convert())
|
||||
}
|
||||
check(result >= 0) {
|
||||
"Could not get random number from /dev/urandom"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,12 +4,32 @@ plugins {
|
|||
|
||||
buildscript {
|
||||
dependencyLocking {
|
||||
lockAllConfigurations()
|
||||
// This property is treated specially, as it is not defined by default in the root gradle.properties
|
||||
// and declaring it in the root gradle.properties is ignored by included builds. This only picks up
|
||||
// a value declared as a system property, a command line argument, or an environment variable.
|
||||
val isDependencyLockingEnabled = if (project.hasProperty("ZCASH_IS_DEPENDENCY_LOCKING_ENABLED")) {
|
||||
project.property("ZCASH_IS_DEPENDENCY_LOCKING_ENABLED").toString().toBoolean()
|
||||
} else {
|
||||
true
|
||||
}
|
||||
if (isDependencyLockingEnabled) {
|
||||
lockAllConfigurations()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencyLocking {
|
||||
lockAllConfigurations()
|
||||
// This property is treated specially, as it is not defined by default in the root gradle.properties
|
||||
// and declaring it in the root gradle.properties is ignored by included builds. This only picks up
|
||||
// a value declared as a system property, a command line argument, or an environment variable.
|
||||
val isDependencyLockingEnabled = if (project.hasProperty("ZCASH_IS_DEPENDENCY_LOCKING_ENABLED")) {
|
||||
project.property("ZCASH_IS_DEPENDENCY_LOCKING_ENABLED").toString().toBoolean()
|
||||
} else {
|
||||
true
|
||||
}
|
||||
if (isDependencyLockingEnabled) {
|
||||
lockAllConfigurations()
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
|
|
@ -3,41 +3,41 @@
|
|||
# This file is expected to be part of source control.
|
||||
io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.0=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinCompilerClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-android-extensions:1.9.10=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-android-extensions:1.9.21=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.20=kotlinCompilerPluginClasspathMain
|
||||
org.jetbrains.kotlin:kotlin-build-tools-api:1.9.10=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.10=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-build-tools-api:1.9.21=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.20=kotlinCompilerClasspath
|
||||
org.jetbrains.kotlin:kotlin-compiler-runner:1.9.10=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-daemon-client:1.9.10=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.10=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.21=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-compiler-runner:1.9.21=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-daemon-client:1.9.21=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.20=kotlinCompilerClasspath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.10=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.10=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.10=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.10=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.10=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.10=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.10=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.10=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-native-utils:1.9.10=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-project-model:1.9.10=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.21=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.21=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.21=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.21=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.21=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.21=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.21=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.21=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.21=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-native-utils:1.9.21=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-project-model:1.9.21=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinCompilerClasspath
|
||||
org.jetbrains.kotlin:kotlin-reflect:1.9.20=compileClasspath
|
||||
org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.20=kotlinCompilerPluginClasspathMain
|
||||
org.jetbrains.kotlin:kotlin-script-runtime:1.9.20=kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain
|
||||
org.jetbrains.kotlin:kotlin-scripting-common:1.9.10=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-scripting-common:1.9.20=kotlinCompilerPluginClasspathMain
|
||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.10=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-scripting-common:1.9.21=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.20=kotlinCompilerPluginClasspathMain
|
||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.10=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.21=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.20=kotlinCompilerPluginClasspathMain
|
||||
org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.10=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.21=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.20=kotlinCompilerPluginClasspathMain
|
||||
org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.21=runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.9.20=compileClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain
|
||||
org.jetbrains.kotlin:kotlin-tooling-core:1.9.10=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-util-io:1.9.10=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-util-klib:1.9.10=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-tooling-core:1.9.21=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-util-io:1.9.21=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-util-klib:1.9.21=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlinx.kover:org.jetbrains.kotlinx.kover.gradle.plugin:0.7.0=compileClasspath,runtimeClasspath
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=runtimeClasspath
|
||||
org.jetbrains.kotlinx:kover-gradle-plugin:0.7.0=compileClasspath,runtimeClasspath
|
||||
|
|
|
@ -1,9 +1,20 @@
|
|||
dependencyLocking {
|
||||
lockAllConfigurations()
|
||||
// This property is treated specially, as it is not defined by default in the root gradle.properties
|
||||
// and declaring it in the root gradle.properties is ignored by included builds. This only picks up
|
||||
// a value declared as a system property, a command line argument, or an environment variable.
|
||||
val isDependencyLockingEnabled = if (project.hasProperty("ZCASH_IS_DEPENDENCY_LOCKING_ENABLED")) {
|
||||
project.property("ZCASH_IS_DEPENDENCY_LOCKING_ENABLED").toString().toBoolean()
|
||||
} else {
|
||||
true
|
||||
}
|
||||
if (isDependencyLockingEnabled) {
|
||||
lockAllConfigurations()
|
||||
}
|
||||
}
|
||||
|
||||
tasks {
|
||||
register("resolveAll") {
|
||||
dependsOn(":commonizeNativeDistribution")
|
||||
doLast {
|
||||
configurations.filter {
|
||||
// Add any custom filtering on the configurations to be resolved
|
||||
|
|
|
@ -8,7 +8,10 @@ pluginManager.withPlugin("org.jetbrains.kotlin.multiplatform") {
|
|||
project.property("BIP39_IS_TREAT_WARNINGS_AS_ERRORS").toString().toBoolean()
|
||||
)
|
||||
|
||||
compilerOptions.options.freeCompilerArgs.addAll("-opt-in=kotlin.RequiresOptIn")
|
||||
compilerOptions.options.freeCompilerArgs.addAll(
|
||||
"-opt-in=kotlin.RequiresOptIn",
|
||||
"-Xexpect-actual-classes" // Suppress Expect-Actual experimental API warning
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ plugins {
|
|||
val ktlint by configurations.creating
|
||||
|
||||
dependencies {
|
||||
ktlint("com.pinterest:ktlint:${someVersion}") {
|
||||
ktlint("com.pinterest.ktlint:ktlint-cli:${someVersion}") {
|
||||
attributes {
|
||||
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named<Bundling>(Bundling.EXTERNAL))
|
||||
}
|
||||
|
|
|
@ -1,11 +1,31 @@
|
|||
buildscript {
|
||||
dependencyLocking {
|
||||
lockAllConfigurations()
|
||||
// This property is treated specially, as it is not defined by default in the root gradle.properties
|
||||
// and declaring it in the root gradle.properties is ignored by included builds. This only picks up
|
||||
// a value declared as a system property, a command line argument, or an environment variable.
|
||||
val isDependencyLockingEnabled = if (project.hasProperty("ZCASH_IS_DEPENDENCY_LOCKING_ENABLED")) {
|
||||
project.property("ZCASH_IS_DEPENDENCY_LOCKING_ENABLED").toString().toBoolean()
|
||||
} else {
|
||||
true
|
||||
}
|
||||
if (isDependencyLockingEnabled) {
|
||||
lockAllConfigurations()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencyLocking {
|
||||
lockAllConfigurations()
|
||||
// This property is treated specially, as it is not defined by default in the root gradle.properties
|
||||
// and declaring it in the root gradle.properties is ignored by included builds. This only picks up
|
||||
// a value declared as a system property, a command line argument, or an environment variable.
|
||||
val isDependencyLockingEnabled = if (project.hasProperty("ZCASH_IS_DEPENDENCY_LOCKING_ENABLED")) {
|
||||
project.property("ZCASH_IS_DEPENDENCY_LOCKING_ENABLED").toString().toBoolean()
|
||||
} else {
|
||||
true
|
||||
}
|
||||
if (isDependencyLockingEnabled) {
|
||||
lockAllConfigurations()
|
||||
}
|
||||
}
|
||||
|
||||
plugins {
|
||||
|
|
|
@ -1,48 +1,45 @@
|
|||
# This is a Gradle generated file for dependency locking.
|
||||
# Manual edits can break the build and are not advised.
|
||||
# This file is expected to be part of source control.
|
||||
com.github.ben-manes.versions:com.github.ben-manes.versions.gradle.plugin:0.48.0=classpath
|
||||
com.github.ben-manes:gradle-versions-plugin:0.48.0=classpath
|
||||
com.github.ben-manes.versions:com.github.ben-manes.versions.gradle.plugin:0.50.0=classpath
|
||||
com.github.ben-manes:gradle-versions-plugin:0.50.0=classpath
|
||||
com.squareup.moshi:moshi-kotlin:1.12.0=classpath
|
||||
com.squareup.moshi:moshi:1.12.0=classpath
|
||||
com.squareup.okhttp3:okhttp:4.11.0=classpath
|
||||
com.squareup.okio:okio-jvm:3.2.0=classpath
|
||||
com.squareup.okio:okio:3.2.0=classpath
|
||||
com.thoughtworks.xstream:xstream:1.4.20=classpath
|
||||
io.github.x-stream:mxparser:1.2.2=classpath
|
||||
io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.0=classpath
|
||||
org.jetbrains.intellij.deps:trove4j:1.0.20200330=classpath
|
||||
org.jetbrains.kotlin:kotlin-android-extensions:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-build-tools-api:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-compiler-runner:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-daemon-client:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-native-utils:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-project-model:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-android-extensions:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-build-tools-api:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-compiler-runner:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-daemon-client:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-native-utils:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-project-model:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-reflect:1.9.20=classpath
|
||||
org.jetbrains.kotlin:kotlin-scripting-common:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-scripting-common:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.9.20=classpath
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.9.20=classpath
|
||||
org.jetbrains.kotlin:kotlin-tooling-core:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-util-io:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-util-klib:1.9.10=classpath
|
||||
org.jetbrains.kotlin:kotlin-tooling-core:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-util-io:1.9.21=classpath
|
||||
org.jetbrains.kotlin:kotlin-util-klib:1.9.21=classpath
|
||||
org.jetbrains.kotlinx.kover:org.jetbrains.kotlinx.kover.gradle.plugin:0.7.0=classpath
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=classpath
|
||||
org.jetbrains.kotlinx:kover-gradle-plugin:0.7.0=classpath
|
||||
org.jetbrains:annotations:13.0=classpath
|
||||
xmlpull:xmlpull:1.1.3.1=classpath
|
||||
empty=
|
||||
|
|
|
@ -1,29 +1,33 @@
|
|||
# This is a Gradle generated file for dependency locking.
|
||||
# Manual edits can break the build and are not advised.
|
||||
# This file is expected to be part of source control.
|
||||
ch.qos.logback:logback-classic:1.3.5=ktlint
|
||||
ch.qos.logback:logback-core:1.3.5=ktlint
|
||||
ch.qos.logback:logback-classic:1.3.14=ktlint
|
||||
ch.qos.logback:logback-core:1.3.14=ktlint
|
||||
com.beust:jcommander:1.82=detekt
|
||||
com.pinterest.ktlint:ktlint-cli-reporter:0.50.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-ruleset-core:0.50.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-logger:0.50.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-reporter-baseline:0.50.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-reporter-checkstyle:0.50.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-reporter-format:0.50.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-reporter-html:0.50.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-reporter-json:0.50.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-reporter-plain-summary:0.50.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-reporter-plain:0.50.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-reporter-sarif:0.50.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-rule-engine-core:0.50.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-rule-engine:0.50.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-ruleset-standard:0.50.0=ktlint
|
||||
com.pinterest:ktlint:0.50.0=ktlint
|
||||
info.picocli:picocli:4.7.4=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-baseline:1.1.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-checkstyle:1.1.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-core:1.1.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-format:1.1.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-html:1.1.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-json:1.1.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-plain-summary:1.1.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-plain:1.1.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-sarif:1.1.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-ruleset-core:1.1.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli:1.1.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-logger:1.1.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-rule-engine-core:1.1.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-rule-engine:1.1.0=ktlint
|
||||
com.pinterest.ktlint:ktlint-ruleset-standard:1.1.0=ktlint
|
||||
dev.drewhamilton.poko:poko-annotations-jvm:0.15.1=ktlint
|
||||
dev.drewhamilton.poko:poko-annotations:0.15.1=ktlint
|
||||
info.picocli:picocli:4.7.5=ktlint
|
||||
io.github.davidburstrom.contester:contester-breakpoint:0.2.0=detekt
|
||||
io.github.detekt.sarif4k:sarif4k-jvm:0.4.0=detekt,ktlint
|
||||
io.github.detekt.sarif4k:sarif4k:0.4.0=detekt,ktlint
|
||||
io.github.microutils:kotlin-logging-jvm:3.0.5=ktlint
|
||||
io.github.detekt.sarif4k:sarif4k-jvm:0.4.0=detekt
|
||||
io.github.detekt.sarif4k:sarif4k-jvm:0.5.0=ktlint
|
||||
io.github.detekt.sarif4k:sarif4k:0.4.0=detekt
|
||||
io.github.detekt.sarif4k:sarif4k:0.5.0=ktlint
|
||||
io.github.oshai:kotlin-logging-jvm:5.1.4=ktlint
|
||||
io.gitlab.arturbosch.detekt:detekt-api:1.23.0=detekt
|
||||
io.gitlab.arturbosch.detekt:detekt-cli:1.23.0=detekt
|
||||
io.gitlab.arturbosch.detekt:detekt-core:1.23.0=detekt
|
||||
|
@ -47,7 +51,7 @@ io.gitlab.arturbosch.detekt:detekt-rules-style:1.23.0=detekt
|
|||
io.gitlab.arturbosch.detekt:detekt-rules:1.23.0=detekt
|
||||
io.gitlab.arturbosch.detekt:detekt-tooling:1.23.0=detekt
|
||||
io.gitlab.arturbosch.detekt:detekt-utils:1.23.0=detekt
|
||||
net.java.dev.jna:jna:5.6.0=detekt,ktlint
|
||||
net.java.dev.jna:jna:5.6.0=detekt
|
||||
org.ec4j.core:ec4j-core:0.3.0=ktlint
|
||||
org.freemarker:freemarker:2.3.30=IntellijKoverConfig,koverJvmReporter
|
||||
org.jacoco:org.jacoco.agent:0.8.10=KoverEngineConfig
|
||||
|
@ -66,27 +70,22 @@ org.jetbrains.intellij.deps:intellij-coverage-reporter:1.0.668=IntellijKoverConf
|
|||
org.jetbrains.intellij.deps:intellij-coverage-reporter:1.0.690=koverJvmReporter
|
||||
org.jetbrains.intellij.deps:trove4j:1.0.20200330=detekt,kotlinKlibCommonizerClasspath,ktlint
|
||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.8.21=detekt
|
||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.8.22=ktlint
|
||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.10=kotlinKlibCommonizerClasspath
|
||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.21=kotlinKlibCommonizerClasspath,ktlint
|
||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.8.21=detekt
|
||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.8.22=ktlint
|
||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.10=kotlinKlibCommonizerClasspath
|
||||
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.10=kotlinKlibCommonizerClasspath
|
||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.21=kotlinKlibCommonizerClasspath,ktlint
|
||||
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.21=kotlinKlibCommonizerClasspath
|
||||
org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinKlibCommonizerClasspath,ktlint
|
||||
org.jetbrains.kotlin:kotlin-reflect:1.8.21=detekt
|
||||
org.jetbrains.kotlin:kotlin-script-runtime:1.8.21=detekt
|
||||
org.jetbrains.kotlin:kotlin-script-runtime:1.8.22=ktlint
|
||||
org.jetbrains.kotlin:kotlin-script-runtime:1.9.10=kotlinKlibCommonizerClasspath
|
||||
org.jetbrains.kotlin:kotlin-script-runtime:1.9.21=kotlinKlibCommonizerClasspath,ktlint
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.8.21=detekt
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22=ktlint
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.9.10=kotlinKlibCommonizerClasspath
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.9.21=ktlint
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.21=detekt
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22=ktlint
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21=detekt
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22=ktlint
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.8.21=detekt
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.8.22=ktlint
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.9.10=kotlinKlibCommonizerClasspath
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.9.21=kotlinKlibCommonizerClasspath,ktlint
|
||||
org.jetbrains.kotlinx:kotlinx-html-jvm:0.8.1=detekt
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.4.1=detekt,ktlint
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-core:1.4.1=detekt,ktlint
|
||||
|
@ -102,6 +101,6 @@ org.ow2.asm:asm-tree:9.2=JacocoKoverConfig
|
|||
org.ow2.asm:asm-tree:9.5=KoverEngineConfig
|
||||
org.ow2.asm:asm:9.2=JacocoKoverConfig
|
||||
org.ow2.asm:asm:9.5=KoverEngineConfig
|
||||
org.slf4j:slf4j-api:2.0.4=ktlint
|
||||
org.slf4j:slf4j-api:2.0.7=ktlint
|
||||
org.snakeyaml:snakeyaml-engine:2.6=detekt
|
||||
empty=annotationProcessor,compileClasspath,detektPlugins,koverAggregatedSetup,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
[versions]
|
||||
detekt = "1.23.0"
|
||||
kotest = "5.7.2"
|
||||
kotlin = "1.9.10"
|
||||
kotest = "5.8.0"
|
||||
kotlin = "1.9.21"
|
||||
kotlinx-kover = "0.7.0"
|
||||
ktlint = "0.50.0"
|
||||
okio = "3.5.0"
|
||||
ktlint = "1.1.0"
|
||||
okio = "3.7.0"
|
||||
|
||||
[libraries]
|
||||
com-squareup-okio = { module = "com.squareup.okio:okio", version.ref = "okio" }
|
||||
|
@ -17,8 +17,8 @@ kotlin-gradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.
|
|||
kotlinx-kover-gradle = { module = "org.jetbrains.kotlinx.kover:org.jetbrains.kotlinx.kover.gradle.plugin", version.ref = "kotlinx-kover" }
|
||||
|
||||
[plugins]
|
||||
dokka = "org.jetbrains.dokka:1.9.0"
|
||||
dokka = "org.jetbrains.dokka:1.9.10"
|
||||
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
|
||||
versions = "com.github.ben-manes.versions:0.48.0"
|
||||
versions = "com.github.ben-manes.versions:0.50.0"
|
||||
kotest = { id = "io.kotest.multiplatform", version.ref = "kotest" }
|
||||
kotlinx-kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kotlinx-kover" }
|
||||
|
|
|
@ -2,4 +2,6 @@
|
|||
root = true
|
||||
[*.{kt,kts}]
|
||||
ktlint_standard_trailing-comma-on-call-site = disabled
|
||||
ktlint_standard_trailing-comma-on-declaration-site = disabled
|
||||
ktlint_standard_trailing-comma-on-declaration-site = disabled
|
||||
|
||||
max_line_length = off
|
Loading…
Reference in New Issue