Current File : //lib/python2.7/site-packages/keyczar/keydata.pyc
�
N�Pc@s~dZyddlZWnek
r5ddlZnXddlZddlZdefd��YZdefd��YZdS(s�
Encodes the two classes storing data about keys:
  - KeyMetadata: stores metadata
  - KeyVersion: stores key strings and types

@author: arkajit.dey@gmail.com (Arkajit Dey)
i����NtKeyMetadatacBs\eZdZed�Zed��Zd�Zd�Zd�Z	d�Z
ed��ZRS(sGEncodes metadata for a keyset with a name, purpose, type, and versions.cCs1||_||_||_||_i|_dS(N(tnametpurposettypet	encryptedt_KeyMetadata__versions(tselfRRtkey_typeR((s3/usr/lib/python2.7/site-packages/keyczar/keydata.pyt__init__"s
				cCs
|jj�S(N(Rtvalues(R((s3/usr/lib/python2.7/site-packages/keyczar/keydata.pyt<lambda>)scCsmtji|jd6t|j�d6t|j�d6|jd6g|jD]}tjt|��^qGd6�S(NRRRRtversions(	tjsontdumpsRtstrRRRRtloads(Rtv((s3/usr/lib/python2.7/site-packages/keyczar/keydata.pyt__str__+s

cCs-|j}||jkr)||j|<tStS(s
    Adds given version and returns True if successful.

    @param version: version to add
    @type version: L{KeyVersion}

    @return: True if version was successfully added (i.e. no previous version
      had the same version number), False otherwise.
    @rtype: boolean
    (tversion_numberRtTruetFalse(Rtversiontnum((s3/usr/lib/python2.7/site-packages/keyczar/keydata.pyt
AddVersion2s
	
cCs?y|jj|�Wn$tk
r:tjd|��nXdS(s0
    Removes version with given version number and returns it if it exists.

    @param version_number: version number to remove
    @type version_number: integer

    @return: the removed version if it exists
    @rtype: L{KeyVersion}

    @raise KeyczarError: if the version number is non-existent
    sNo such version number: %dN(RtpoptKeyErrorterrorstKeyczarError(RR((s3/usr/lib/python2.7/site-packages/keyczar/keydata.pyt
RemoveVersionCs
cCs:y|j|SWn$tk
r5tjd|��nXdS(s?
    Return the version corresponding to the given version number.

    @param version_number: integer version number of desired version
    @type version_number: integer

    @return: the corresponding version if it exists
    @rtype: L{KeyVersion}

    @raise KeyczarError: if the version number is non-existent.
    sNo such version number: %dN(RRRR(RR((s3/usr/lib/python2.7/site-packages/keyczar/keydata.pyt
GetVersionTs
cCsutj|�}t|dtj|d�tj|d�|d�}x(|dD]}|jtj|��qQW|S(s
    Return KeyMetadata object constructed from JSON string representation.

    @param json_string: a JSON representation of a KeyMetadata object
    @type json_string: string

    @return: the constructed KeyMetadata object
    @rtype: L{KeyMetadata}
    RRRRR(	RRRtkeyinfot
GetPurposetGetTypeRt
KeyVersiontRead(tjson_stringtmetatkmdR((s3/usr/lib/python2.7/site-packages/keyczar/keydata.pyR"es(
t__name__t
__module__t__doc__RRtpropertyRRRRRtstaticmethodR"(((s3/usr/lib/python2.7/site-packages/keyczar/keydata.pyRs				R!cBsDeZd�Zd�Zed�e�Zd�Zed��ZRS(cCs||_||_||_dS(N(Rt_KeyVersion__statust
exportable(RRtstexport((s3/usr/lib/python2.7/site-packages/keyczar/keydata.pyRxs		cCs|r||_ndS(N(R+(Rt
new_status((s3/usr/lib/python2.7/site-packages/keyczar/keydata.pyt__SetStatus}scCs|jS(N(R+(R((s3/usr/lib/python2.7/site-packages/keyczar/keydata.pyR
�scCs1tji|jd6t|j�d6|jd6�S(Nt
versionNumbertstatusR,(RR
RRR2R,(R((s3/usr/lib/python2.7/site-packages/keyczar/keydata.pyR�scCs%t|dtj|d�|d�S(s
    Return KeyVersion object constructed from dictionary derived from JSON.

    @param version: a dictionary obtained from a JSON string representation
    @type version: dictionary

    @return: constructed KeyVersion object
    @rtype: L{KeyVersion}
    R1R2R,(R!Rt	GetStatus(R((s3/usr/lib/python2.7/site-packages/keyczar/keydata.pyR"�s
(	R&R'Rt_KeyVersion__SetStatusR)R2RR*R"(((s3/usr/lib/python2.7/site-packages/keyczar/keydata.pyR!ws
			(	R(t
simplejsonRtImportErrorRRtobjectRR!(((s3/usr/lib/python2.7/site-packages/keyczar/keydata.pyt<module>s
X