Example #1
0
 def _decrypt_data(self, session_data):
     """Bas64, decipher, then un-serialize the data for the session
     dict"""
     if self.encrypt_key:
         try:
             nonce = session_data[:8]
             encrypt_key = crypto.generateCryptoKeys(self.encrypt_key,
                                              self.validate_key + nonce, 1)
             payload = b64decode(session_data[8:])
             data = crypto.aesDecrypt(payload, encrypt_key)
         except:
             # As much as I hate a bare except, we get some insane errors
             # here that get tossed when crypto fails, so we raise the
             # 'right' exception
             if self.invalidate_corrupt:
                 return None
             else:
                 raise
         try:
             return util.pickle.loads(data)
         except:
             if self.invalidate_corrupt:
                 return None
             else:
                 raise
     else:
         data = b64decode(session_data)
         return util.pickle.loads(data)
Example #2
0
 def _encrypt_data(self, session_data=None):
     """Serialize, encipher, and base64 the session dict"""
     session_data = session_data or self.copy()
     if self.encrypt_key:
         nonce = b64encode(os.urandom(6))[:8]
         encrypt_key = crypto.generateCryptoKeys(self.encrypt_key,
                                          self.validate_key + nonce, 1)
         data = util.pickle.dumps(session_data, 2)
         return nonce + b64encode(crypto.aesEncrypt(data, encrypt_key))
     else:
         data = util.pickle.dumps(session_data, 2)
         return b64encode(data)