Secure

format_key(hsh)[source]

Reformat a hash (can be str or bytes)

Parameters

hsh (Union[str, bytes]) – hash to be reformatted

Return type

bytes

Returns

a key which can be used for decrypting the data

secure_key(word, salt=None)[source]

Get a hash from the raw text password

Parameters
  • word (str) – raw text password

  • salt (Optional[str]) – random salt to seed the hash computation

Return type

str

Returns

hash of the password

prompt_password_hash(salt=None)[source]

Get the hash of a password which is entered by the user in a prompt

Parameters

salt (Optional[str]) – random salt for hash computation

Return type

str

Returns

hash of the entered password

encrypt(data, hsh=None)[source]

Encrypt the data from a provided hash (or prompt for a password if no hash is provided)

Parameters
  • data (bytes) – bytes to be encrypted

  • hsh (Union[str, bytes, None]) – hash used as key to encrypt

Return type

bytes

Returns

encrypted data bytes

decrypt(data, hsh=None)[source]

Decrypt data with provided hash (or prompt for a password to compute hash if no hash is provided)

Parameters
  • data (bytes) – encrypted bytes that should be decrypted

  • hsh (Union[str, bytes, None]) – hash of a password to be used as a key to decrypt (obviously, must be the same as was used to encrypt)

Return type

bytes

Returns

the decrypted data, or a WrongKeyError if the key failed

secure_pack(obj, hsh=None, meta=None, include_timestamp=False)[source]

Pack the object and encrypt it using the provided hash (prompt user for password if none is provided)

Parameters
  • obj (NewType()(SERIALIZABLE, object)) – object to be packed

  • hsh (Union[str, bytes, None]) – hash used as key to encrypt

  • meta (Optional[Dict[str, NewType()(JSONABLE, object)]]) – meta information to store with the packed obj

  • include_timestamp (bool) – include timestamp in meta info

Return type

bytes

Returns

encrypted bytes

secure_unpack(data, hsh=None, return_meta=False)[source]

Decrypt data and unpack to recover the original object using the provided hash as a key

Parameters
  • data (bytes) – encrypted bytes

  • hsh (Union[str, bytes, None]) – hash to be used as a key to decrypt (prompt user, if not provided)

  • return_meta (bool) – include meta info in output

Return type

NewType()(SERIALIZABLE, object)

Returns

decrypted and unpacked object, possibly including the meta info