mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
Sync
- Default TLS cipher selection, with override (thanks to Zed Jorarard). - Updated documentation.
This commit is contained in:
parent
c6032d99f9
commit
0df30a5be0
9 changed files with 31 additions and 3 deletions
1
AUTHORS
1
AUTHORS
|
@ -93,6 +93,7 @@ The following submitted code, packages or analysis, and deserve special thanks:
|
||||||
Aaron Bieber
|
Aaron Bieber
|
||||||
John West
|
John West
|
||||||
Jeroen Budts
|
Jeroen Budts
|
||||||
|
Zed Jorarard
|
||||||
|
|
||||||
Thanks to the following, who submitted detailed bug reports and excellent
|
Thanks to the following, who submitted detailed bug reports and excellent
|
||||||
suggestions:
|
suggestions:
|
||||||
|
|
1
NEWS
1
NEWS
|
@ -27,6 +27,7 @@ New configuration options in taskwarrior 2.3.0
|
||||||
- 'taskd.key' specifies the task server key for encryption.
|
- 'taskd.key' specifies the task server key for encryption.
|
||||||
- 'taskd.ca' specifies the task server CA.
|
- 'taskd.ca' specifies the task server CA.
|
||||||
- 'taskd.trust' overrides certificate checking.
|
- 'taskd.trust' overrides certificate checking.
|
||||||
|
- 'taskd.ciphers' overrides default cipher selection.
|
||||||
- 'debug.tls' shows TLS log information, for debugging.
|
- 'debug.tls' shows TLS log information, for debugging.
|
||||||
- The configuration file supports JSON encoding of unicode characters \uNNNN.
|
- The configuration file supports JSON encoding of unicode characters \uNNNN.
|
||||||
|
|
||||||
|
|
|
@ -1375,11 +1375,19 @@ using a self-signed certificate. Optional.
|
||||||
.TP
|
.TP
|
||||||
.B taskd.trust=yes|no
|
.B taskd.trust=yes|no
|
||||||
.RS
|
.RS
|
||||||
If you do not specify a CA certificate when your task server is usㄟng a self-
|
If you do not specify a CA certificate when your task server is using a self-
|
||||||
signed certificate, you can override the certificate validation by setting this
|
signed certificate, you can override the certificate validation by setting this
|
||||||
value to 'yes'. Default is not to trust a server certificate.
|
value to 'yes'. Default is not to trust a server certificate.
|
||||||
.RE
|
.RE
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B taskd.ciphers=NORMAL
|
||||||
|
Override of the cipher selection. The set of ciphers used by TLS may be
|
||||||
|
controlled by both server and client. There must be some overlap between
|
||||||
|
client and server supported ciphers, or communication cannot occur.
|
||||||
|
Default is "NORMAL". See GnuTLS documentation for full details.
|
||||||
|
.RE
|
||||||
|
|
||||||
.SH "CREDITS & COPYRIGHTS"
|
.SH "CREDITS & COPYRIGHTS"
|
||||||
Copyright (C) 2006 \- 2013 P. Beckingham, F. Hernandez.
|
Copyright (C) 2006 \- 2013 P. Beckingham, F. Hernandez.
|
||||||
|
|
||||||
|
|
|
@ -301,6 +301,7 @@ std::string Config::_defaults =
|
||||||
"#taskd.certificate <certificat file>\n"
|
"#taskd.certificate <certificat file>\n"
|
||||||
"#taskd.credentials <organization>/<name>/<password>\n"
|
"#taskd.credentials <organization>/<name>/<password>\n"
|
||||||
"#taskd.server <server>:<port>\n"
|
"#taskd.server <server>:<port>\n"
|
||||||
|
"taskd.ciphers=NORMAL\n"
|
||||||
"\n"
|
"\n"
|
||||||
"# Aliases - alternate names for commands\n"
|
"# Aliases - alternate names for commands\n"
|
||||||
"alias.rm=delete # Alias for the delete command\n"
|
"alias.rm=delete # Alias for the delete command\n"
|
||||||
|
|
|
@ -154,6 +154,12 @@ void TLSClient::trust (bool value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
void TLSClient::ciphers (const std::string& cipher_list)
|
||||||
|
{
|
||||||
|
_ciphers = cipher_list;
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
void TLSClient::init (
|
void TLSClient::init (
|
||||||
const std::string& ca,
|
const std::string& ca,
|
||||||
|
@ -181,9 +187,12 @@ void TLSClient::init (
|
||||||
#endif
|
#endif
|
||||||
gnutls_init (&_session, GNUTLS_CLIENT);
|
gnutls_init (&_session, GNUTLS_CLIENT);
|
||||||
|
|
||||||
// Use default priorities.
|
// Use default priorities unless overridden.
|
||||||
|
if (_ciphers == "")
|
||||||
|
_ciphers = "NORMAL";
|
||||||
|
|
||||||
const char *err;
|
const char *err;
|
||||||
int ret = gnutls_priority_set_direct (_session, "NORMAL", &err);
|
int ret = gnutls_priority_set_direct (_session, _ciphers.c_str (), &err);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
if (_debug && ret == GNUTLS_E_INVALID_REQUEST)
|
if (_debug && ret == GNUTLS_E_INVALID_REQUEST)
|
||||||
|
|
|
@ -40,6 +40,7 @@ public:
|
||||||
void limit (int);
|
void limit (int);
|
||||||
void debug (int);
|
void debug (int);
|
||||||
void trust (bool);
|
void trust (bool);
|
||||||
|
void ciphers (const std::string&);
|
||||||
void init (const std::string&, const std::string&, const std::string&);
|
void init (const std::string&, const std::string&, const std::string&);
|
||||||
void connect (const std::string&, const std::string&);
|
void connect (const std::string&, const std::string&);
|
||||||
void bye ();
|
void bye ();
|
||||||
|
@ -51,6 +52,7 @@ private:
|
||||||
std::string _ca;
|
std::string _ca;
|
||||||
std::string _cert;
|
std::string _cert;
|
||||||
std::string _key;
|
std::string _key;
|
||||||
|
std::string _ciphers;
|
||||||
gnutls_certificate_credentials_t _credentials;
|
gnutls_certificate_credentials_t _credentials;
|
||||||
gnutls_session_t _session;
|
gnutls_session_t _session;
|
||||||
int _socket;
|
int _socket;
|
||||||
|
|
|
@ -238,6 +238,10 @@ int CmdDiagnostics::execute (std::string& output)
|
||||||
<< context.config.get ("taskd.key")
|
<< context.config.get ("taskd.key")
|
||||||
<< "\n";
|
<< "\n";
|
||||||
|
|
||||||
|
out << " Ciphers: "
|
||||||
|
<< context.config.get ("taskd.ciphers")
|
||||||
|
<< "\n";
|
||||||
|
|
||||||
// Get credentials, but mask out the key.
|
// Get credentials, but mask out the key.
|
||||||
std::string credentials = context.config.get ("taskd.credentials");
|
std::string credentials = context.config.get ("taskd.credentials");
|
||||||
std::string::size_type last_slash = credentials.rfind ('/');
|
std::string::size_type last_slash = credentials.rfind ('/');
|
||||||
|
|
|
@ -191,6 +191,7 @@ int CmdShow::execute (std::string& output)
|
||||||
" taskd.server"
|
" taskd.server"
|
||||||
" taskd.ca"
|
" taskd.ca"
|
||||||
" taskd.certificate"
|
" taskd.certificate"
|
||||||
|
" taskd.ciphers"
|
||||||
" taskd.credentials"
|
" taskd.credentials"
|
||||||
" taskd.key"
|
" taskd.key"
|
||||||
" taskd.trust"
|
" taskd.trust"
|
||||||
|
|
|
@ -345,6 +345,7 @@ bool CmdSync::send (
|
||||||
client.debug (context.config.getInteger ("debug.tls"));
|
client.debug (context.config.getInteger ("debug.tls"));
|
||||||
|
|
||||||
client.trust (trust);
|
client.trust (trust);
|
||||||
|
client.ciphers (context.config.get ("taskd.ciphers"));
|
||||||
client.init (ca, certificate, key);
|
client.init (ca, certificate, key);
|
||||||
client.connect (server, port);
|
client.connect (server, port);
|
||||||
client.send (request.serialize () + "\n");
|
client.send (request.serialize () + "\n");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue