-
Notifications
You must be signed in to change notification settings - Fork 0
/
DBQuery.py
142 lines (116 loc) · 3.17 KB
/
DBQuery.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# DBQuery.py
# Houses connections to database to query a voter's details from database
import hashlib
import uuid
import datetime as dt
import sqlite3
from sqlite3 import Error
import os
import Utility as util
import QrCodes as qr
import Accounts as ac
def create_connection():
""" create a database connection to a SQLite database """
try:
conn = sqlite3.connect("pythonsqlite.db")
except Error as e:
print(e)
return
finally:
return conn
def getprivateKey(rowid):
conn=create_connection()
c=conn.cursor()
try:
c.execute('SELECT * FROM secretKey WHERE rowid=?',(rowid,))
row=c.fetchone()
dx=row[0]
conn.commit()
conn.close()
return dx
except (RuntimeError,NameError,TypeError):
conn.commit()
conn.close()
print("Private key missing!")
return None
def getpublicKey(name,dob):
conn=create_connection()
c=conn.cursor()
a,b,d=dob.split('-')
dob=dt.date(int(a),int(b),int(d))
try:
c.execute('SELECT * FROM verify WHERE name=? AND dob=?',(name,dob,))
row=c.fetchone()
dx = row[3]
conn.commit()
conn.close()
return dx
except (RuntimeError,NameError,TypeError):
conn.commit()
conn.close()
print("Public key missing!")
return None
def verifyaccount(vt,name,dob): #verifying voter from voterlist
present=0
for i in vt:
flag1=(i.name==name)
flag2=(i.dob==dob)
if((flag1 and flag2)==True):
present=1
return [(flag1 and flag2),i]
else:
continue #continues till voter not found in VoterList
if(present==0):
return [False,None]
def verifyDB(voter): #verifying from database and assigning value of self.voterID post verification
vid=int(input("Enter your voter-id "))
if(verify(voter.name,voter.dob,vid)):
voter.voterID = vid
return True
else:
print("Record not found in DB!")
return False
def verify(name,dob,v_id): #The case of multiple same names and DOBs also handled via v_id now
conn=create_connection()
c=conn.cursor()
a,b,d=dob.split('-') #UNCOMMENT IF RUNNING IN CONSOLE MODE!
dob=dt.date(int(a),int(b),int(d)) #UNCOMMENT IF RUNNING IN CONSOLE MODE!
try:
c.execute('SELECT * FROM verify WHERE name=? AND dob=?',(name,dob,))
row=c.fetchall()
for i in row:
password,salt=i[0].split(':')
flag=(password==hashlib.sha256(salt.encode() + str(v_id).encode()).hexdigest())
if(flag==True):
conn.commit()
conn.close()
return flag
else:
continue
if(flag==False):
conn.commit()
conn.close()
return False
except (RuntimeError,NameError,TypeError):
conn.commit()
conn.close()
return False
def deleteData(name,dob,v_id):
conn=create_connection()
c=conn.cursor()
a,b,d=dob.split('-')
dob=dt.date(int(a),int(b),int(d))
try:
c.execute('SELECT rowid FROM verify WHERE name=? AND dob=?',(name,dob,))
row=c.fetchone()
c.execute('DELETE FROM verify WHERE name=? AND dob=?',(name,dob,))
c.execute('DELETE FROM secretKey WHERE rowid=?',(row[0],))
conn.commit()
conn.close()
except(RuntimeError,NameError,TypeError):
conn.commit()
conn.close()
print("Data not found!")
##TESTING...
if __name__ == '__main__':
deleteData("Gail Branam","2018-11-26",101)