gdata.tlslite.integration.IMAP4_TLS
index
/usr/local/google/home/afshar/src/external-gdata-release/google3/src/gdata/tlslite/integration/IMAP4_TLS.py

TLS Lite + imaplib.

 
Modules
       
socket

 
Classes
       
gdata.tlslite.integration.ClientHelper.ClientHelper
IMAP4_TLS(imaplib.IMAP4, gdata.tlslite.integration.ClientHelper.ClientHelper)
imaplib.IMAP4
IMAP4_TLS(imaplib.IMAP4, gdata.tlslite.integration.ClientHelper.ClientHelper)

 
class IMAP4_TLS(imaplib.IMAP4, gdata.tlslite.integration.ClientHelper.ClientHelper)
    This class extends L{imaplib.IMAP4} with TLS support.
 
 
Method resolution order:
IMAP4_TLS
imaplib.IMAP4
gdata.tlslite.integration.ClientHelper.ClientHelper

Methods defined here:
__init__(self, host='', port=993, username=None, password=None, sharedKey=None, certChain=None, privateKey=None, cryptoID=None, protocol=None, x509Fingerprint=None, x509TrustList=None, x509CommonName=None, settings=None)
Create a new IMAP4_TLS.
 
For client authentication, use one of these argument
combinations:
 - username, password (SRP)
 - username, sharedKey (shared-key)
 - certChain, privateKey (certificate)
 
For server authentication, you can either rely on the
implicit mutual authentication performed by SRP or
shared-keys, or you can do certificate-based server
authentication with one of these argument combinations:
 - cryptoID[, protocol] (requires cryptoIDlib)
 - x509Fingerprint
 - x509TrustList[, x509CommonName] (requires cryptlib_py)
 
Certificate-based server authentication is compatible with
SRP or certificate-based client authentication.  It is
not compatible with shared-keys.
 
The caller should be prepared to handle TLS-specific
exceptions.  See the client handshake functions in
L{tlslite.TLSConnection.TLSConnection} for details on which
exceptions might be raised.
 
@type host: str
@param host: Server to connect to.
 
@type port: int
@param port: Port to connect to.
 
@type username: str
@param username: SRP or shared-key username.  Requires the
'password' or 'sharedKey' argument.
 
@type password: str
@param password: SRP password for mutual authentication.
Requires the 'username' argument.
 
@type sharedKey: str
@param sharedKey: Shared key for mutual authentication.
Requires the 'username' argument.
 
@type certChain: L{tlslite.X509CertChain.X509CertChain} or
L{cryptoIDlib.CertChain.CertChain}
@param certChain: Certificate chain for client authentication.
Requires the 'privateKey' argument.  Excludes the SRP or
shared-key related arguments.
 
@type privateKey: L{tlslite.utils.RSAKey.RSAKey}
@param privateKey: Private key for client authentication.
Requires the 'certChain' argument.  Excludes the SRP or
shared-key related arguments.
 
@type cryptoID: str
@param cryptoID: cryptoID for server authentication.  Mutually
exclusive with the 'x509...' arguments.
 
@type protocol: str
@param protocol: cryptoID protocol URI for server
authentication.  Requires the 'cryptoID' argument.
 
@type x509Fingerprint: str
@param x509Fingerprint: Hex-encoded X.509 fingerprint for
server authentication.  Mutually exclusive with the 'cryptoID'
and 'x509TrustList' arguments.
 
@type x509TrustList: list of L{tlslite.X509.X509}
@param x509TrustList: A list of trusted root certificates.  The
other party must present a certificate chain which extends to
one of these root certificates.  The cryptlib_py module must be
installed to use this parameter.  Mutually exclusive with the
'cryptoID' and 'x509Fingerprint' arguments.
 
@type x509CommonName: str
@param x509CommonName: The end-entity certificate's 'CN' field
must match this value.  For a web server, this is typically a
server name such as 'www.amazon.com'.  Mutually exclusive with
the 'cryptoID' and 'x509Fingerprint' arguments.  Requires the
'x509TrustList' argument.
 
@type settings: L{tlslite.HandshakeSettings.HandshakeSettings}
@param settings: Various settings which can be used to control
the ciphersuites, certificate types, and SSL/TLS versions
offered by the client.
open(self, host='', port=993)
Setup connection to remote server on "host:port".
 
