From 582fa36cd78a0ec2ecb3dd6a6f3ae610db173443 Mon Sep 17 00:00:00 2001 From: Luke Ogburn <21106956+logburn@users.noreply.github.com> Date: Wed, 10 Mar 2021 13:36:13 -0500 Subject: [PATCH] wednesday meeting --- cronjob.py | 33 +++++++++++++++++++++------------ interval | 2 +- numFiles.txt | 2 +- pubkey.pem | 9 --------- publickey.pem | 9 +++++++++ 5 files changed, 32 insertions(+), 23 deletions(-) delete mode 100644 pubkey.pem create mode 100644 publickey.pem diff --git a/cronjob.py b/cronjob.py index 81f4d63..5d37c24 100644 --- a/cronjob.py +++ b/cronjob.py @@ -6,7 +6,9 @@ ''' # import things -from Crypto.Cipher import PKCS1_OAEP as RSA +from Crypto.PublicKey import ECC +from Crypto.PublicKey import RSA +from Crypto.Cipher import PKCS1_OAEP as pkrsa from Crypto.Cipher import AES from Crypto.Random import get_random_bytes import os @@ -36,22 +38,29 @@ def takeVideo(time): gopro.downloadLastMedia(custom_filename=(location+"plaintext/" + numFiles() + ".mp4")) gopro.delete("last") -# TODO encrypt file data with assumed pgp key (file should already be read, this essentially -# encrypts the text or contents of the file) -def encryptPGP(file): - return file - #with open("pubkey.pem", "r") as keyfile: - # key = RSA.importKey(b64decode(str(keyfile))) - keytext = "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLjon5dPwTgHUr44KndKz0W7bN\nwEqs6IImvnh/X++FD8vpMNPpepgEpZBC52vTyhmsgJYbkNnp8DxSUApE+IL5FlKr\nDCTLp3KLfjD8onjHf7mtD7uMpxWkafmor4BGq05M/QRwttYjaQNBGT3BFYHi5NdX\negPZLolmwrqwndwGAQIDAQAB\n-----END PUBLIC KEY-----" - key = RSA.importKey(keytext) - return key.encrypt(file, 'x')[0] +# method to encrypt with ECC, however this is unsupported in pycryptodome +def encryptECC(data): + with open("publickey.pem", "rt") as keyfile: + key = ECC.import_key(keyfile.read()) + return key.encrypt(data) + +# current method of public key encryption +def encryptRSA(data): + key = RSA.import_key(open("publickey.pem", "r").read()) + cipher = pkrsa.new(key) + encd = cipher.encrypt(data) + print(f"{data}\n{encd}") + return encd + +# allowsp public key encryption method to be changed later +def PKEncrypt(data): + return encryptRSA(data) # encrypt given (video) file and store both encrypted video and encrypted key def encryptVideo(file): # open file, generate cyrpto message = open(file, "rb").read() key = get_random_bytes(16) - print(str(key)) cipher = AES.new(key, AES.MODE_EAX) ciphertext, tag = cipher.encrypt_and_digest(message) # save encrypted file @@ -60,7 +69,7 @@ def encryptVideo(file): file_out.close() # save the encrypted key with open("keys/" + str(int(numFiles()) - 1) + ".asc", "wb+") as keyf: - keyf.write(encryptPGP(key)) + keyf.write(PKEncrypt(key)) # record the video and store in file location takeVideo(seconds) diff --git a/interval b/interval index f599e28..00750ed 100644 --- a/interval +++ b/interval @@ -1 +1 @@ -10 +3 diff --git a/numFiles.txt b/numFiles.txt index e440e5c..d8263ee 100644 --- a/numFiles.txt +++ b/numFiles.txt @@ -1 +1 @@ -3 \ No newline at end of file +2 \ No newline at end of file diff --git a/pubkey.pem b/pubkey.pem deleted file mode 100644 index a75951d..0000000 --- a/pubkey.pem +++ /dev/null @@ -1,9 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuk5egzauVPCxuNvWcJAA -ISIxcvsdXQFFB5lYUdOgv8Dcyva/9kh76R2TEay0K3kEpXBx/M4YdiAIg0XoTYUx -WNR3vGy4sWuAkF1WPF0hCJcx/GGCCszl7NqMDz7uedBSkJG4sIyOCnmxJli/Y7O+ -xoENb1DvJ4U7b0n3AHkovlsfkw8zwOVsc9dUnPbZmrzbd99HYoRFPKnAVgF+vGY6 -2qRj2GvsJzRAC0K8HMxJv0r/V+3O+fwqGCnJlCcadgMJUuHPDVdYVXgEZZ1iYdwF -pPHLML2DEOd3y3DJAy1F59IkEGArULQbu7SdqwaFkU1Y2euZXb/J1q/9C/GhppQH -9QIDAQAB ------END PUBLIC KEY----- \ No newline at end of file diff --git a/publickey.pem b/publickey.pem new file mode 100644 index 0000000..c311192 --- /dev/null +++ b/publickey.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1/U19NJAzlURKvS5mRp6 +Glv+vteUdVSB1OzOedtPDQx0f0U0y4OEadHw1QZPfVNN/qHxG69/LNh0i/zHtjW/ +B8rc3Meg61zq8ZYWFoM9tc3g72ZRz1jTh/ZQp1WsuuNH70akXcsUAVqzAOYtdf11 +ayu3WMutfNfsOISdl+4yCqeE9cal8Sesuh68hNbxtBOo+QLF76jNFG5DVmrU/dbL +jp4yG5d1Y6Rj+Vqddr9r4qdvj8gHerA1yaYYAw9MIDWyxB1K26Bnd0qP5pq5orLW +BaH2b4apYilGEInSG9TpKb6uWWDzfnKvb3fVcUarValG+2VWT48vVwVEV3y4YIbF +pwIDAQAB +-----END PUBLIC KEY-----