22# -*- coding: utf-8 -*-
33
44import subprocess
5+ from typing import List
56
67
78# -------------------------------------------------------------------
@@ -50,21 +51,23 @@ class KeyctlWrapper(object):
5051 default_keyring = '@u'
5152 default_keytype = 'user'
5253
53- def __init__ (self , keyring = default_keyring , keytype = default_keytype ):
54+ def __init__ (self , keyring : str = default_keyring , keytype : str = default_keytype ):
5455 self .keyring = keyring
5556 self .keytype = keytype
5657
5758 # ---------------------------------------------------------------
5859
5960 @staticmethod
60- def _system (args , data = None , check = True ):
61+ def _system (args , data : str = None , check = True ):
62+
6163 try :
6264 p = subprocess .Popen (
6365 args ,
6466 stdout = subprocess .PIPE ,
6567 stderr = subprocess .PIPE ,
6668 stdin = subprocess .PIPE ,
67- bufsize = 4096
69+ bufsize = 4096 ,
70+ text = True ,
6871 )
6972 except OSError as e :
7073 raise OSError ('Command \' {}\' execution failed. ErrMsg:{}' .format (' ' .join (args ), e ))
@@ -78,22 +81,22 @@ def _system(args, data=None, check=True):
7881
7982 if not check :
8083 return ret , out , err
81- elif ret is 0 :
84+ elif ret == 0 :
8285 return out
8386 else :
8487 raise KeyctlOperationError (errmsg = '({}){} {}' .format (ret , err , out ))
8588
8689 # ---------------------------------------------------------------
8790
88- def get_all_key_ids (self ):
91+ def get_all_key_ids (self ) -> List [ int ] :
8992 out = self ._system (['keyctl' , 'rlist' , self .keyring ])
9093 l = out .split ()
9194 l = [int (x ) for x in l ]
9295 return l
9396
9497 # ---------------------------------------------------------------
9598
96- def get_id_from_name (self , name ) :
99+ def get_id_from_name (self , name : str ) -> int :
97100 # ret, out, err = self._system(['keyctl', 'request', self.keytype, name], check=False)
98101 ret , out , err = self ._system (['keyctl' , 'search' , self .keyring , self .keytype , name ], check = False )
99102
@@ -106,7 +109,7 @@ def get_id_from_name(self, name):
106109
107110 # ---------------------------------------------------------------
108111
109- def get_name_from_id (self , keyid ) :
112+ def get_name_from_id (self , keyid : int ) -> str :
110113 ret , out , err = self ._system (['keyctl' , 'rdescribe' , str (keyid )], check = False )
111114
112115 if ret != 0 :
@@ -118,7 +121,7 @@ def get_name_from_id(self, keyid):
118121
119122 # ---------------------------------------------------------------
120123
121- def get_data_from_id (self , keyid , mode = 'raw' ):
124+ def get_data_from_id (self , keyid : int , mode = 'raw' ):
122125 if mode .lower () == 'raw' :
123126 kmode = 'pipe'
124127 elif mode .lower () == 'hex' :
@@ -141,7 +144,7 @@ def get_data_from_id(self, keyid, mode='raw'):
141144
142145 # ---------------------------------------------------------------
143146
144- def add_key (self , name , data ):
147+ def add_key (self , name : str , data ) -> int :
145148 try :
146149 keyid = self .get_id_from_name (name )
147150 raise KeyAlreadyExistError (keyid = keyid , keyname = name )
@@ -155,7 +158,7 @@ def add_key(self, name, data):
155158
156159 # ---------------------------------------------------------------
157160
158- def update_key (self , keyid , data ):
161+ def update_key (self , keyid : int , data ):
159162 ret , out , err = self ._system (['keyctl' , 'pupdate' , str (keyid )], data , check = False )
160163
161164 if ret == 1 :
@@ -165,7 +168,7 @@ def update_key(self, keyid, data):
165168
166169 # ---------------------------------------------------------------
167170
168- def remove_key (self , keyid ):
171+ def remove_key (self , keyid : int ):
169172 # revoke first, because unlinking is slow
170173 ret , out , err = self ._system (['keyctl' , 'revoke' , str (keyid )], check = False )
171174 if ret == 1 :
0 commit comments