java.security.NoSuchAlgorithmException: no such algorithm: SHA256WITHRSA for provider SC
I am getting the error only in the release build of my android app
My code
fun createCertificate(
provider : Provider = BouncyCastleProvider()
): X509Certificate {
val keyPair = KeyPairGenerator.getInstance("RSA").genKeyPair()
val subPubKeyInfo = SubjectPublicKeyInfo.getInstance(keyPair.public.encoded)
val now = Instant.now()
val validFrom = Date.from(now)
val validTo = Date.from(now.plusSeconds(60L * 60 * 24 * 365))
val certBuilder = X509v3CertificateBuilder(
X500Name("CN=ZANTA,O=QANTA,L=NewYork,C=DE"),
BigInteger.ONE,
validFrom,
validTo,
X500Name("CN=ZANTA,O=QANTA,L=NewYork,C=DE"),
subPubKeyInfo
)
val signer = JcaContentSignerBuilder("SHA256WithRSA")
.setProvider(provider)
.build(keyPair.private)
return JcaX509CertificateConverter().setProvider(provider)
.getCertificate(certBuilder.build(signer))
}
The Stacktrace
E/ERRRR: GONNNPRJ T
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:566)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1038)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1038)
Caused by: org.spongycastle.operator.OperatorCreationException: cannot create signer: no such algorithm: SHA256WITHRSA for provider SC
at org.spongycastle.operator.jcajce.JcaContentSignerBuilder.build(JcaContentSignerBuilder.java:102)
at com.shalimart22.xferrr.util.SecurityUtil.createCertificate(SecurityUtil.kt:40)
at com.shalimart22.xferrr.data.UserDataRepository$certificate$2.invoke(UserDataRepository.kt:116)
at com.shalimart22.xferrr.data.UserDataRepository$certificate$2.invoke(UserDataRepository.kt:69)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at com.shalimart22.xferrr.data.UserDataRepository.getCertificate(UserDataRepository.kt:69)
at com.shalimart22.xferrr.data.UserDataRepository.getClientStatic(UserDataRepository.kt:143)
at com.shalimart22.xferrr.data.UserDataRepository$client$2.invoke(UserDataRepository.kt:147)
at com.shalimart22.xferrr.data.UserDataRepository$client$2.invoke(UserDataRepository.kt:146)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at com.shalimart22.xferrr.data.UserDataRepository.getClient(UserDataRepository.kt:146)
at com.shalimart22.xferrr.viewmodel.UserProfileViewModel.<init>(UserProfileViewModel.kt:40)
at com.shalimart22.xferrr.DaggerApp_HiltComponents_SingletonC$ViewModelCImpl$SwitchingProvider.get(DaggerApp_HiltComponents_SingletonC.java:1106)
at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory$1.create(HiltViewModelFactory.java:104)
at androidx.lifecycle.AbstractSavedStateViewModelFactory.create(AbstractSavedStateViewModelFactory.java:89)
at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.create(HiltViewModelFactory.java:116)
at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:187)
at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:153)
at androidx.lifecycle.ViewModelLazy.getValue(ViewModelLazy.kt:53)
at androidx.lifecycle.ViewModelLazy.getValue(ViewModelLazy.kt:35)
at com.shalimart22.xferrr.activity.IntroductionProfileFragment.getViewModel(WelcomeActivity.kt:239)
at com.shalimart22.xferrr.activity.IntroductionProfileFragment.onViewCreated(WelcomeActivity.kt:251)
at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3128)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:552)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1899)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1817)
at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1729)
at androidx.fragment.app.BackStackRecord.commitNow(BackStackRecord.java:317)
at androidx.viewpager2.adapter.FragmentStateAdapter.placeFragmentInViewHolder(FragmentStateAdapter.java:341)
at androidx.viewpager2.adapter.FragmentStateAdapter.onViewAttachedToWindow(FragmentStateAdapter.java:276)
at androidx.viewpager2.adapter.FragmentStateAdapter.onViewAttachedToWindow(FragmentStateAdapter.java:67)
at androidx.recyclerview.widget.RecyclerView.dispatchChildAttached(RecyclerView.java:7867)
at androidx.recyclerview.widget.RecyclerView$5.addView(RecyclerView.java:893)
at androidx.recyclerview.widget.ChildHelper.addView(ChildHelper.java:107)
at androidx.recyclerview.widget.RecyclerView$LayoutManager.addViewInt(RecyclerView.java:8902)
at androidx.recyclerview.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:8860)
E/ERRRR: at androidx.recyclerview.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:8848)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1645)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1591)
at androidx.recyclerview.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1395)
at androidx.recyclerview.widget.LinearLayoutManager.scrollHorizontallyBy(LinearLayoutManager.java:1124)
at androidx.recyclerview.widget.RecyclerView.scrollStep(RecyclerView.java:1969)
at androidx.recyclerview.widget.RecyclerView$SmoothScroller.onAnimation(RecyclerView.java:12316)
at androidx.recyclerview.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:5564)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1160)
at android.view.Choreographer.doCallbacks(Choreographer.java:950)
at android.view.Choreographer.doFrame(Choreographer.java:874)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1142)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:210)
at android.os.Looper.loop(Looper.java:299)
at android.app.ActivityThread.main(ActivityThread.java:8309)
... 3 more
Caused by: java.security.NoSuchAlgorithmException: no such algorithm: SHA256WITHRSA for provider SC
at sun.security.jca.GetInstance.getService(GetInstance.java:101)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:218)
at java.security.Signature.getInstance(Signature.java:549)
at org.spongycastle.jcajce.util.ProviderJcaJceHelper.createSignature(ProviderJcaJceHelper.java:99)
at org.spongycastle.operator.jcajce.OperatorHelper.createSignature(OperatorHelper.java:314)
at org.spongycastle.operator.jcajce.JcaContentSignerBuilder.build(JcaContentSignerBuilder.java:61)
... 56 more