Age | Commit message (Collapse) | Author |
|
|
|
I've also changed the way we notify that the password should have 8
characters at least, to make it consistent to the way we notify username
is required.
|
|
Logging in, it was returning a "Bad response from server" due to the malinterpretation of the received JSON. It was looking for a field named "m2", but it was "M2".
|
|
If there is an error while downloading CA cert on downloadJsonFiles, false is returned and progress dialog is dismissed.
|
|
They have been relocated to the corresponding classes.
|
|
|
|
I do not manually manage cookies anymore, letting HttpURLConnection
manage them via default CookieHandler (using
CookiePolicy.ACCEPT_ORIGINAL_SERVER).
|
|
SRP parameter A tries to be sent via HttpsURLConnection. Right now, we
have a problem with certificates because I'm not using provider CA cert
to get the response. I'm going to merge the branch with better method
names to download response using already existing code.
|
|
I send session_id cookie in the request for 1/cert, getting it from
LeapHttpClient directly.
|
|
|
|
I still let one method to bypass hostname verifier, otherwise dev.bm
will not work.
I've reduced downloading functions to 3: download without CA, download
with commercial CA and download with provider CA.
I only download CA cert once, when the user selects the corresponding
provider. Each time a user switch provider, the cert is downloaded
(along with other json files).
|
|
|
|
into develop
|
|
|
|
Added a new catch block in all downloads methods.
|
|
We no longer use BundleExtras named as the action ProviderAPI is
intended to perform, but we standardise this name
(ProviderAPI.PARAMETERS), and use setAction to pass that action string.
|
|
New login dialog shows the original username, so that if the user failed
writing his/her password, s/he does not have to write again the
username.
|
|
|
|
If the CA cert was correctly downloaded, we assume it can be used to
validate the string download.
If CA cert cannot validate that connection, then if the trust completely
checkbox was checked it will try with the other methods. If it was not
checked, a certificate error is shown (telling the user the
provider is not trusted).
|
|
Only if all downloading methods fail and the last one throws an
IOException, the certificate error message toast is shown.
|
|
I've also rearranged how we handle SSL errors. In first place, if the
user checked the "Trust completely" checkbox, leap_android tries to use
the CA cert pointed out by provider.json.
If that does not succeed, it uses an always-returning-true hostname
verifier (this was previously done before using CA cert).
|
|
If an empty json string is received after sending M1 (that means no M2
in return), bad user/password message is shown.
This fixes bug 3153.
|
|
LeapHttpClient can fetch the main CA certificate downloaded from the
provider and add it to its in-memory keystore, without saving the
certificate in a file.
This is a very important feature, I think it can be cherry picked (it has
little modifications, and very localized).
It's very important because authentication does not work without this
bug fix in the latest branches, because I removed the code that saved
the certificate in a file but didn't test the authentication part.
|
|
If a download didn't occurr due to an IOException, we assume it was for
an SSL error and notify the user telling him/her that LEAP provider is
not trusted.
|
|
I've set ProviderAPI to show its own toast depending on the exception
that getStringFromProvider issues. If the socket timeout reaches its
end, a toast different from when an IOException or a MalformedException
occur.
|
|
When login is not successful, a new recovery dialog is prompted with a
message about the previous error.
|
|
Once in the provider detail fragment, if the user presses the back
button, provider.json is removed from sharedpreferences (so that
Dashboard does not start as if the user had selected the canceled
provider) and ConfigurationWizard gets the focus.
|
|
I was treating the former exception simply as a kind of the latter, but
user messages are different. Now, each one shows its different error
message.
|
|
I forgot to add an else in the IOException from getStringFromProvider.
This was causing that even if the user checked the trusted completely
beckbox and everything was fine, the "not trusted provider" message was
being shown.
|
|
The previous commit broke functionality, and instead of discarding it
I've decided to undo with a new commit for future references.
It would seem that IOException can be substitued by
SSLHandshakeException, but the previous commit proves it cannot.
|
|
In getStringFromProvider, there is no IOException but an
SSLHandshakeException. Substituing this gives our code more semantics.
|
|
If a download didn't occurr due to an IOException, we assume it was for
an SSL error and notify the user telling him/her that LEAP provider is
not trusted.
|
|
I've set ProviderAPI to show its own toast depending on the exception
that getStringFromProvider issues. If the socket timeout reaches its
end, a toast different from when an IOException or a MalformedException
occur.
|
|
If ssl errors don't vanish using CA cert from provider, we go further and let the certificate not to be validated at all.
|
|
I've also removed a lot of finishes when things go wrong (so that it should be returning to the previous activity/fragment).
|
|
|
|
I've decided not to include any lib, but to copy the SRPParameters class
to our codebase and Util.trim method to ConfigHelper.
|
|
Some more constants added to ConfigHelper.
This solves #2908.
|
|
This resolves the first step from issue #2908.
Next step: Put user message strings into an appropiate place.
|
|
It's working against cdev.bitmask.net and bitmask.net. Look at #2840 for
further explanation about self signed certificates.
I've also removed some file dependant configuration (when a provider was
custom, ConfigurationWizard still tried to read from file a
provider.json that now I store in memory via ProviderItem class).
|
|
There was a problem on the assets file "bitmask.url". It had an error in
the eip-service url.
We should use this file only for main url, and proceed as if it were a
new provider but with a preseeded main url.
|
|
We were using it to save certificate and provider.json files from chosen
provider, so that exporting them was easily done.
We don't need that files, because if we wanted to export that files we
would be able to recover them easily and updated.
This fixes #2783
|
|
Variables from LeapSRPSession were there because I used it while testing
srp calculations, comparing that strings with the ones from javascript.
Unused method from ProviderAPI was there because I foresee I'll have to
implement it in the future, but I've removed it since it's already in
the history.
This fixes #2781.
|
|
from provider.json.
This fixes bug #2780
|
|
boolean, JSONObject)
|
|
LeapSRPSession was doing bad SRP calculations when salt byte array
started with a 0. Now I trimmed that array before using it.
ProviderAPI was not timing out when a server didn't respond. Now, I use
a timeout of 1 second to stop waiting for a response.
|
|
I download the anon certificate only if allow_anonymous is true, and
before launching Dashboard.
I store it in SharedPreferences, with "cert" key, as a JSON object.
|
|
I've upper cased ConfigHelper constants.
I've created a new method in ConfigHelper, to send requests to a server,
that it's used when sending A and M1.
|
|
Allow registration is present in provider.json.
Provider.json is downloaded from both preseeded and custom providers.
Authentication success or fail is notified correctly to the user.
|
|
It is stored in SharedPrefs, with ConfigHelper.cert_key (="cert") key.
|