def __init__(self, f, user, password, userID=None, accountID=None): AESCipher.__init__(self, password) f = self.decrypt(f['secret']) self.user = user self.init_api = API2( privkey=f['privateKey'], api_key=f['API'], session_token=f['Token']['token'], server_pubkey=f['ServerPublicKey']['server_public_key']) if userID: self.userID = int(userID) if accountID: self.accountID = int(accountID) try: self.bunq_api = Endpoints( API2(privkey=f['privateKey'], api_key=f['API'], session_token=Session.objects.get( session_key=user.profile.session_token).get_decoded() ['session_token'], server_pubkey=f['ServerPublicKey']['server_public_key'])) except (ObjectDoesNotExist, KeyError): pass
def installation(self): decryt = AESCipher(self.password) encryt = json.loads( installation(self.username, self.password, 'API_KEY').encrypt()) d = AESCipher.decrypt(decryt, encryt['secret']) self.assertIs(len(d), 4) self.assertTrue(isinstance(d, dict))
def installation_error2(self): decryt = AESCipher(self.password) encryt = json.loads( installation(self.username, self.password, 'API_KEY').encrypt()) secret = encryt['secret'] = 'destroyed' self.assertRaises(base64.binascii.Error, AESCipher.decrypt, decryt, secret)
def encrypt(self): d = { 'Token': self.r['token'], 'privateKey': self.RSA_key, 'API': self.API_KEY, 'ServerPublicKey': self.r['ServerPublicKey'] # NOTE: need to add this } if len(self.user_guid) > 1: del self.user_guid[0] self.user_guid.append(self.GUID) self.user.save() k = AESCipher(self.password) secret = AESCipher.encrypt(k, json.dumps(d)) d2 = {'username': self.username, 'secret': secret, 'userID': self.GUID} return (json.dumps(d2, indent=4, sort_keys=True))
def installation_error1(self): decryt = AESCipher('wrong password') encryt = json.loads(installation( self.user, self.password, 'API_KEY').encrypt()) self.assertRaises( UnicodeDecodeError, AESCipher.decrypt, decryt, encryt['secret'] )