def ruleGet(self, rule_id): with self._lock: r = self._db.table("rules").get((tinydb.Query()["id"] == rule_id)) if r: return HXAPI.b64(r["rule"], decode=True, decode_string=True) else: return False
def crypt_aes(key, iv, data, decrypt=False, base64_coding=True): cipher = AES.new(key, AES.MODE_OFB, iv) if decrypt: if base64_coding: data = HXAPI.b64(data, True) data = cipher.decrypt(data).decode("utf-8") # Implement PKCS7 de-padding pad_length = ord(data[-1:]) if 1 <= pad_length <= 15 and all(c == chr(pad_length) for c in data[-pad_length:]): data = data[:len(data) - pad_length:] else: # Implement PKCS7 padding pad_length = 16 - (len(data) % 16) if pad_length < 16: data += chr(pad_length) * pad_length data = data.encode("utf-8") data = cipher.encrypt(data) if base64_coding: data = HXAPI.b64(data) return data