github 프로젝트를 본 학생분께서 질문메일을 보내주셨습니다. (관심있게 봐주셔서 감사합니다.)
저 메일을 받고, 머리를 탁 맞은 기분이였습니다.
단순예제를 보이기 위함이였지만, 그럼에도 설명이 많이 부족했구나를 깨달았습니다.
그에따라 해당 부분에 대한 코드를 수정하였는데요.
nonce 를 생성하는 더 좋은 코드와 방법이 있다면, 답글로 알려주시면 감사하겠습니다 (꾸벅)
/**
* Nonce : 안드로이드에서 SafetyNet 에서 사용
* SafetyNet Attestation API를 호출할 때 nonce를 전달해야 합니다.
* SafetyNet 요청에 사용되는 nonce는 길이가 16바이트 이상이어야 합니다.
* */
class SafetyUtils {
//랜덤한 문자열을 생성하기 위한 BASE String
private fun loadBaseString(): String {
return "abcdefghijklmnopqrstuvwxyz0123456789_-"
}
//현재 년월일시분초밀리초를 반환
private fun createDateNow(): String {
val current = LocalDateTime.now()
val formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")
return current.format(formatter)
}
//결합하여 고유하면서 랜덤한 nonce 생성 (Size : 34)
fun createNonce() : ByteArray {
val dateStr = createDateNow()
val baseStr = loadBaseString()
val nonce = StringBuilder()
for (i in dateStr.toCharArray()) {
//date 로 BASE 참조 (고유) : 0~9 를 참조하기 위해 i - ASCII
nonce.append(baseStr[i.toInt()-48])
//랜덤하게 BASE 참조 (랜덤)
nonce.append(baseStr[Random().nextInt(baseStr.length - 1)])
}
return nonce.toString().toByteArray()
}
}
val FIREBASE_AUTH_NONCE = SafetyUtils().createNonce()
앞으로 github 에 코드를 작성할 때, 코드를 보는 사람이 추가적으로 작성을 해야하는 부분이나, 이미 작성된 부분에 대해서
보다 정확한 설명이 필요하겠구나를 느끼게 되었네요..
코드기반 질문을 해주셔서 다시 한번 감사합니다.
'BackUp (관리중지) > Android Q&A' 카테고리의 다른 글
[Android] ScrollView inner WebView 스크롤 (0) | 2021.07.27 |
---|---|
[Android] PermissionDialog 가 동작하지 않습니다. (0) | 2021.06.03 |
Fragment 를 사용하는데, 앱이 점점 느려져요. (0) | 2021.04.21 |