diff --git a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/passkey/data/AuthenticatorAttestationResponse.kt b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/passkey/data/AuthenticatorAttestationResponse.kt index 231d8b5a1..732c7191b 100644 --- a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/passkey/data/AuthenticatorAttestationResponse.kt +++ b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/passkey/data/AuthenticatorAttestationResponse.kt @@ -20,9 +20,10 @@ package com.kunzisoft.keepass.credentialprovider.passkey.data import com.kunzisoft.keepass.credentialprovider.passkey.util.Base64Helper.Companion.b64Encode -import com.kunzisoft.keepass.utils.UUIDUtils.asUUIDBytes +import com.kunzisoft.keepass.utils.UUIDUtils.asBytes import org.json.JSONArray import org.json.JSONObject +import java.util.UUID class AuthenticatorAttestationResponse( private val requestOptions: PublicKeyCredentialCreationOptions, @@ -83,6 +84,6 @@ class AuthenticatorAttestationResponse( companion object { // Authenticator Attestation Global Unique Identifier - private val AAGUID: ByteArray = "eaecdef2-1c31-5634-8639-f1cbd9c00a08".asUUIDBytes() + private val AAGUID: ByteArray = UUID.fromString("eaecdef2-1c31-5634-8639-f1cbd9c00a08").asBytes() } } \ No newline at end of file diff --git a/database/src/main/java/com/kunzisoft/keepass/utils/UUIDUtils.kt b/database/src/main/java/com/kunzisoft/keepass/utils/UUIDUtils.kt index dc02e0fb7..a25488fb0 100644 --- a/database/src/main/java/com/kunzisoft/keepass/utils/UUIDUtils.kt +++ b/database/src/main/java/com/kunzisoft/keepass/utils/UUIDUtils.kt @@ -24,6 +24,10 @@ import java.util.Locale import java.util.UUID object UUIDUtils { + + /** + * Specific UUID string format for KeePass database + */ fun UUID.asHexString(): String? { try { val buf = uuidTo16Bytes(this) @@ -52,6 +56,10 @@ object UUIDUtils { } } + /** + * From a specific UUID KeePass database string format, + * Note : For a standard UUID string format, use UUID.fromString() + */ fun String.asUUID(): UUID? { if (this.length != 32) return null @@ -98,10 +106,6 @@ object UUIDUtils { }.array() } - fun String.asUUIDBytes(): ByteArray { - return this.asUUID()?.asBytes() ?: ByteArray(16) - } - // Use short to represent unsigned byte private fun byteToChar(bt: Char): Char { return if (bt.code >= 10) { diff --git a/database/src/test/java/com/kunzisoft/keepass/tests/utils/UUIDTest.kt b/database/src/test/java/com/kunzisoft/keepass/tests/utils/UUIDTest.kt index 1f84a06f7..6e6af14e4 100644 --- a/database/src/test/java/com/kunzisoft/keepass/tests/utils/UUIDTest.kt +++ b/database/src/test/java/com/kunzisoft/keepass/tests/utils/UUIDTest.kt @@ -27,13 +27,19 @@ import java.util.UUID class UUIDTest: TestCase() { - fun testUUIDString() { + fun testUUIDHexString() { val randomUUID = UUID.randomUUID() val hexStringUUID = randomUUID.asHexString() val retrievedUUID = hexStringUUID?.asUUID() assertEquals(randomUUID, retrievedUUID) } + fun testUUIDString() { + val staticUUID = "4be0643f-1d98-573b-97cd-ca98a65347dd" + val stringUUID = UUID.fromString(staticUUID).asBytes().asUUID().toString() + assertEquals(staticUUID, stringUUID) + } + fun testUUIDBytes() { val randomUUID = UUID.randomUUID() val byteArrayUUID = randomUUID.asBytes()