3 """Conversions to/from base64 transport encoding as per RFC-1521."""
5 # Modified 04-Oct-95 by Jack to use binascii module
9 __all__
= ["encode","decode","encodestring","decodestring"]
11 MAXLINESIZE
= 76 # Excluding the CRLF
12 MAXBINSIZE
= (MAXLINESIZE
/4)*3
14 def encode(input, output
):
17 s
= input.read(MAXBINSIZE
)
19 while len(s
) < MAXBINSIZE
:
20 ns
= input.read(MAXBINSIZE
-len(s
))
23 line
= binascii
.b2a_base64(s
)
26 def decode(input, output
):
29 line
= input.readline()
31 s
= binascii
.a2b_base64(line
)
35 """Encode a string."""
37 f
= StringIO
.StringIO(s
)
38 g
= StringIO
.StringIO()
43 """Decode a string."""
45 f
= StringIO
.StringIO(s
)
46 g
= StringIO
.StringIO()
51 """Small test program"""
54 opts
, args
= getopt
.getopt(sys
.argv
[1:], 'deut')
55 except getopt
.error
, msg
:
56 sys
.stdout
= sys
.stderr
58 print """usage: %s [-d|-e|-u|-t] [file|-]
61 -t: encode and decode string 'Aladdin:open sesame'"""%sys
.argv
[0]
65 if o
== '-e': func
= encode
66 if o
== '-d': func
= decode
67 if o
== '-u': func
= decode
68 if o
== '-t': test1(); return
69 if args
and args
[0] != '-':
70 func(open(args
[0], 'rb'), sys
.stdout
)
72 func(sys
.stdin
, sys
.stdout
)
75 s0
= "Aladdin:open sesame"
80 if __name__
== '__main__':