from pbkdf2 import pbkdf2.*
from encoding import hex.*
from crypto import keys.*
from crypto import digest.*
let expect_sha512: String = "41daf57a257f11d162b77bdf358a3543"
let expect_sha384: String = "8018f4c0b5210eae05751ee629e123b6"
let expect_sha256: String = "e4f84f342caf24895bea5d3b0f0640de"
let expect_sha224: String = "89a1c76df5c2cc5a4a708a0173df7e8d"
let expect_sha1: String = "dae58d39fe3765424e969fccdaa954f5"
let expect_md5: String = "17a629dab027d38ed26adef01ba191ca"
let expect_sm3: String = "3ff118e71c75a1d2d8265e890e8abf7a"
@Test
class PBKDF2Test {
@TestCase
func testSHA512(): Unit {
var key = PBKDF2.key({ => SHA512()}, "password".toArray(), "123456".toArray(), 1000, 16)
@Expect(toHexString(key), expect_sha512)
}
@TestCase
func testSHA384(): Unit {
var key = PBKDF2.key({ => SHA384()}, "password".toArray(), "123456".toArray(), 1000, 16)
@Expect(toHexString(key), expect_sha384)
}
@TestCase
func testSHA256(): Unit {
var key = PBKDF2.key({ => SHA256()}, "password".toArray(), "123456".toArray(), 1000, 16)
@Expect(toHexString(key), expect_sha256)
}
@TestCase
func testSHA224(): Unit {
var key = PBKDF2.key({ => SHA224()}, "password".toArray(), "123456".toArray(), 1000, 16)
@Expect(toHexString(key), expect_sha224)
}
@TestCase
func testSHA1(): Unit {
var key = PBKDF2.key({ => SHA1()}, "password".toArray(), "123456".toArray(), 1000, 16)
@Expect(toHexString(key), expect_sha1)
}
@TestCase
func testMD5(): Unit {
var key = PBKDF2.key({ => MD5()}, "password".toArray(), "123456".toArray(), 1000, 16)
@Expect(toHexString(key), expect_md5)
}
@TestCase
func testSM3(): Unit {
var key = PBKDF2.key({ => SM3()}, "password".toArray(), "123456".toArray(), 1000, 16)
@Expect(toHexString(key), expect_sm3)
}
@TestCase
func testPBKDF2Invalid(): Unit {
var res = 0
try {
var key = PBKDF2.key({ => SM3()}, "password".toArray(), "123456".toArray(), 0, 16)
} catch (e: CryptoException) {
res += 1
}
@Expect(res, 1)
}
}