Hi Fabien,

> This patch adds error and info messages in case connman detects
> missing parameters when doing a TLS or a PEAP/TTLS authentication.
> ---
>  plugins/supplicant.c |   66 ++++++++++++++++++++++++++++++++++++++-----------
>  1 files changed, 51 insertions(+), 15 deletions(-)
> 
> diff --git a/plugins/supplicant.c b/plugins/supplicant.c
> index 7e2a2e5..ba312b0 100644
> --- a/plugins/supplicant.c
> +++ b/plugins/supplicant.c
> @@ -1075,29 +1075,44 @@ static int set_network_tls(struct connman_network 
> *network,
>       const char *private_key_password;
>  
>       /*
> -      * For TLS, we at least need a key, the client cert,
> -      * and a passhprase.
> -      * Server cert is optional.
> +      * For TLS, we at least need:
> +        *                  The client certificate 
> +      *                  The client private key file
> +      *                  The client private key file password
> +      *  
> +      * The Authority certificate is optional.
>        */
>       client_cert = connman_network_get_string(network,
>                                               "WiFi.ClientCertFile");
> -     if (client_cert == NULL)
> +     if (client_cert == NULL) {
> +             connman_error("Error in TLS authentication: "
> +                           "a ClientCertFile must be defined\n");
>               return -EINVAL;
> +     }
>  
>       private_key = connman_network_get_string(network,
>                                               "WiFi.PrivateKeyFile");
> -     if (private_key == NULL)
> +     if (private_key == NULL) {
> +             connman_error("Error in TLS authentication: "
> +                           "a PrivateKeyFile must be defined\n");
>               return -EINVAL;
> +     }
>  
>       private_key_password = connman_network_get_string(network,
>                                               "WiFi.PrivateKeyPassphrase");
> -     if (private_key_password == NULL)
> +     if (private_key_password == NULL) {
> +             connman_error("Error in TLS authentication: "
> +                           "a PrivateKeyPassphrase must be defined\n");
>               return -EINVAL;
> +     }
>  
>       ca_cert = connman_network_get_string(network, "WiFi.CACertFile");
>       if (ca_cert)
>               connman_dbus_dict_append_basic(dict, "ca_cert",
>                                               DBUS_TYPE_STRING, &ca_cert);
> +     else
> +             connman_info("No CACertFile has been provided "
> +                          "to do the TLS authentication\n");
>  
>       DBG("client cert %s private key %s", client_cert, private_key);
>  
> @@ -1119,19 +1134,29 @@ static int set_network_peap(struct connman_network 
> *network,
>       char *phase2_auth;
>  
>       /*
> -      * For PEAP, we at least need the sever cert, a 2nd
> -      * phase authentication and a passhprase.
> -      * Client cert is optional although strongly required
> -      * When setting the client cert, we then need a private
> -      * key as well.
> +      * For PEAP/TTLS, we at least need 
> +      *                  The authority certificate
> +      *                  The 2nd phase authentication method
> +      *                  The 2nd phase passphrase
> +      *
> +      * The Client certificate is optional although strongly required
> +        * When setting it, we need in addition
> +      *                   The Client private key file
> +      *                   The Client private key file password
>        */
>       ca_cert = connman_network_get_string(network, "WiFi.CACertFile");
> -     if (ca_cert == NULL)
> +     if (ca_cert == NULL) {
> +             connman_error("Error in PEAP/TTLS authentication: " 
> +                           "CACertFile must be defined\n");
>               return -EINVAL;
> +     }
>  
>       phase2 = connman_network_get_string(network, "WiFi.Phase2");
> -     if (phase2 == NULL)
> +     if (phase2 == NULL) {
> +             connman_error("Error in PEAP/TTLS authentication: "
> +                           "Phase2 must be defined\n");
>               return -EINVAL;
> +     }
>  
>       DBG("CA cert %s phase2 auth %s", ca_cert, phase2);
>  
> @@ -1142,14 +1167,22 @@ static int set_network_peap(struct connman_network 
> *network,
>  
>               private_key = connman_network_get_string(network,
>                                                       "WiFi.PrivateKeyFile");
> -             if (private_key == NULL)
> +             if (private_key == NULL) {
> +                     connman_error("Error in PEAP/TTLS authentication: "
> +                                   "with ClientCertFile, "
> +                                   "PrivateKeyFile must be defined\n");
>                       return -EINVAL;
> +             }
>  
>               private_key_password =
>                       connman_network_get_string(network,
>                                               "WiFi.PrivateKeyPassphrase");
> -             if (private_key_password == NULL)
> +             if (private_key_password == NULL) {
> +                     connman_error("Error in PEAP/TTLS authentication: "
> +                                   "with ClientCertFile, "
> +                                   "PrivateKeyPassphrase must be defined\n");
>                       return -EINVAL;
> +             }
>  
>               connman_dbus_dict_append_basic(dict, "client_cert",
>                                               DBUS_TYPE_STRING, &client_cert);
> @@ -1163,6 +1196,9 @@ static int set_network_peap(struct connman_network 
> *network,
>  
>               DBG("client cert %s private key %s", client_cert, private_key);
>       }
> +       else
> +             connman_info("No client certificate has been provided "
> +                          "to do the PEAP/TTLS authentication\n");

so far so good, but it is } else on the same line. Also why print a
connman_info statement here. It is not an error?

Regards

Marcel


_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to