in app/aws/PasskeyDB.scala [36:81]
def toDynamoItem(
user: UserIdentity,
credentialRecord: CredentialRecord
): Map[String, AttributeValue] =
Map(
"username" -> AttributeValue.fromS(user.username),
"credentialId" -> AttributeValue.fromS(
Base64UrlUtil.encodeToString(
credentialRecord.getAttestedCredentialData.getCredentialId
)
),
"credential" -> AttributeValue.fromS(
Base64UrlUtil.encodeToString(
credentialDataConverter.convert(
credentialRecord.getAttestedCredentialData
)
)
),
"attestationStatement" -> AttributeValue.fromS(
Base64UrlUtil.encodeToString(
objConverter.getCborConverter.writeValueAsBytes(
credentialRecord.getAttestationStatement
)
)
),
"authenticatorExtensions" -> AttributeValue.fromS(
Base64UrlUtil.encodeToString(
objConverter.getCborConverter.writeValueAsBytes(
credentialRecord.getAuthenticatorExtensions
)
)
),
// see https://www.w3.org/TR/webauthn-1/#sign-counter
"authCounter" -> AttributeValue.fromN("0")
)
def insert(
user: UserIdentity,
credentialRecord: CredentialRecord
)(implicit dynamoDB: DynamoDbClient): Try[Unit] = Try {
val item = toDynamoItem(user, credentialRecord)
val request =
PutItemRequest.builder().tableName(tableName).item(item.asJava).build()
dynamoDB.putItem(request)
()
}.recoverWith(exception =>