Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Empty file added examplePackage/LICENSE.txt
Empty file.
2 changes: 2 additions & 0 deletions examplePackage/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Test package to print the passed string
Mihir bhai OP
Empty file.
94 changes: 94 additions & 0 deletions examplePackage/build/lib/examplePackage/encrypt.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
from examplePackage.utils import message, debug, init_default_key_storage, STORAGE_DIR, STORE_KEY_F
from printy import raw_format
from cryptography.fernet import Fernet
import os

# generating encryption key
def keygen():
try:
#generating the key and storing them in a file
key = Fernet.generate_key()
message.success("Encryption key generated successfully")
except Exception as e:
message.error('Couldn\'t generate encryption key')
debug.error(str(e))
return False
return key.decode('utf-8')

# storing the generated key to default/specified filename
def storeKey(key, filename = STORE_KEY_F):
storeTo = os.path.join (STORAGE_DIR, filename) + "_keys.key"
if init_default_key_storage():
try:
#creating the key file in which the key'll be stored
file = open(storeTo,'w')
file.write(key)
file.close()
message.success("Key was stored to " + storeTo + " successfully")
except Exception as e:
message.error("Key couldn't be stored to " + storeTo)
debug.error("Key couldn't be stored to " + storeTo)
return False
return True
else:
return False

# retrieve key from specified filename
def getKey(filename = STORE_KEY_F):
getFrom = os.path.join (STORAGE_DIR, filename) + "_keys.key"
if init_default_key_storage():
try:
# retriving key file
file = open (getFrom, 'r')
key = file.read ()
file.close ()
message.success ('Loaded encryption key successfully')
return key
except:
message.error ('Couldn\'t load encryption key')
debug.error ('Couldn\'t load encryption key')
return False
else:
message.error ('Couldn\'t load encryption key')
debug.error ('Couldn\'t load encryption key')
return False

# encrypting file using key
def encryption(key, filename):
try:
with open(filename, 'rb') as f:
data = f.read()
#encrypting the data from the given file name
fernet = Fernet(key)
encrypted=fernet.encrypt(data)
with open(filename,'wb') as f:
f.write(encrypted)
message.success(filename + ' successfully encrypted')
except Exception as e:
message.error(filename + ' couldn\'t be encrypted')
debug.error(filename + ' couldn\'t be encrypted')
print (e)
return False
return True

# decrypting file using key
def decryption(key, filename):
try:
with open(filename,'rb') as f:
data = f.read()
q = Fernet(key)
decrypted_message = q.decrypt(data)
with open(filename,'wb') as f:
f.write(decrypted_message)
message.success(filename + ' successfully decrypted')
except Exception as e:
message.error(filename + ' couldn\'t be decrypted')
debug.error(filename + ' couldn\'t be decrypted')
print(e)
return False
return True

# test functions
#print(storeKey(keygen()))
#encryption(getKey(), 'test_data/test_api_keys.json')
#decryption(getKey(), 'test_data/test_api_keys.json')
12 changes: 12 additions & 0 deletions examplePackage/build/lib/examplePackage/helpVersion.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from examplePackage.utils import message, debug, init_default_key_storage, printy, STORAGE_DIR, STORE_KEY_F

def help():
message.success("Usage: clik <command> \n \n init\t\tinitializes the script to input key value pairs \n add\t\tinsert key value pair in existing json file \n subtract\tdelete key value pair in existing json file \n modify\t\talter key value in existing json file \n encrypt\tencrypts key value dictionary to json and generate encryption key \n decrypt\tdecrypts json file to dictionary \n help\t\tguide through all the CLIK functions \n version\tshows the CLIK version installed ")

def version():
message.success("CLIK Version 0.0.0")


#test functions
#help()
#version()
55 changes: 55 additions & 0 deletions examplePackage/build/lib/examplePackage/json_convert.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import json
from examplePackage.utils import message, debug, printy

#sample api keys
api_val = {
'ADMIN_KEY':'exampleadmin123',
'ADMIN_USERNAME':'example@admin',
'ADMIN_PASSWORD':'Darwin@Example2506',
'TWITTER_ACCESS_TOKEN':'1234614-4Du6ZlFtVOpNMgtwIKjRe4wzwxHejcDRaxjNmAU',
'INSTA_API_KEY':'Qhsh6yihijy3e8',
'YOUTUBE_API_KEY':'83nicciwdcIIUNij',
'FACEBOOK_API_KEY_SECRET':'7jewkdjwenbnsH',
'INSTA_API_KEY_SECRET':'Qhsh6fjkdsbfky3e8',
'YOUTUBE_API_KEY_SECRET':'8djkfhjsndcIIUNij',
'FACEBOOK_API_KEYS_SECRET':'7jewdsjnfdnjnfssnsH'
}

#function to convert JSON to dictionary and print
def jsonToDict(filename):
try:
with open(filename,'r') as fh:
json_str = fh.read()
json_value = json.loads(json_str)
return json_value
except:
return False


#function to convert dictionary to JSON
def dictToJson(inputDict, filename, indents=2):
try:
with open(filename, 'w') as fh2:
fh2.write(json.dumps(inputDict, indent=indents, sort_keys=True))
message.success('Keys stored successfully')
return True
except Exception as e:
message.error('Couldn\'t write to JSON')
debug.error(str(e))
return False

# function to format and display JSON data
def display_json (filename, display_indent=4):
json_val = jsonToDict(filename)
if json_val:
message.success(filename + ' loaded successfully')
printy (json_val, indentation=display_indent)
else:
message.error('JSON couldn\'t be loaded')
debug.error('JSON to Dict Failed')

#calling the functions

#print(jsonToDict('test_data/test_api_keys.json'))
# dictToJson(api_val,'test_data/test_api_keys.json')
#display_json ('test_data/test_api_keys.json')
80 changes: 80 additions & 0 deletions examplePackage/build/lib/examplePackage/keys_init.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
from examplePackage.utils import message, debug, init_default_key_storage, printy, STORAGE_DIR, STORE_KEY_F
from examplePackage.encrypt import os, keygen, storeKey, encryption
from examplePackage.json_convert import dictToJson

# function to get filename for holding keys from user
def get_filename_from_user():
filename = message.prompt('Name of file holding keys (keys.json)')

# default input: keys.json
if(filename==''):
filename = 'keys.json'

return filename

# function to get keys from the user
def get_keys_from_user():
keyDict = {}

# get value
def getKeyValue(keyName):
key = message.prompt(keyName + ' value')
if(key!=''):
keyDict[keyName] = key
elif(key==''):
message.error('Value cannot be empty.')
getKeyValue(keyName)

# get key
while(True):
keyName = message.prompt('Key (done)')
if(keyName!=''):
getKeyValue(keyName)
elif (keyName==''):
break

# default input ends key-value input sequence
message.delete_last()
return keyDict

# function to generate and save encryption key
def generate_encryption():
key = keygen()

#Displaying the Key
message.success("SECURITY KEY GENERATED: " + key)
user_choice = message.prompt("Save the key locally (Y/n)")

# user choice to save the file
# default user choice is YES
if user_choice == "" or user_choice.lower() == "y" or user_choice.lower() == "yes":
storage_choice = message.prompt("Path to store key to (" + os.path.join (STORAGE_DIR, STORE_KEY_F) + "_keys.key" + ")")
if storage_choice != "":
storeKey(key, storage_choice)
else:
storeKey(key)
print(key)
elif user_choice.lower()=="n" or user_choice.lower()=="no":
message.success("YOUR KEY WILL NOT BE STORED. KEEP IT SAFE.")
else:
message.error("INVALID INPUT")
generateEncryption()
return key

# clik init
def init_function():
if init_default_key_storage():
filename = get_filename_from_user()
tokendict = get_keys_from_user()
enc_key = generate_encryption()

if dictToJson(tokendict, filename):
if encryption(enc_key, filename):
message.success("Filename: " + filename)
else:
message.error("Filename: " + filename)
message.success("Keys Added: ")
printy(tokendict, indentation=4)


# init_function()
70 changes: 70 additions & 0 deletions examplePackage/build/lib/examplePackage/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import sys
from examplePackage.encrypt import encryption, decryption, getKey
from examplePackage.json_convert import jsonToDict
from examplePackage.utils import message, STORAGE_DIR, STORE_KEY_F
from examplePackage.menu_functions import add, subtract, modify
from examplePackage.helpVersion import help, version
from examplePackage.keys_init import init_function

# check encrypted
def checkEnc(filename):
return jsonToDict(filename)

# main menu hub of CLIK
def main_menu(args = sys.argv[1:]):
# print(args)
if args[0].lower() == 'init':
init_function()
elif args[0].lower() == '--help':
help()
elif args[0].lower() == '--version':
version()
else:
fname = args[0]
cmd = args[1]

# encrypt file
if cmd.lower() == 'enc':
if checkEnc(fname) != False:
keyFname = message.prompt('File with key for description (' + STORAGE_DIR + '/' + STORE_KEY_F + '): ')
key = getKey() if keyFname == '' else getKey(keyFname)
encryption(key, fname)
message.success(fname + ' is now encrypted')
else:
message.error(fname + ' is already encrypted')

# decrypt file
elif cmd.lower() == 'dec':
if checkEnc(fname) != False:
message.error(fname + ' is already decrypted')
else:
keyFname = message.prompt('File with key for description (' + STORAGE_DIR + '/' + STORE_KEY_F + '): ')
key = getKey() if keyFname == '' else getKey(keyFname)
decryption(key, fname)
message.success(fname + ' is now decrypted')

# add new keys
elif cmd.lower() == 'add':
if checkEnc(fname) != False:
add(fname)
else:
message.error(fname + ' is encrypted')

# subtract keys
elif cmd.lower() == 'sub':
if checkEnc(fname) != False:
subtract(fname)
else:
message.error(fname + ' is encrypted')

# subtract keys
elif cmd.lower() == 'mod':
if checkEnc(fname) != False:
modify(fname)
else:
message.error(fname + ' is encrypted')


# main function
if __name__ == "__main__":
main_menu(sys.argv[1:])
Loading