Apr-19-2022, 08:08 AM
Executing run casb_process .py module case importing integer failed this the output
Code lines are follow. what is possible solution i am using Charm 0.50 python 3.9 Ubuntu21.10 virtual machine
Code lines are follow. what is possible solution i am using Charm 0.50 python 3.9 Ubuntu21.10 virtual machine
import json import hashlib from charm.toolbox.pairinggroup import PairingGroup, ZR, G1, G2, GT, pair, extract_key from charm.toolbox.symcrypto import SymmetricCryptoAbstraction import pymysql as pm from abenc_bsw07 import * # This is the cpabe BSW07 scheme's cryptosystem. # It provides the relevant methods for the objects group = PairingGroup('SS512') system = CPabe_BSW07(group) class CASB: ''' This is a Cloud Access Security Broker. ''' def __init__(self): self.cdb = CDB() self.dk_name = None self.dk_score = None self.users = {} def store(self, name, buffer): ''' buffer is a dict with information related to name. ''' if name in self.users.keys(): for key in buffer.keys(): self.users[name][key] = buffer[key] else: self.users[name] = {} # if this is a new user, new a dict for the user. for key in buffer.keys(): self.users[name][key] = buffer[key] def setpolicy(self, name, policy): ''' set policy on different columns; ''' if name in self.users.keys(): self.users[name]['policy'] = policy else: print('please return to "store"!!!') return -1 print(self.users[name]['policy']) def upload(self, name, data): ''' upload data to CDB. ''' # generate dk for columns(name and score). if self.dk_name == None: dk_name = group.random(GT) if self.dk_score == None: dk_score = group.random(GT) # encrypt data with dk for i in range(0, len(data)): cipher_name = self.symmetric_encrypt(data[i][1], dk_name) cipher_score = self.symmetric_encrypt(data[i][2], dk_score) # store cipher in CDB self.cdb.cdb_insert(data[i][0], cipher_name, cipher_score) # encrypt dk with CP-ABE and store self.dk_name = system.encrypt(self.users[name]['pk'], dk_name, self.users[name]['policy']['name']) self.dk_score = system.encrypt(self.users[name]['pk'], dk_score, self.users[name]['policy']['score']) def accessdata(self, name, sql): ''' sql is just for demonstration. ''' # decrypt dk dk_name = system.decrypt(self.users[name]['pk'], self.users[name]['sk'], self.dk_name) dk_score = system.decrypt(self.users[name]['pk'], self.users[name]['sk'], self.dk_score) print('\n// {} //****** // {} //'.format(name, sql)) datas = self.cdb.cdb_select() # select data from CDB # decrypt data with dk newdatas = [] for data in datas: temp = data[1] temp2 = data[2] if dk_name != False: temp = self.symmetric_decrypt(data[1], dk_name).decode('utf-8') if dk_score != False: temp2 = self.symmetric_decrypt(data[2], dk_score).decode('utf-8') newdata = [data[0], temp, temp2] newdatas.append(newdata) return newdatas def end(self): self.cdb.cdb_deleteall() def symmetric_encrypt(self, msg, dk): k = extract_key(dk) a = SymmetricCryptoAbstraction(k) c = a.encrypt(msg) return c def symmetric_decrypt(self, cipher, dk): k = extract_key(dk) a = SymmetricCryptoAbstraction(k) msg = a.decrypt(cipher) return msg class CDB(): ''' This is Cloud DataBase. ''' def __init__(self): self.conn = pm.connect(host="127.0.0.1", port=3306, user="ubuntu", password="ubuntu", database="education", charset="utf8", autocommit=True) self.cursor = self.conn.cursor() def cdb_insert(self, number, name, score): sql = "INSERT INTO math (number, name, score) VALUES (%s, %s, %s);" try: self.cursor.execute(sql, [number, name, score]) self.conn.commit() except Exception as e: print(repr(e)) self.conn.rollback() # Rollback in case there is any error def cdb_select(self): sql = "SELECT * FROM math;" try: self.cursor.execute(sql) self.conn.commit() except Exception as e: print(repr(e)) self.conn.rollback() results = self.cursor.fetchall() return results def cdb_deleteall(self): sql = "DELETE FROM math;" try: self.cursor.execute(sql) self.conn.commit() except Exception as e: print(repr(e)) self.conn.rollback() def cdb_close(self): self.conn.close() class KMS: ''' This is KMS(Key Management Server), which provides key management service for users. ''' def __init__(self): pass def setup(self): ''' Execute "Setup" in CP-ABE. ''' (master_public_key, master_key) = system.setup() return master_public_key, master_key class UE(): ''' This is UE(user edge). There is two attributes('admin' and 'user') in it. ''' def __init__(self, name, attributes): # init a ue self.pk = None self.mk = None self.sk = None self.name = name self.attributes = attributes def show(self, datas): print('number\tname\tscore') for data in datas: for column in data: print(column, end='\t') print('\n') def main(): ''' In this function, I'll show you the process. ''' # init kms = KMS() casb = CASB() # 1.GENERATE USER MASTER KEY AND SECRET KEYS alice = UE('alice', ['ADMIN']) bob = UE('bob', ['USER']) alice.pk, alice.mk = kms.setup() # kms setup publickey and master key for alice(admin). # generate secret keys for alice and bob alice.sk = system.keygen(alice.pk, alice.mk, alice.attributes) bob.sk = system.keygen(alice.pk, alice.mk, bob.attributes) # store pk, sk and mk in CASB casb.store(alice.name, {'pk': alice.pk, 'sk': alice.sk, 'mk': alice.mk}) casb.store(bob.name, {'pk': alice.pk, 'sk': bob.sk, 'mk': alice.mk}) # 2.CUSTOMIZE ACCESS POLICIES alice.policy = {'name': '((user and admin) or admin)', 'score': '(user or admin)'} casb.setpolicy(alice.name, alice.policy) # set access policy on different columns. # 3.UPLOAD DATA alice.data = [['1', 'bob', '99'], ['2', 'charles', '98'], ['3', 'david', '96'], ['4', 'emily', '100']] casb.upload(alice.name, alice.data) # upload data to CASB # 4.ACCESS DATA # alice access data alicedatas = casb.accessdata(alice.name, 'SELECT * FROM math') alice.show(alicedatas) # bob access data bobdatas = casb.accessdata(bob.name, 'SELECT * FROM math') bob.show(bobdatas) casb.end() # delete all the data in table math for next roundmain()
Error:/usr/bin/python3.9 /home/ali/Documents/test/casb_process.py
ERROR: module load failed!
Traceback (most recent call last):
File "/home/ali/Documents/test/casb_process.py", line 8, in <module>
from charm.toolbox.symcrypto import SymmetricCryptoAbstraction
File "/home/ali/Documents/test/charm/toolbox/symcrypto.py", line 1, in <module>
from charm.toolbox.paddingschemes import PKCS7Padding
File "/home/ali/Documents/test/charm/toolbox/paddingschemes.py", line 3, in <module>
from charm.toolbox.securerandom import SecureRandomFactory
File "/home/ali/Documents/test/charm/toolbox/securerandom.py", line 6, in <module>
from charm.toolbox.conversion import Conversion
File "/home/ali/Documents/test/charm/toolbox/conversion.py", line 7, in <module>
from charm.core.math.integer import integer
SystemError: initialization of integer failed without raising an exception
The Debeging error screenshot URL https://ibb.co/pzFM49V