| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Make ciphersuite_list a free standing function
Now the Policy interface only contains actual policy hooks (no
non-virtual functions). Though choose_curve is a little dubious.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
seconds and report that value to the client in the NewSessionTicket
message. After that point, a session ticket is ignored and a full
renegotiation is forced.
Only send a new session ticket on a new session, or on a resumed
session where the client indicated it supports session tickets but for
whatever reason didn't send one in the hello. Perhaps in this case, we
should also remove the session from the session manager?
Clean up server selection of the ciphersuite a bit, all in an anon
function in tls_server instead of scattered over Server, Policy, and
Server_Hello.
Add Session::session_age and Session_Manager::session_lifetime
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
against OpenSSL.
One big issue that needs to be resolved is that with these
ciphersuites available to be negotiated, we want to make sure they
only are used when the application/user expects them to. Problem is
that PSK and SRP are "anonymous" but authenticated via the shared
secret. We need to be able to distinguish these on a policy
level. Otherwise a MITM could simply offer anon DH, which would be
somewhat unfortunate. A client could detect this in the handshake
callback, but might not.
In the short term to ensure this doesn't occur, disable both anon DH
and PSK/SRP in the default policy.
|
|
|
|
|
|
| |
previously negotiating any MD5-based ciphersuite in TLS 1.2 would
cause MAC failures as the master secret would come out differently due
to using the wrong PRF.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
integer->info mapping to tls_suite_info.cpp which is mostly
autogenerated by a Python script from the IANA parameters file.
The SRP method now uses kex "SRP_SHA" which is what the RFC calls it.
(And hypothetically, SRP_SHA256 might be defined at some point and
we'd need to be able to distinguish them).
Remove IDEA ciphersuite; we don't want to require IDEA be available
due to the European patent still being valid (IIRC), but I didn't want
to have to hand-edit the autogenerated switch with an #if check. Not a
huge issue though as most sites don't support it anyway.
|
|
|
|
|
|
|
|
|
| |
flags; if params change just regen the magic value and drop old
sessions. Check the magic value right from the start. Use constants
for internal sizes.
Increase default PBKDF2 iterations in the SQLite session manager
to 64K.
|
|
|
|
|
|
|
|
| |
anyway so we can output them with a single message. For some network
approaches this won't make any difference but it might help with
something doing direct writes on each callback. Additionally it seems
important for DTLS, where each record must be contained in a single
packet.
|
|
|
|
|
|
|
|
|
|
|
| |
manager is being used, it could be easily used for session tickets as
well, and if it's not the generate-on-first-call technique is easy to
write.
Avoid offering the session ticket extension if we know we don't have a
key. For one thing it will cause us to avoid using stateful sessions,
but additionally OpenSSL 1.0.1 is very intolerant of empty
NewSessionTicket messages so definitely worth avoiding when we can.
|
| |
|
|
|
|
|
| |
with a default implementation that creates a new random key on the
first call.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
hello. Also include a full list of ciphersuites, ensuring that our
original session ciphersuite is in the list regardless of policy
(maybe it would be better to just not resume in that case, though?).
Otherwise, if the server doesn't remember our session (or the session
ticket key), it might not be capable of negotiating using the single
ciphersuite we sent due to lack of information (allowed curves was a
particular issue here). Including the full ciphersuite list also
allows for rengotiating the ciphersuite if, for instance, the session
can't be resumed because the server used to have an RSA cert but has
since replaced it with an ECDSA cert.
|
| |
|
|
|
|
|
|
|
|
|
| |
some kind.
Fix New_Session_Ticket decoding. Apparently when the RFC says that a
server that does not want to send a ticket sends "an empty ticket"
that means a lifetime value plus an empty ticket, not an actually
empty extension.
|
| |
|
| |
|
|\
| |
| |
| |
| |
| | |
6bcbae3d22e4d873a8e941d0325ad666482ac4da)
to branch 'net.randombit.botan.tls-session-ticket' (head 9048722b5d18b39cf21f8542942dab94a9bd4e6b)
|
| |
| |
| |
| | |
hard-coded key.
|
| |
| |
| |
| | |
OpenSSL 1.0.1-beta2 running on localhost.
|
| | |
|
| | |
|
| |\
| | |
| | |
| | |
| | |
| | | |
f761c340d4390c232d1a9896f3fde5c9dec7858b)
to branch 'net.randombit.botan.tls-session-ticket' (head bf9feb245aa7185e22948a21a3099acac7237b44)
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
Use AES-256 so we don't encrypt session tickets with a weaker algo
than the ciphersuites.
|
| |\ \
| | | |
| | | |
| | | |
| | | |
| | | | |
9a12f28252f9b0a051a85c4647679a715161d06c)
to branch 'net.randombit.botan.tls-session-ticket' (head ebf45d24a44fb4d1e66e59fe8abefe6f8a53cf02)
|
| | |\ \
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
c24b5d6b012131b177d38bddb8b06d73f81f70c4)
to branch 'net.randombit.botan.tls-session-ticket' (head 9977d4c118e1ac26425cef676ebf26cd5b2a470e)
|
| | | | | |
|
| | | | | |
|
| |_|_|/
|/| | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
not only be unique but fast searches on it are likely useful. Not
bothering to put an index on the (hostname,hostport) tuple as it's
only used by clients on initial connection, and even at a 10K rows
that search wouldn't take long at all.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Also when pulling a session via host info, try the most recent session
first (rather than the oldest!).
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
sessions; will defer until session ticket support lands. Also
currently isn't handling session expiry or limiting the number of
stored sessions.
|
| | | | |
|
|/ / / |
|
| |/
|/| |
|
| |
| |
| |
| |
| |
| | |
Hide the handshake reader behind a function.
Add pieces for DTLS hello verify request message
|
| |
| |
| |
| |
| |
| |
| |
| | |
quite differently).
Avoid using a queue for reading certificates.
Hide the version code in the handshake state with a getter and setter.
|
| | |
|
| |
| |
| |
| |
| | |
overridden easily in a new release without changing binaries linked
against an earlier version.
|
| | |
|
| |
| |
| |
| | |
misplaced braces.
|
| |
| |
| |
| | |
RSA/DSA. Add function for choosing thread count.
|
| | |
|
| | |
|
| |
| |
| |
| | |
lot more work before this can be deployed.
|
| | |
|
| |
| |
| |
| |
| |
| | |
Fix Ciphersuite_Preference_Ordering which treated two ciphersuites
with the same algos but different keylengths as equivalent, causing
them to be lost. Always prefer the longer key.
|
|\ \
| | |
| | |
| | |
| | |
| | | |
3f6b267bc00d2da1b5d36ca2215c3e1b6a40e796)
to branch 'net.randombit.botan.tls-state-machine' (head 7df407e6678bd51328c348fd2a665f20fb22d62d)
|
| | |
| | |
| | |
| | | |
existing enum values.
|