def auto_create_private_key_file(args): try: logger = get_sub_logger('create_private_key_file') #- logger.info('args: {}'.format(args)) pkfp = path.join(configuration_directory_location, 'private_key') if path.isfile(pkfp) and not args['over_write'] == True: logger.error( 'ERROR: The private key file already exists. Will not overwrite it.' ) return False if args['silent'] else 'ERROR' else: if path.isfile(pkfp) and args['over_write'] == True: logger.warning( 'A private key file exists. It will be over written.') with open(pkfp, 'wb') as f: f.write(create_random_key()) logger.info( 'Created a file at {} containing a random key.'.format( pkfp)) return True if args['silent'] else 'OK' except: logger.error('Exception in auto_create_private_key: {}, {}'.format( exc_info()[0], exc_info()[1])) return False
from base64 import standard_b64encode from datetime import datetime, timezone from hashlib import sha256 from jose import jws from requests import post from time import time from uuid import uuid4 from python.logger import get_sub_logger from python.encryption.nacl_fop import decrypt from config import device_id, hmac_secret_key_b64_cipher, fop_jose_id # Note: This module uses JWT security (via jose). Paseto is another system for implemeting token based security. logger = get_sub_logger(__name__) def extract_timestamp(path_name) -> 'timestamp': dt = path_name.split("/")[-1].split(".")[0] return datetime(int(dt[0:4]), int(dt[4:6]), int(dt[6:8]), hour=int(dt[9:11]), minute=int(dt[12:14]), second=int(dt[15:17]), tzinfo=timezone.utc).timestamp() # Make the JWT claim set def claim_info(file_hash, time_stamp, camera_id): #- TBD: Time delivers seconds since unix epoch. Not all systems have the same epoch start date. There #- may be a better way to time stamp the claims. issue_time = int(time())