naver / naveridlogin-sdk-android

네이버 아이디로 로그인 SDK (안드로이드)
https://developers.naver.com/docs/login/overview/
Apache License 2.0
114 stars 29 forks source link

[Bug Report] Caused by android.security.keystore.KeyNotYetValidException #101

Closed tjkim9096 closed 8 months ago

tjkim9096 commented 1 year ago

Bug Report

재현 환경

사용중인 네아로 SDK 버전

Android 버전

재현되는 기기 모델명

이슈

이슈 명세

기대한 결과

실제 결과

재현 시나리오

Stack trace

Caused by android.security.keystore.KeyNotYetValidException Key not yet valid android.security.KeyStore.getInvalidKeyException (KeyStore.java:1320) android.security.KeyStore.getInvalidKeyException (KeyStore.java:1413) android.security.keystore.KeyStoreCryptoOperationUtils.getInvalidKeyExceptionForInit (KeyStoreCryptoOperationUtils.java:54) android.security.keystore.KeyStoreCryptoOperationUtils.getExceptionForCipherInit (KeyStoreCryptoOperationUtils.java:89) android.security.keystore.AndroidKeyStoreCipherSpiBase.ensureKeystoreOperationInitialized (AndroidKeyStoreCipherSpiBase.java:265) android.security.keystore.AndroidKeyStoreCipherSpiBase.engineInit (AndroidKeyStoreCipherSpiBase.java:109) javax.crypto.Cipher.tryTransformWithProvider (Cipher.java:2984) javax.crypto.Cipher.tryCombinations (Cipher.java:2891) javax.crypto.Cipher$SpiAndProviderUpdater.updateAndGetSpiAndProvider (Cipher.java:2796) javax.crypto.Cipher.chooseProvider (Cipher.java:773) javax.crypto.Cipher.init (Cipher.java:1143) javax.crypto.Cipher.init (Cipher.java:1084) com.google.crypto.tink.integration.android.AndroidKeystoreAesGcm.encryptInternal (AndroidKeystoreAesGcm.java:85) com.google.crypto.tink.integration.android.AndroidKeystoreAesGcm.encrypt (AndroidKeystoreAesGcm.java:73) com.google.crypto.tink.integration.android.AndroidKeystoreKmsClient.validateAead (AndroidKeystoreKmsClient.java:298) com.google.crypto.tink.integration.android.AndroidKeystoreKmsClient.getAead (AndroidKeystoreKmsClient.java:180) com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.readMasterkeyDecryptAndParseKeyset (AndroidKeysetManager.java:365) com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.build (AndroidKeysetManager.java:297) androidx.security.crypto.EncryptedSharedPreferences.create (EncryptedSharedPreferences.java:169) androidx.security.crypto.EncryptedSharedPreferences.create (EncryptedSharedPreferences.java:130) com.navercorp.nid.preference.EncryptedPreferences.createSharedPreferences (EncryptedPreferences.kt:59) com.navercorp.nid.preference.EncryptedPreferences.init (EncryptedPreferences.kt:49) com.navercorp.nid.preference.EncryptedPreferences.access$init (EncryptedPreferences.kt:18) com.navercorp.nid.preference.EncryptedPreferences$encryptedPreferences$2.invoke (EncryptedPreferences.kt:31) com.navercorp.nid.preference.EncryptedPreferences$encryptedPreferences$2.invoke (EncryptedPreferences.kt:30) kotlin.SynchronizedLazyImpl.getValue (LazyJVM.kt:74) com.navercorp.nid.preference.EncryptedPreferences.getEncryptedPreferences (EncryptedPreferences.kt:30) com.navercorp.nid.preference.EncryptedPreferences.get (EncryptedPreferences.kt:111) com.navercorp.nid.oauth.NidOAuthPreferencesManager.getClientId (NidOAuthPreferencesManager.kt:54) com.navercorp.nid.preference.EncryptedPreferences.migration (EncryptedPreferences.kt:137) com.navercorp.nid.preference.EncryptedPreferences.setContext (EncryptedPreferences.kt:71) com.navercorp.nid.NaverIdLoginSDK.initialize (NaverIdLoginSDK.kt:86) incruit.app.common.social.SocialInit.initNaver (SocialInit.java:101) incruit.app.common.social.SocialInit.setSocialInit (SocialInit.java:62) incruit.app.BaseApplication.onCreate (BaseApplication.java:96) android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1189) android.app.ActivityThread.handleBindApplication (ActivityThread.java:6460) android.app.ActivityThread.access$1300 (ActivityThread.java:219) android.app.ActivityThread$H.handleMessage (ActivityThread.java:1859) android.os.Handler.dispatchMessage (Handler.java:107) android.os.Looper.loop (Looper.java:214) android.app.ActivityThread.main (ActivityThread.java:7356) java.lang.reflect.Method.invoke (Method.java) com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:491) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:940)

Reference

DayeonLee-0 commented 1 year ago

@tjkim9096 님 안녕하세요.

네아로 SDK 담당자입니다.

상세한 이슈 확인을 위해 재현 가능한 간단한 샘플프로젝트나 레포지토리 공유를 부탁드립니다.

감사합니다.

tjkim9096 commented 1 year ago

안녕하세요.

문제가 발생하는 앱은 현재 상용중인 앱으로 회사 내부 정책 상 소스코드 및 레포지토리 공유가 불가능 합니다.

코드는 앱 실행 시 네아로 SDK를 BaseApplication 에서 (MultiDexApplication 상속) init 함수 호출 시 문제가 발생하고 있습니다.

CLIENT_ID : cDJwhdMC2ndpUr7D6Eom

추가로 확인이 필요한 사항이 있으면 확인 하도록 하겠습니다.

DayeonLee-0 commented 1 year ago

@tjkim9096 님 안녕하세요.

공유해 주신 CLIENT_ID로 확인한 앱을 설치해 봤지만 특이사항은 없었습니다.

해당 이슈가 발생하는 재현 시나리오 혹은 특정 기기가 있다면 공유 부탁드립니다.

감사합니다.

tjkim9096 commented 1 year ago

저희측에서도 내부 테스트시 재현이 되는 상황이 아닙니다.

하지만 firebase Crashlytics 리포트로 계속 오류가 집계되고 있습니다. (디바이스 종류 / OS도 다양 합니다.)

추가로 필요한 정보가 있다면 전달 드리겠습니다.

DayeonLee-0 commented 8 months ago

안녕하세요.

네아로 SDK 담당자입니다.

네아로 SDK v5.9.1에서 KeyNotYetValidException 대한 예외 처리가 추가되었습니다.

개발에 참고 부탁드립니다.

감사합니다.