tlslite-ng provides specialized classes that extend standard Python libraries to support SSL/TLS:
HTTP (via HTTPTLSConnection)
Extends httplib. Supports various authentication modes:
- No authentication:
h = HTTPTLSConnection("host", port) - TACK authentication:
h = HTTPTLSConnection("host", port, tackID="ID", hardTack=False) - SRP mutual authentication:
h = HTTPTLSConnection("host", port, username="user", password="pass")
POP3 and IMAP (via POP3_TLS and IMAP4_TLS)
Extends poplib and imaplib respectively. They accept the same parameters as HTTPTLSConnection.
# Example: Connect to POP3 and show fingerprint
from tlslite.api import *
p = POP3_TLS("---------.net", port=995)
print p.sock.session.serverCertChain.getFingerprint()
# Example: Connect to IMAP using a known fingerprint
i = IMAP4_TLS("cyrus.andrew.cmu.edu", x509Fingerprint="00c14371227b3b677ddb9c4901e6f2aee18d3e45")
SMTP (via SMTP_TLS)
Extends smtplib. Authentication depends on how starttls() is called.
# Example: Connect to SMTP using a known fingerprint
from tlslite.api import *
s = SMTP_TLS("----------.net", port=587)
s.ehlo()
s.starttls(x509Fingerprint="7e39be84a2e3a7ad071752e3001d931bf82c32dc")
# To connect to a POP3 server over SSL and display its fingerprint:
from tlslite.api import *
p = POP3_TLS("---------.net", port=995)
print p.sock.session.serverCertChain.getFingerprint()
[...]
# To connect to an IMAP server once you know its fingerprint:
from tlslite.api import *
i = IMAP4_TLS("cyrus.andrew.cmu.edu",
x509Fingerprint="00c14371227b3b677ddb9c4901e6f2aee18d3e45")
# To connect to an SMTP server once you know its fingerprint:
from tlslite.api import *
s = SMTP_TLS("----------.net", port=587)
s.ehlo()
s.starttls(x509Fingerprint="7e39be84a2e3a7ad071752e3001d931bf82c32dc")