This connection will be used by the routines:
read, readline, send, shutdown.

Methods inherited from imaplib.IMAP4:
__getattr__(self, attr)
append(self, mailbox, flags, date_time, message)
Append message to named mailbox.
 
(typ, [data]) = <instance>.append(mailbox, flags, date_time, message)
 
        All args except `message' can be None.
authenticate(self, mechanism, authobject)
Authenticate command - requires response processing.
 
'mechanism' specifies which authentication mechanism is to
be used - it must appear in <instance>.capabilities in the
form AUTH=<mechanism>.
 
'authobject' must be a callable object:
 
        data = authobject(response)
 
It will be called to process server continuation responses.
It should return data that will be encoded and sent to server.
It should return None if the client abort response '*' should
be sent instead.
capability(self)
(typ, [data]) = <instance>.capability()
Fetch capabilities list from server.
check(self)
Checkpoint mailbox on server.
 
(typ, [data]) = <instance>.check()
close(self)
Close currently selected mailbox.
 
Deleted messages are removed from writable mailbox.
This is the recommended command before 'LOGOUT'.
 
(typ, [data]) = <instance>.close()
copy(self, message_set, new_mailbox)
Copy 'message_set' messages onto end of 'new_mailbox'.
 
(typ, [data]) = <instance>.copy(message_set, new_mailbox)
create(self, mailbox)
Create new mailbox.
 
(typ, [data]) = <instance>.create(mailbox)
delete(self, mailbox)
Delete old mailbox.
 
(typ, [data]) = <instance>.delete(mailbox)
deleteacl(self, mailbox, who)
Delete the ACLs (remove any rights) set for who on mailbox.
 
(typ, [data]) = <instance>.deleteacl(mailbox, who)
expunge(self)
Permanently remove deleted items from selected mailbox.
 
Generates 'EXPUNGE' response for each deleted message.
 
(typ, [data]) = <instance>.expunge()
 
'data' is list of 'EXPUNGE'd message numbers in order received.
fetch(self, message_set, message_parts)
Fetch (parts of) messages.
 
(typ, [data, ...]) = <instance>.fetch(message_set, message_parts)
 
'message_parts' should be a string of selected parts
enclosed in parentheses, eg: "(UID BODY[TEXT])".
 
'data' are tuples of message part envelope and data.
getacl(self, mailbox)
Get the ACLs for a mailbox.
 
(typ, [data]) = <instance>.getacl(mailbox)
getannotation(self, mailbox, entry, attribute)
(typ, [data]) = <instance>.getannotation(mailbox, entry, attribute)
Retrieve ANNOTATIONs.
getquota(self, root)
Get the quota root's resource usage and limits.
 
Part of the IMAP4 QUOTA extension defined in rfc2087.
 
(typ, [data]) = <instance>.getquota(root)
getquotaroot(self, mailbox)
Get the list of quota roots for the named mailbox.
 
(typ, [[QUOTAROOT responses...], [QUOTA responses]]) = <instance>.getquotaroot(mailbox)
list(self, directory='""', pattern='*')
List mailbox names in directory matching pattern.
 
(typ, [data]) = <instance>.list(directory='""', pattern='*')
 
'data' is list of LIST responses.
login(self, user, password)
Identify client using plaintext password.
 
(typ, [data]) = <instance>.login(user, password)
 
NB: 'password' will be quoted.
login_cram_md5(self, user, password)
Force use of CRAM-MD5 authentication.
 
(typ, [data]) = <instance>.login_cram_md5(user, password)
logout(self)
Shutdown connection to server.
 
(typ, [data]) = <instance>.logout()
 
Returns server 'BYE' response.
lsub(self, directory='""', pattern='*')
List 'subscribed' mailbox names in directory matching pattern.
 
(typ, [data, ...]) = <instance>.lsub(directory='""', pattern='*')
 
'data' are tuples of message part envelope and data.
myrights(self, mailbox)
Show my ACLs for a mailbox (i.e. the rights that I have on mailbox).
 
(typ, [data]) = <instance>.myrights(mailbox)
namespace(self)
Returns IMAP namespaces ala rfc2342
 
(typ, [data, ...]) = <instance>.namespace()
noop(self)
Send NOOP command.
 
(typ, [data]) = <instance>.noop()
partial(self, message_num, message_part, start, length)
Fetch truncated part of a message.
 
(typ, [data, ...]) = <instance>.partial(message_num, message_part, start, length)
 
'data' is tuple of message part envelope and data.
print_log(self)
proxyauth(self, user)
Assume authentication as "user".
 
Allows an authorised administrator to proxy into any user's
mailbox.
 
(typ, [data]) = <instance>.proxyauth(user)
read(self, size)
Read 'size' bytes from remote.
readline(self)
Read line from remote.
recent(self)
Return most recent 'RECENT' responses if any exist,
else prompt server for an update using the 'NOOP' command.
 
(typ, [data]) = <instance>.recent()
 
'data' is None if no new messages,
else list of RECENT responses, most recent last.
rename(self, oldmailbox, newmailbox)
Rename old mailbox name to new.
 
(typ, [data]) = <instance>.rename(oldmailbox, newmailbox)
response(self, code)
Return data for response 'code' if received, or None.
 
Old value for response 'code' is cleared.
 
(code, [data]) = <instance>.response(code)
search(self, charset, *criteria)
Search mailbox for matching messages.
 
(typ, [data]) = <instance>.search(charset, criterion, ...)
 
'data' is space separated list of matching message numbers.
select(self, mailbox='INBOX', readonly=False)
Select a mailbox.
 
Flush all untagged responses.
 
(typ, [data]) = <instance>.select(mailbox='INBOX', readonly=False)
 
'data' is count of messages in mailbox ('EXISTS' response).
 
Mandated responses are ('FLAGS', 'EXISTS', 'RECENT', 'UIDVALIDITY'), so
other responses should be obtained via <instance>.response('FLAGS') etc.
send(self, data)
Send data to remote.
setacl(self, mailbox, who, what)
Set a mailbox acl.
 
(typ, [data]) = <instance>.setacl(mailbox, who, what)
setannotation(self, *args)
(typ, [data]) = <instance>.setannotation(mailbox[, entry, attribute]+)
Set ANNOTATIONs.
setquota(self, root, limits)
Set the quota root's resource limits.
 
(typ, [data]) = <instance>.setquota(root, limits)
shutdown(self)
Close I/O established in "open".
socket(self)
Return socket instance used to connect to IMAP4 server.
 
socket = <instance>.socket()
sort(self, sort_criteria, charset, *search_criteria)
IMAP4rev1 extension SORT command.
 
(typ, [data]) = <instance>.sort(sort_criteria, charset, search_criteria, ...)
status(self, mailbox, names)
Request named status conditions for mailbox.
 
(typ, [data]) = <instance>.status(mailbox, names)
store(self, message_set, command, flags)
Alters flag dispositions for messages in mailbox.
 
(typ, [data]) = <instance>.store(message_set, command, flags)
subscribe(self, mailbox)
Subscribe to new mailbox.
 
(typ, [data]) = <instance>.subscribe(mailbox)
thread(self, threading_algorithm, charset, *search_criteria)
IMAPrev1 extension THREAD command.
 
(type, [data]) = <instance>.thread(threading_algorithm, charset, search_criteria, ...)
uid(self, command, *args)
Execute "command arg ..." with messages identified by UID,
        rather than message number.
 
(typ, [data]) = <instance>.uid(command, arg1, arg2, ...)
 
Returns response appropriate to 'command'.
unsubscribe(self, mailbox)
Unsubscribe from old mailbox.
 
(typ, [data]) = <instance>.unsubscribe(mailbox)
xatom(self, name, *args)
Allow simple extension commands
        notified by server in CAPABILITY response.
 
Assumes command is legal in current state.
 
(typ, [data]) = <instance>.xatom(name, arg, ...)
 
Returns response appropriate to extension command `name'.

Data and other attributes inherited from imaplib.IMAP4:
abort = <class 'imaplib.abort'>
error = <class 'imaplib.error'>
mustquote = <_sre.SRE_Pattern object>
readonly = <class 'imaplib.readonly'>

 
Data
        IMAP4_TLS_PORT = 993