diff --git a/s3keyring/metadata.py b/s3keyring/metadata.py index 169836f..d42789a 100644 --- a/s3keyring/metadata.py +++ b/s3keyring/metadata.py @@ -8,7 +8,7 @@ package = 's3keyring' project = "S3 backend for the keyring module" project_no_spaces = project.replace(' ', '') -version = '0.7.1.post1' +version = '0.8.0.post1' description = 'Keeps your secrets safe in S3' authors = ['German Gomez-Herrero'] authors_string = ', '.join(authors) diff --git a/s3keyring/s3.py b/s3keyring/s3.py index 328fb96..caff61c 100644 --- a/s3keyring/s3.py +++ b/s3keyring/s3.py @@ -23,6 +23,11 @@ from s3keyring.config import Config from s3keyring.exceptions import ProfileNotFoundError +try: + from base64 import encodestring as b64encode, decodestring as b64decode +except ImportError: + from base64 import encodebytes as b64encode, decodebytes as b64decode + LEGAL_CHARS = ( getattr(string, 'letters', None) # Python 2.x or getattr(string, 'ascii_letters') # Python 3.x @@ -231,7 +236,7 @@ def get_password(self, service, username): prefix=prefix, bucket=self.bucket.name) raise PasswordGetError(msg) pwd_base64 = values[0].get()['Body'].read() - pwd = base64.decodestring(pwd_base64) + pwd = b64decode(pwd_base64) return pwd.decode('utf-8') def set_value(self, *args, **kwargs): @@ -244,7 +249,7 @@ def set_password(self, service, username, password): service = _escape_for_s3(service) username = _escape_for_s3(username) - pwd_base64 = base64.encodestring(password.encode('utf-8')).decode() + pwd_base64 = b64encode(password.encode('utf-8')).decode() # Save in S3 using both server and client side encryption keyname = self._get_s3_key(service, username)