Metadata-Version: 2.1
Name: hullencrypt
Version: 0.0.1
Summary: A selfmade cryptolib for sharing passwords in a tree structure
Author-email: John Janzen <rc-dev@johnjanzen.me>
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE

# HullEncrypt

## Idea

HullEncrypt (base and gui) are inspired by [Skeleton](https://github.com/cs-bic/skeleton)


## GUI

The GUI is not working as of [3a7b9ea](https://github.com/JanzenJohn/HullEncrypt/commit/3a7b9eaf6674e6c03800a106040e3ae8f3f96d59)

## Concept

Parent -> Node -> Child
               -> Child

Every node can be unlocked by it's parent, or it's password, and can unlock all of it's children
this is because the childs key is generated by hashing the Parent's key and the Nodes UUID

## Security

A user wich has been given an unlocked Node can't get the parents key with
the knowledge of the childs key as it is hashed + salted to get the childs key, allowing for
multiple Children on the same node without having security issues.

## Example usage

```py
import base
import os

root_node = base.Node(parent_key=os.urandom(16), name=b'root_node', password=b'example pass')
root_key = root_node.get_key(password=b'example pass')

# needs the root_key to create new child
user_one = base.Node(parent_key=root_key, name=b'user_one', password=b'users pass')
user_key = user_one.get_key(password=b'user pass')
root_node.children.append(user_one)

netflix = base.Node(parent_key=user_key, name=b'neftlix', content=b'Netflix password')
user_one.children.append(user_one)

del root_key
del user_key

# later for auth

passw = input("Enter your password: ").encode("utf-8")
neftlix = user_one.get_child(["neftlix"])
user_key = user_one.get_key(password=passw)
netflix_key = user_one.get_child_key(key=key, path=["netflix"])
del user_key

print(netflix.get_content(netflix_key).decode("utf-8"))
del netflix_key
