Model argon2Matrix
This commit is contained in:
parent
f9ddd7bc20
commit
f5b3eb6b92
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 Ugljesa Jovanovic
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@file:Suppress("EXPERIMENTAL_API_USAGE")
|
||||||
|
|
||||||
|
package com.ionspin.kotlin.crypto.keyderivation.argon2
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Ugljesa Jovanovic
|
||||||
|
* ugljesa.jovanovic@ionspin.com
|
||||||
|
* on 21-May-2020
|
||||||
|
*/
|
||||||
|
class Argon2Matrix(val columnCount: Int, val rowCount: Int) {
|
||||||
|
|
||||||
|
internal val storage: UByteArray = UByteArray(columnCount * rowCount * 1024)
|
||||||
|
|
||||||
|
operator fun get(rowPosition: Int, columnPosition: Int, inBlockPosition: Int) : UByte {
|
||||||
|
return storage[rowPosition * (columnCount - 1) * 1024 + columnPosition * 1024 + inBlockPosition]
|
||||||
|
}
|
||||||
|
|
||||||
|
operator fun get(rowPosition: Int, columnPosition: Int) : UByteArray {
|
||||||
|
println("Expensive.")
|
||||||
|
return storage.copyOfRange(
|
||||||
|
rowPosition * (columnCount - 1) * 1024 + columnPosition * 1024,
|
||||||
|
rowPosition * (columnCount - 1) * 1024 + columnPosition * 1024 + 1024
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
operator fun get(rowPosition: Int) : Array<UByteArray> {
|
||||||
|
return Array(columnCount) {
|
||||||
|
this.get(rowPosition, it)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 Ugljesa Jovanovic
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS")
|
||||||
|
|
||||||
|
package com.ionspin.kotlin.crypto.hash.argon
|
||||||
|
|
||||||
|
import com.ionspin.kotlin.crypto.keyderivation.argon2.Argon2Matrix
|
||||||
|
import com.ionspin.kotlin.crypto.util.hexColumsPrint
|
||||||
|
import kotlin.test.Test
|
||||||
|
import kotlin.test.assertTrue
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Ugljesa Jovanovic
|
||||||
|
* ugljesa.jovanovic@ionspin.com
|
||||||
|
* on 21-May-2020
|
||||||
|
*/
|
||||||
|
class Argon2MatrixTest {
|
||||||
|
val zeroesBlock = UByteArray(1024) { 0U }
|
||||||
|
val onesBlock = UByteArray(1024) { 1U }
|
||||||
|
val twosBlock = UByteArray(1024) { 2U }
|
||||||
|
val threesBlock = UByteArray(1024) { 3U }
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun debugTest() {
|
||||||
|
val argon2Matrix = Argon2Matrix(2, 2)
|
||||||
|
(zeroesBlock + onesBlock + twosBlock + threesBlock).copyInto(argon2Matrix.storage)
|
||||||
|
println(argon2Matrix[0, 0, 0])
|
||||||
|
println(argon2Matrix[1, 0, 0])
|
||||||
|
println(argon2Matrix[2, 0, 0])
|
||||||
|
println(argon2Matrix[3, 0, 0])
|
||||||
|
argon2Matrix.storage.hexColumsPrint(1024)
|
||||||
|
assertTrue {
|
||||||
|
argon2Matrix[0, 0, 0] == 0U.toUByte() &&
|
||||||
|
argon2Matrix[1, 0, 0] == 1U.toUByte() &&
|
||||||
|
argon2Matrix[2, 0, 0] == 2U.toUByte() &&
|
||||||
|
argon2Matrix[3, 0, 0] == 3U.toUByte()
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user