blob: 99d390f10eb7646b32e8d936309addec7f1f00c0 [file] [log] [blame]
Joe Gregorio2401bd62011-12-15 09:18:49 -05001
2<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
3<html><head><title>Python: module oauth2client.crypt</title>
4</head><body bgcolor="#f0f0f8">
5
6<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
7<tr bgcolor="#7799ee">
8<td valign=bottom>&nbsp;<br>
9<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="oauth2client.html"><font color="#ffffff">oauth2client</font></a>.crypt</strong></big></big></font></td
10><td align=right valign=bottom
Joe Gregorio3d55ac52012-02-21 10:11:19 -050011><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/jcgregorio/projects/apiclient-release/oauth2client/crypt.py">/usr/local/google/home/jcgregorio/projects/apiclient-release/oauth2client/crypt.py</a></font></td></tr></table>
Joe Gregorio2401bd62011-12-15 09:18:49 -050012 <p><tt>#&nbsp;-*-&nbsp;coding:&nbsp;utf-8&nbsp;-*-<br>
13#<br>
14#&nbsp;Copyright&nbsp;(C)&nbsp;2011&nbsp;Google&nbsp;Inc.<br>
15#<br>
16#&nbsp;Licensed&nbsp;under&nbsp;the&nbsp;Apache&nbsp;License,&nbsp;Version&nbsp;2.0&nbsp;(the&nbsp;"License");<br>
17#&nbsp;you&nbsp;may&nbsp;not&nbsp;use&nbsp;this&nbsp;file&nbsp;except&nbsp;in&nbsp;compliance&nbsp;with&nbsp;the&nbsp;License.<br>
18#&nbsp;You&nbsp;may&nbsp;obtain&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;License&nbsp;at<br>
19#<br>
20#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a><br>
21#<br>
22#&nbsp;Unless&nbsp;required&nbsp;by&nbsp;applicable&nbsp;law&nbsp;or&nbsp;agreed&nbsp;to&nbsp;in&nbsp;writing,&nbsp;software<br>
23#&nbsp;distributed&nbsp;under&nbsp;the&nbsp;License&nbsp;is&nbsp;distributed&nbsp;on&nbsp;an&nbsp;"AS&nbsp;IS"&nbsp;BASIS,<br>
24#&nbsp;WITHOUT&nbsp;WARRANTIES&nbsp;OR&nbsp;CONDITIONS&nbsp;OF&nbsp;ANY&nbsp;KIND,&nbsp;either&nbsp;express&nbsp;or&nbsp;implied.<br>
25#&nbsp;See&nbsp;the&nbsp;License&nbsp;for&nbsp;the&nbsp;specific&nbsp;language&nbsp;governing&nbsp;permissions&nbsp;and<br>
26#&nbsp;limitations&nbsp;under&nbsp;the&nbsp;License.</tt></p>
27<p>
28<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
29<tr bgcolor="#aa55cc">
30<td colspan=3 valign=bottom>&nbsp;<br>
31<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
32
33<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
34<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="base64.html">base64</a><br>
35<a href="OpenSSL.crypto.html">OpenSSL.crypto</a><br>
36</td><td width="25%" valign=top><a href="hashlib.html">hashlib</a><br>
37<a href="logging.html">logging</a><br>
Joe Gregorio3d55ac52012-02-21 10:11:19 -050038</td><td width="25%" valign=top><a href="json.html">json</a><br>
Joe Gregorio2401bd62011-12-15 09:18:49 -050039<a href="time.html">time</a><br>
40</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
41<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
42<tr bgcolor="#ee77aa">
43<td colspan=3 valign=bottom>&nbsp;<br>
44<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
45
46<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
47<td width="100%"><dl>
48<dt><font face="helvetica, arial"><a href="__builtin__.html#object">__builtin__.object</a>
49</font></dt><dd>
50<dl>
51<dt><font face="helvetica, arial"><a href="oauth2client.crypt.html#Signer">Signer</a>
52</font></dt><dt><font face="helvetica, arial"><a href="oauth2client.crypt.html#Verifier">Verifier</a>
53</font></dt></dl>
54</dd>
55<dt><font face="helvetica, arial"><a href="exceptions.html#Exception">exceptions.Exception</a>(<a href="exceptions.html#BaseException">exceptions.BaseException</a>)
56</font></dt><dd>
57<dl>
58<dt><font face="helvetica, arial"><a href="oauth2client.crypt.html#AppIdentityError">AppIdentityError</a>
59</font></dt></dl>
60</dd>
61</dl>
62 <p>
63<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
64<tr bgcolor="#ffc8d8">
65<td colspan=3 valign=bottom>&nbsp;<br>
66<font color="#000000" face="helvetica, arial"><a name="AppIdentityError">class <strong>AppIdentityError</strong></a>(<a href="exceptions.html#Exception">exceptions.Exception</a>)</font></td></tr>
67
68<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
69<td width="100%"><dl><dt>Method resolution order:</dt>
70<dd><a href="oauth2client.crypt.html#AppIdentityError">AppIdentityError</a></dd>
71<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
72<dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd>
73<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
74</dl>
75<hr>
76Data descriptors defined here:<br>
77<dl><dt><strong>__weakref__</strong></dt>
78<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
79</dl>
80<hr>
81Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
82<dl><dt><a name="AppIdentityError-__init__"><strong>__init__</strong></a>(...)</dt><dd><tt>x.<a href="#AppIdentityError-__init__">__init__</a>(...)&nbsp;initializes&nbsp;x;&nbsp;see&nbsp;x.__class__.__doc__&nbsp;for&nbsp;signature</tt></dd></dl>
83
84<hr>
85Data and other attributes inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
86<dl><dt><strong>__new__</strong> = &lt;built-in method __new__ of type object&gt;<dd><tt>T.<a href="#AppIdentityError-__new__">__new__</a>(S,&nbsp;...)&nbsp;-&gt;&nbsp;a&nbsp;new&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;with&nbsp;type&nbsp;S,&nbsp;a&nbsp;subtype&nbsp;of&nbsp;T</tt></dl>
87
88<hr>
89Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
90<dl><dt><a name="AppIdentityError-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#AppIdentityError-__delattr__">__delattr__</a>('name')&nbsp;&lt;==&gt;&nbsp;del&nbsp;x.name</tt></dd></dl>
91
92<dl><dt><a name="AppIdentityError-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#AppIdentityError-__getattribute__">__getattribute__</a>('name')&nbsp;&lt;==&gt;&nbsp;x.name</tt></dd></dl>
93
94<dl><dt><a name="AppIdentityError-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#AppIdentityError-__getitem__">__getitem__</a>(y)&nbsp;&lt;==&gt;&nbsp;x[y]</tt></dd></dl>
95
96<dl><dt><a name="AppIdentityError-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#AppIdentityError-__getslice__">__getslice__</a>(i,&nbsp;j)&nbsp;&lt;==&gt;&nbsp;x[i:j]<br>
97&nbsp;<br>
98Use&nbsp;of&nbsp;negative&nbsp;indices&nbsp;is&nbsp;not&nbsp;supported.</tt></dd></dl>
99
100<dl><dt><a name="AppIdentityError-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl>
101
102<dl><dt><a name="AppIdentityError-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#AppIdentityError-__repr__">__repr__</a>()&nbsp;&lt;==&gt;&nbsp;repr(x)</tt></dd></dl>
103
104<dl><dt><a name="AppIdentityError-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#AppIdentityError-__setattr__">__setattr__</a>('name',&nbsp;value)&nbsp;&lt;==&gt;&nbsp;x.name&nbsp;=&nbsp;value</tt></dd></dl>
105
106<dl><dt><a name="AppIdentityError-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl>
107
108<dl><dt><a name="AppIdentityError-__str__"><strong>__str__</strong></a>(...)</dt><dd><tt>x.<a href="#AppIdentityError-__str__">__str__</a>()&nbsp;&lt;==&gt;&nbsp;str(x)</tt></dd></dl>
109
110<dl><dt><a name="AppIdentityError-__unicode__"><strong>__unicode__</strong></a>(...)</dt></dl>
111
112<hr>
113Data descriptors inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
114<dl><dt><strong>__dict__</strong></dt>
115</dl>
116<dl><dt><strong>args</strong></dt>
117</dl>
118<dl><dt><strong>message</strong></dt>
119</dl>
120</td></tr></table> <p>
121<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
122<tr bgcolor="#ffc8d8">
123<td colspan=3 valign=bottom>&nbsp;<br>
124<font color="#000000" face="helvetica, arial"><a name="Signer">class <strong>Signer</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
125
126<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
127<td colspan=2><tt>Signs&nbsp;messages&nbsp;with&nbsp;a&nbsp;private&nbsp;key.<br>&nbsp;</tt></td></tr>
128<tr><td>&nbsp;</td>
129<td width="100%">Methods defined here:<br>
130<dl><dt><a name="Signer-__init__"><strong>__init__</strong></a>(self, pkey)</dt><dd><tt>Constructor.<br>
131&nbsp;<br>
132Args:<br>
133&nbsp;&nbsp;pkey,&nbsp;OpenSSL.crypto.PKey,&nbsp;The&nbsp;private&nbsp;key&nbsp;to&nbsp;sign&nbsp;with.</tt></dd></dl>
134
135<dl><dt><a name="Signer-sign"><strong>sign</strong></a>(self, message)</dt><dd><tt>Signs&nbsp;a&nbsp;message.<br>
136&nbsp;<br>
137Args:<br>
138&nbsp;&nbsp;message:&nbsp;string,&nbsp;Message&nbsp;to&nbsp;be&nbsp;signed.<br>
139&nbsp;<br>
140Returns:<br>
141&nbsp;&nbsp;string,&nbsp;The&nbsp;signature&nbsp;of&nbsp;the&nbsp;message&nbsp;for&nbsp;the&nbsp;given&nbsp;key.</tt></dd></dl>
142
143<hr>
144Static methods defined here:<br>
145<dl><dt><a name="Signer-from_string"><strong>from_string</strong></a>(key, password<font color="#909090">='notasecret'</font>)</dt><dd><tt>Construct&nbsp;a&nbsp;<a href="#Signer">Signer</a>&nbsp;instance&nbsp;from&nbsp;a&nbsp;string.<br>
146&nbsp;<br>
147Args:<br>
148&nbsp;&nbsp;key:&nbsp;string,&nbsp;private&nbsp;key&nbsp;in&nbsp;P12&nbsp;format.<br>
149&nbsp;&nbsp;password:&nbsp;string,&nbsp;password&nbsp;for&nbsp;the&nbsp;private&nbsp;key&nbsp;file.<br>
150&nbsp;<br>
151Returns:<br>
152&nbsp;&nbsp;<a href="#Signer">Signer</a>&nbsp;instance.<br>
153&nbsp;<br>
154Raises:<br>
155&nbsp;&nbsp;OpenSSL.crypto.Error&nbsp;if&nbsp;the&nbsp;key&nbsp;can't&nbsp;be&nbsp;parsed.</tt></dd></dl>
156
157<hr>
158Data descriptors defined here:<br>
159<dl><dt><strong>__dict__</strong></dt>
160<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
161</dl>
162<dl><dt><strong>__weakref__</strong></dt>
163<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
164</dl>
165</td></tr></table> <p>
166<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
167<tr bgcolor="#ffc8d8">
168<td colspan=3 valign=bottom>&nbsp;<br>
169<font color="#000000" face="helvetica, arial"><a name="Verifier">class <strong>Verifier</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
170
171<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
172<td colspan=2><tt>Verifies&nbsp;the&nbsp;signature&nbsp;on&nbsp;a&nbsp;message.<br>&nbsp;</tt></td></tr>
173<tr><td>&nbsp;</td>
174<td width="100%">Methods defined here:<br>
175<dl><dt><a name="Verifier-__init__"><strong>__init__</strong></a>(self, pubkey)</dt><dd><tt>Constructor.<br>
176&nbsp;<br>
177Args:<br>
178&nbsp;&nbsp;pubkey,&nbsp;OpenSSL.crypto.PKey,&nbsp;The&nbsp;public&nbsp;key&nbsp;to&nbsp;verify&nbsp;with.</tt></dd></dl>
179
180<dl><dt><a name="Verifier-verify"><strong>verify</strong></a>(self, message, signature)</dt><dd><tt>Verifies&nbsp;a&nbsp;message&nbsp;against&nbsp;a&nbsp;signature.<br>
181&nbsp;<br>
182Args:<br>
183&nbsp;&nbsp;message:&nbsp;string,&nbsp;The&nbsp;message&nbsp;to&nbsp;verify.<br>
184&nbsp;&nbsp;signature:&nbsp;string,&nbsp;The&nbsp;signature&nbsp;on&nbsp;the&nbsp;message.<br>
185&nbsp;<br>
186Returns:<br>
187&nbsp;&nbsp;True&nbsp;if&nbsp;message&nbsp;was&nbsp;singed&nbsp;by&nbsp;the&nbsp;private&nbsp;key&nbsp;associated&nbsp;with&nbsp;the&nbsp;public<br>
188&nbsp;&nbsp;key&nbsp;that&nbsp;this&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;was&nbsp;constructed&nbsp;with.</tt></dd></dl>
189
190<hr>
191Static methods defined here:<br>
192<dl><dt><a name="Verifier-from_string"><strong>from_string</strong></a>(key_pem, is_x509_cert)</dt><dd><tt>Construct&nbsp;a&nbsp;Verified&nbsp;instance&nbsp;from&nbsp;a&nbsp;string.<br>
193&nbsp;<br>
194Args:<br>
195&nbsp;&nbsp;key_pem:&nbsp;string,&nbsp;public&nbsp;key&nbsp;in&nbsp;PEM&nbsp;format.<br>
196&nbsp;&nbsp;is_x509_cert:&nbsp;bool,&nbsp;True&nbsp;if&nbsp;key_pem&nbsp;is&nbsp;an&nbsp;X509&nbsp;cert,&nbsp;otherwise&nbsp;it&nbsp;is<br>
197&nbsp;&nbsp;&nbsp;&nbsp;expected&nbsp;to&nbsp;be&nbsp;an&nbsp;RSA&nbsp;key&nbsp;in&nbsp;PEM&nbsp;format.<br>
198&nbsp;<br>
199Returns:<br>
200&nbsp;&nbsp;<a href="#Verifier">Verifier</a>&nbsp;instance.<br>
201&nbsp;<br>
202Raises:<br>
203&nbsp;&nbsp;OpenSSL.crypto.Error&nbsp;if&nbsp;the&nbsp;key_pem&nbsp;can't&nbsp;be&nbsp;parsed.</tt></dd></dl>
204
205<hr>
206Data descriptors defined here:<br>
207<dl><dt><strong>__dict__</strong></dt>
208<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
209</dl>
210<dl><dt><strong>__weakref__</strong></dt>
211<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
212</dl>
213</td></tr></table></td></tr></table><p>
214<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
215<tr bgcolor="#eeaa77">
216<td colspan=3 valign=bottom>&nbsp;<br>
217<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
218
219<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
220<td width="100%"><dl><dt><a name="-make_signed_jwt"><strong>make_signed_jwt</strong></a>(signer, payload)</dt><dd><tt>Make&nbsp;a&nbsp;signed&nbsp;JWT.<br>
221&nbsp;<br>
222See&nbsp;<a href="http://self-issued.info/docs/draft-jones-json-web-token.html">http://self-issued.info/docs/draft-jones-json-web-token.html</a>.<br>
223&nbsp;<br>
224Args:<br>
225&nbsp;&nbsp;signer:&nbsp;crypt.<a href="#Signer">Signer</a>,&nbsp;Cryptographic&nbsp;signer.<br>
226&nbsp;&nbsp;payload:&nbsp;dict,&nbsp;Dictionary&nbsp;of&nbsp;data&nbsp;to&nbsp;convert&nbsp;to&nbsp;JSON&nbsp;and&nbsp;then&nbsp;sign.<br>
227&nbsp;<br>
228Returns:<br>
229&nbsp;&nbsp;string,&nbsp;The&nbsp;JWT&nbsp;for&nbsp;the&nbsp;payload.</tt></dd></dl>
230 <dl><dt><a name="-verify_signed_jwt_with_certs"><strong>verify_signed_jwt_with_certs</strong></a>(jwt, certs, audience)</dt><dd><tt>Verify&nbsp;a&nbsp;JWT&nbsp;against&nbsp;public&nbsp;certs.<br>
231&nbsp;<br>
232See&nbsp;<a href="http://self-issued.info/docs/draft-jones-json-web-token.html">http://self-issued.info/docs/draft-jones-json-web-token.html</a>.<br>
233&nbsp;<br>
234Args:<br>
235&nbsp;&nbsp;jwt:&nbsp;string,&nbsp;A&nbsp;JWT.<br>
236&nbsp;&nbsp;certs:&nbsp;dict,&nbsp;Dictionary&nbsp;where&nbsp;values&nbsp;of&nbsp;public&nbsp;keys&nbsp;in&nbsp;PEM&nbsp;format.<br>
237&nbsp;&nbsp;audience:&nbsp;string,&nbsp;The&nbsp;audience,&nbsp;'aud',&nbsp;that&nbsp;this&nbsp;JWT&nbsp;should&nbsp;contain.&nbsp;If<br>
238&nbsp;&nbsp;&nbsp;&nbsp;None&nbsp;then&nbsp;the&nbsp;JWT's&nbsp;'aud'&nbsp;parameter&nbsp;is&nbsp;not&nbsp;verified.<br>
239&nbsp;<br>
240Returns:<br>
241&nbsp;&nbsp;dict,&nbsp;The&nbsp;deserialized&nbsp;JSON&nbsp;payload&nbsp;in&nbsp;the&nbsp;JWT.<br>
242&nbsp;<br>
243Raises:<br>
244&nbsp;&nbsp;<a href="#AppIdentityError">AppIdentityError</a>&nbsp;if&nbsp;any&nbsp;checks&nbsp;are&nbsp;failed.</tt></dd></dl>
245</td></tr></table><p>
246<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
247<tr bgcolor="#55aa55">
248<td colspan=3 valign=bottom>&nbsp;<br>
249<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
250
251<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
252<td width="100%"><strong>AUTH_TOKEN_LIFETIME_SECS</strong> = 300<br>
253<strong>CLOCK_SKEW_SECS</strong> = 300<br>
254<strong>MAX_TOKEN_LIFETIME_SECS</strong> = 86400</td></tr></table>
255</body></html>