Hi, when given an invalid client key file, rumqtt panics with 'index out of bounds: the len is 0 but the index is 0'.
The stacktrace (included as an attachment) points to this line: https://github.com/AtherEnergy/rumqtt/blob/master/src/client/network.rs#L124 as the culprit.
The error happens during the code:
let mqtt_options = MqttOptions::new(
config.client_id.clone(),
config.endpoint.clone(),
config.mqtt_port.unwrap_or(DEFAULT_MQTTS_PORT),
)
.set_ca(config.ca.clone())
.set_client_auth(config.cert.clone(), "dummy_key".to_owned().into_bytes());
MqttClient::start(mqtt_options)
and if the dummy key bytes are replaced with the real key bytes there is no issue and everything works.
I would have expected MqttClient::start (and NetworkStreamBuilder::create_stream) to instead return an error which says something about an invalid key instead of panicking.
EDIT: that unwrap in create_stream doesn't look great to me either, from looking at the source of pemfile::rsa_private_keys, it will return an Err if there's invalid base64 after "-----BEGIN PRIVATE KEY-----" in the file: https://github.com/ctz/rustls/blob/master/rustls/src/pemfile.rs
EDIT 2: I should also say that I'm very happy to put together a PR to fix this.
rumqtt_panic_backtrace.txt