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 에 코드를 작성할 때, 코드를 보는 사람이 추가적으로 작성을 해야하는 부분이나, 이미 작성된 부분에 대해서

보다 정확한 설명이 필요하겠구나를 느끼게 되었네요..

 

코드기반 질문을 해주셔서 다시 한번 감사합니다.

+ Recent posts