11#!/usr/bin/env python
22
3+ import json
34import os
45import os .path
5- import json
66from typing import Any , Dict , Optional , Union
7+
8+ from .exceptions import InvalidSeed , InvalidSerial , ParseException
9+ from .token import SERIAL_LENGTH , AbstractTokenFile , Token
710from .utils import Bytes , fromisoformat
8- from .token import SERIAL_LENGTH , Token , AbstractTokenFile
9- from .exceptions import ParseException , InvalidSeed , InvalidSerial
1011
1112__all__ = [
12- ' JSONTokenFile' ,
13+ " JSONTokenFile" ,
1314]
1415
1516
@@ -52,7 +53,7 @@ def __init__(
5253 self .token = token
5354 elif data is not None :
5455 if isinstance (data , str ):
55- data = bytes (data , ' ascii' )
56+ data = bytes (data , " ascii" )
5657 self .filename = None
5758 self .token = self .json_decode_token (data )
5859 elif filename is not None :
@@ -67,7 +68,7 @@ def parse_file(cls, filename: str) -> bytes:
6768
6869 :param filename: JSON file path
6970 """
70- with open (filename , 'rb' ) as f :
71+ with open (filename , "rb" ) as f :
7172 return f .read ()
7273
7374 @classmethod
@@ -78,16 +79,14 @@ def json_decode_token(cls, data: Union[Bytes, Dict[str, Any]]) -> Token:
7879 else :
7980 dct = json .loads (data )
8081 token = Token (
81- digits = dct ['digits' ],
82- interval = dct ['period' ],
83- exp_date = fromisoformat (dct ['exp_date' ])
84- if dct .get ('exp_date' )
85- else None ,
86- seed = bytes (dct ['secret' ]),
87- serial = dct ['serial' ],
88- issuer = dct .get ('issuerInt' ),
89- label = dct .get ('label' ),
90- pin = dct .get ('pin' ),
82+ digits = dct ["digits" ],
83+ interval = dct ["period" ],
84+ exp_date = fromisoformat (dct ["exp_date" ]) if dct .get ("exp_date" ) else None ,
85+ seed = bytes (dct ["secret" ]),
86+ serial = dct ["serial" ],
87+ issuer = dct .get ("issuerInt" ),
88+ label = dct .get ("label" ),
89+ pin = dct .get ("pin" ),
9190 )
9291 return token
9392 except json .decoder .JSONDecodeError as ex :
@@ -106,24 +105,24 @@ def export_token(self) -> bytes:
106105 Export token as JSON
107106 """
108107 if not self .token .seed :
109- raise InvalidSeed (' Missing seed' )
108+ raise InvalidSeed (" Missing seed" )
110109 if not self .token .serial :
111- raise InvalidSerial (' Missing serial' )
110+ raise InvalidSerial (" Missing serial" )
112111 if len (self .token .serial ) != SERIAL_LENGTH :
113- raise InvalidSerial (' Serial length != {}' .format (SERIAL_LENGTH ))
112+ raise InvalidSerial (" Serial length != {}" .format (SERIAL_LENGTH ))
114113 data = {
115- ' digits' : self .token .digits ,
116- ' period' : self .token .interval ,
117- ' exp_date' : self .token .exp_date .isoformat () if self .token .exp_date else '' ,
118- ' secret' : [x for x in self .token .seed ],
119- ' serial' : self .token .serial ,
120- ' type' : ' SecurID' ,
114+ " digits" : self .token .digits ,
115+ " period" : self .token .interval ,
116+ " exp_date" : self .token .exp_date .isoformat () if self .token .exp_date else "" ,
117+ " secret" : [x for x in self .token .seed ],
118+ " serial" : self .token .serial ,
119+ " type" : " SecurID" ,
121120 }
122121 if self .token .issuer is not None :
123- data [' issuerInt' ] = self .token .issuer
122+ data [" issuerInt" ] = self .token .issuer
124123 if self .token .label is not None :
125- data [' label' ] = self .token .label
124+ data [" label" ] = self .token .label
126125 if self .token .pin is not None :
127- data [' pin' ] = self .token .pin
126+ data [" pin" ] = self .token .pin
128127 j = json .dumps (data , sort_keys = True )
129- return bytes (j , ' ascii' )
128+ return bytes (j , " ascii" )
0 commit comments