Skip to content
This repository has been archived by the owner on Aug 17, 2023. It is now read-only.

Erreur lors de PronoteConnection.login : java.security.InvalidAlgorithmParameterException #55

Open
ClementGre opened this issue Oct 24, 2020 · 7 comments

Comments

@ClementGre
Copy link

ClementGre commented Oct 24, 2020

Bonjour,

Lorsque j'essaye de run un programme de test qui vise uniquement à appeler PronoteConnection.login pour établir la connexion avec pronote, Gradle me donne l'erreur suivante :

javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
	at java.base/sun.security.ssl.Alerts.getSSLException(Alerts.java:214)
	at java.base/sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1969)
	at java.base/sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1921)
	at java.base/sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1904)
	at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1436)
	at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
	at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.kt:350)
	at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.kt:308)
	at okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:182)
	at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:238)
	at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:111)
	at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:79)
	at okhttp3.internal.connection.Transmitter.newExchange$okhttp(Transmitter.kt:163)
	at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:35)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:112)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:87)
	at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:82)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:112)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:87)
	at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:84)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:112)
	at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:71)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:112)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:87)
	at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.kt:194)
	at okhttp3.RealCall.execute(RealCall.kt:67)
	at net.leloubil.pronotelib.PronoteConnection.initEncryption(PronoteConnection.java:234)
	at net.leloubil.pronotelib.PronoteConnection.login(PronoteConnection.java:137)
	at fr.clementgre.testPronoteLib.main.Main.main(Main.java:11)

J'utilise Java 9 de AdoptOpenJDK et Voici mes versions Gradle :

------------------------------------------------------------
Gradle 6.1.1
------------------------------------------------------------

Build time:   2020-01-24 22:30:24 UTC
Revision:     a8c3750babb99d1894378073499d6716a1a1fa5d

Kotlin:       1.3.61
Groovy:       2.5.8
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          14.0.1 (AdoptOpenJDK 14.0.1+7)
OS:           Windows 10 10.0 amd64

- Clément G.

@ClementGre
Copy link
Author

Lorsque j'essaye de run avec le JDK 11 officiel d'Oracle, j'obtiens une erreur différente :

javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.
	at java.base/com.sun.crypto.provider.CipherCore.unpad(CipherCore.java:975)
	at java.base/com.sun.crypto.provider.CipherCore.fillOutputBuffer(CipherCore.java:1056)
	at java.base/com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:853)
	at java.base/com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:446)
	at java.base/javax.crypto.Cipher.doFinal(Cipher.java:2202)
	at net.leloubil.pronotelib.AuthManager.decryptAes(AuthManager.java:77)
	at net.leloubil.pronotelib.AuthManager.doChallenge(AuthManager.java:93)
	at net.leloubil.pronotelib.PronoteConnection.requestAuth(PronoteConnection.java:159)
	at net.leloubil.pronotelib.PronoteConnection.login(PronoteConnection.java:137)
	at fr.clementgre.testPronoteLib.main.Main.main(Main.java:10)

@LelouBil
Copy link
Owner

Bonjour, est ce que les tests fonctionnent dans votre environnement ?

@ClementGre
Copy link
Author

ClementGre commented Oct 24, 2020

Bonjour,
oui, j'arrive à build et à faire tout les types de tests sans aucun problème. Cette erreur ne survient que lors de la task run de gradle.

PS: j'ai fait une erreur dans le markdown de mon premier message, on ne voyait pas la première ligne de l'erreur, maintenant on la voit.

- Clément

@LelouBil
Copy link
Owner

Si les tests fonctionnent, je ne suis pas sur de ce que je peut faire, il doit y avoir un problème avec votre serveur Pronote/ vos identifiants ou alors c'est un problème spécifique avec celui ci.

@ClementGre
Copy link
Author

Il se pourrait en effet que l'erreur vienne de mon serveur Pronote, mais étant donné que j'obtiens une erreur différente avec en fonction de ma versions Java, je me demande si ça viens de là. L'erreur semble indiquer que le problème viendrait du système de cryptographie de Java. Quel est la version Java avec laquelle a été testé et compilé cette API ?

@LelouBil
Copy link
Owner

Si les tests fonctionnent avec le JDK 11 et AdoptOpenJDK 9, le probleme ne vient pas de la version de java, l'API est testé avec openJDK 11

@Overcraftor
Copy link

Bonjour,

j'ai exactement la même erreur au moment où j'appelle la method "login", j'utilise le JDK 11

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants