Skip to content

[FEATURE] EAP-TLS configuration support #433

@jrb0001

Description

@jrb0001

Is your feature request related to a problem? Please describe.
I have a network which uses EAP-TLS which isn't supported by nmrs at the moment.

Describe the solution you'd like
TLS needs the following additional values:

  • private-key
  • private-key-password if the private key is encrypted
  • client-cert

The following currently implemented values only apply to PEAP and TTLS and are irrelevant to TLS:

  • password
  • anonymous-identity
  • phase2-auth

It might be good to also implement WPA3 Enterprise 192-bit mode. The NetworkManager configuration is just EAP-TLS plus key-mgmt=wpa-eap-suite-b-192. TLS is the only supported method.

For Developers- what would your solution be?

I wrote a small PoC for everything needed by my application:

  • Move the PEAP/TTLS specific config to a new struct which is then used in EapMethod::Peap/EapMethod::Ttls.
  • Create a new struct for the TLS specific config and add it to EapMethod::Tls.
  • Make the new private key and certificate fields as well as the old ca_cert (also used by TLS) accept either a path or the data (uses blob scheme):
    • File scheme: Byte array must start with file:// and end in a null byte.
    • Blob scheme: Byte array with Just the raw data, DER format for ca-cert and client-cert or "encrypted PEM" for private-key or PKCS#12 for private-key (then client-cert must be identical?).
    • While it might work for ca-cert to send the path as a string, it gives an unhelpful error if the same is done for client-cert/private-key. Documentation specifies all three as byte array.

This approach is obviously not backwards compatible, but it's clearer about which values are needed for which method.

The alternative would be to add all new values to the current EapOptions struct and extend the validation logic. It is still a breaking change because password+phase2-auth have to become optional, but the update path is easier.

Metadata

Metadata

Assignees

No one assigned

    Labels

    api-surfacePublic API design, re-exports, and semver-relevant changesnmrsChanges to nmrswifiWiFi connection management

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions