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 for i
in range(0, len(s
), MAXBINSIZE
):
38 chunk
= s
[i
: i
+ MAXBINSIZE
]
39 pieces
.append(binascii
.b2a_base64(chunk
))
40 return "".join(pieces
)
43 """Decode a string."""
44 return binascii
.a2b_base64(s
)
47 """Small test program"""
50 opts
, args
= getopt
.getopt(sys
.argv
[1:], 'deut')
51 except getopt
.error
, msg
:
52 sys
.stdout
= sys
.stderr
54 print """usage: %s [-d|-e|-u|-t] [file|-]
57 -t: encode and decode string 'Aladdin:open sesame'"""%sys
.argv
[0]
61 if o
== '-e': func
= encode
62 if o
== '-d': func
= decode
63 if o
== '-u': func
= decode
64 if o
== '-t': test1(); return
65 if args
and args
[0] != '-':
66 func(open(args
[0], 'rb'), sys
.stdout
)
68 func(sys
.stdin
, sys
.stdout
)
71 s0
= "Aladdin:open sesame"
76 if __name__
== '__main__':