@@ -9,13 +9,14 @@ import androidx.biometric.BiometricManager
9
9
import androidx.biometric.BiometricPrompt
10
10
import androidx.fragment.app.FragmentActivity
11
11
import com.android.identity.android.mdoc.util.CredmanUtil
12
- import com.android.identity.android.mdoc.util.CredmanUtil.Companion.generateClientIdHash
13
- import com.android.identity.android.mdoc.util.CredmanUtil.Companion.generatePublicKeyHash
14
12
import com.android.identity.android.securearea.AndroidKeystoreKeyUnlockData
15
13
import com.android.identity.document.Credential
16
14
import com.android.identity.document.DocumentRequest
17
15
import com.android.identity.document.NameSpacedData
18
16
import com.android.identity.crypto.Algorithm
17
+ import com.android.identity.crypto.Crypto
18
+ import com.android.identity.crypto.EcCurve
19
+ import com.android.identity.crypto.EcPublicKeyDoubleCoordinate
19
20
import com.android.identity.mdoc.mso.StaticAuthDataParser
20
21
import com.android.identity.mdoc.response.DeviceResponseGenerator
21
22
import com.android.identity.mdoc.response.DocumentGenerator
@@ -30,12 +31,10 @@ import com.android.identity.wallet.util.log
30
31
import com.google.android.gms.identitycredentials.GetCredentialResponse
31
32
import com.google.android.gms.identitycredentials.IntentHelper
32
33
import com.google.android.gms.identitycredentials.IntentHelper.EXTRA_CREDENTIAL_ID
33
- import com.google.android.gms.identitycredentials.IntentHelper.extractCallingAppInfo
34
34
import com.google.android.gms.identitycredentials.IntentHelper.extractGetCredentialRequest
35
35
import com.google.android.gms.identitycredentials.IntentHelper.setGetCredentialException
36
36
import com.google.android.gms.identitycredentials.IntentHelper.setGetCredentialResponse
37
37
import org.json.JSONObject
38
- import java.security.PublicKey
39
38
import java.util.StringTokenizer
40
39
41
40
class GetCredentialActivity : FragmentActivity () {
@@ -201,7 +200,8 @@ class GetCredentialActivity : FragmentActivity() {
201
200
202
201
// Covert nonce and publicKey
203
202
val nonce = Base64 .decode(nonceBase64, Base64 .NO_WRAP or Base64 .URL_SAFE )
204
- val readerPublicKey = CredmanUtil .publicKeyFromUncompressed(
203
+ val readerPublicKey = EcPublicKeyDoubleCoordinate .fromUncompressedPointEncoding(
204
+ EcCurve .P256 ,
205
205
Base64 .decode(readerPublicKeyBase64, Base64 .NO_WRAP or Base64 .URL_SAFE )
206
206
)
207
207
@@ -227,20 +227,21 @@ class GetCredentialActivity : FragmentActivity() {
227
227
CredmanUtil .generateAndroidSessionTranscript(
228
228
nonce,
229
229
callingPackageName,
230
- generatePublicKeyHash( readerPublicKey)
230
+ Crypto .digest( Algorithm . SHA256 , readerPublicKey.asUncompressedPointEncoding )
231
231
)
232
232
} else {
233
233
CredmanUtil .generateBrowserSessionTranscript(
234
234
nonce,
235
235
callingOrigin,
236
- generatePublicKeyHash( readerPublicKey)
236
+ Crypto .digest( Algorithm . SHA256 , readerPublicKey.asUncompressedPointEncoding )
237
237
)
238
238
}
239
239
// Create ISO DeviceResponse
240
240
createMDocDeviceResponse(credentialId, dataElements, encodedSessionTranscript) { deviceResponse ->
241
241
// The Preview protocol HPKE encrypts the response.
242
- val credmanUtil = CredmanUtil (readerPublicKey, null )
243
- val (cipherText, encapsulatedPublicKey) = credmanUtil.encrypt(
242
+ val (cipherText, encapsulatedPublicKey) = Crypto .hpkeEncrypt(
243
+ Algorithm .HPKE_BASE_P256_SHA256_AES128GCM ,
244
+ readerPublicKey,
244
245
deviceResponse,
245
246
encodedSessionTranscript
246
247
)
@@ -307,13 +308,13 @@ class GetCredentialActivity : FragmentActivity() {
307
308
CredmanUtil .generateAndroidSessionTranscript(
308
309
nonce,
309
310
callingPackageName,
310
- generateClientIdHash( clientID)
311
+ Crypto .digest( Algorithm . SHA256 , clientID.toByteArray() )
311
312
)
312
313
} else {
313
314
CredmanUtil .generateBrowserSessionTranscript(
314
315
nonce,
315
316
callingOrigin,
316
- generateClientIdHash( clientID)
317
+ Crypto .digest( Algorithm . SHA256 , clientID.toByteArray() )
317
318
)
318
319
}
319
320
// Create ISO DeviceResponse
0 commit comments