1234567891011121314151617181920212223242526 |
- package com.chameth.yaotp.algos
-
- import javax.crypto.Mac
- import javax.crypto.spec.SecretKeySpec
-
- typealias HmacFunc = (ByteArray, ByteArray) -> ByteArray
-
- fun getHmacFunc(name: String?): HmacFunc {
- return when (name?.toLowerCase()) {
- "sha1" -> ::hmacSha1
- "sha256" -> ::hmacSha256
- "sha512" -> ::hmacSha512
- else -> ::hmacSha1
- }
- }
-
- fun hmacSha1(keyMaterial: ByteArray, input: ByteArray) = hmac(keyMaterial, input, "HmacSHA1")
- fun hmacSha256(keyMaterial: ByteArray, input: ByteArray) = hmac(keyMaterial, input, "HmacSHA256")
- fun hmacSha512(keyMaterial: ByteArray, input: ByteArray) = hmac(keyMaterial, input, "HmacSHA512")
-
- private fun hmac(keyMaterial: ByteArray, input: ByteArray, algorithm: String): ByteArray {
- return with(Mac.getInstance(algorithm)) {
- init(SecretKeySpec(keyMaterial, algorithm))
- doFinal(input)
- }
- }
|