piermesh/docs/Cryptography/WhaleSong.md

120 lines
2.3 KiB
Markdown
Raw Permalink Normal View History

2024-08-02 04:27:56 +00:00
<a id="whalesong-diffie-hellman-ephemeral-fernet-based-encryption"></a>
# WhaleSong: Diffie hellman ephemeral Fernet based encryption
2024-08-01 01:09:11 +00:00
### *class* Cryptography.WhaleSong.DHEFern(cache, nodeNickname, cLog)
2024-08-01 22:03:59 +00:00
[🔗 Source](https://git.utopic.work/PierMesh/piermesh/src/branch/main/Cryptography/WhaleSong.py)
2024-08-01 01:09:11 +00:00
#### cLog
Method reference to run.Node.cLog so we can log to the ui from here
#### loadedParams
In memory representations of cryptography parameters
* **Type:**
dict
#### loadedKeys
In memory representations of cryptography keys
* **Type:**
dict
#### nodeNickname
Name of node for isolating configs when running multiple nodes
* **Type:**
str
#### cache
Daisy cache for use in storing cryptography information
* **Type:**
Components.daisy.Cache
#### publicKey
Public key for node
#### privateKey
Private key for node
#### checkInMem(store: str, nodeID: str)
Check if parameters or keys are loaded for node of nodeID
* **Parameters:**
**store** (*str*) Whether to check loaded keys or parameters
#### decrypt(data, nodeID: str)
Decrypt bytes and return either str or dict (TODO: Check whether to msgpack load)
#### encrypt(data, nodeID: str, isDict: bool = True)
Do Fernet encryption
data
: Either bytes or dict to encrypt
isDict: bool
: Whether data is a dictionary
#### genKeyPair(paramsOverride=False, setSelf: bool = True)
Generate public and private keys from self.params (TODO: Gen from passed params)
paramsOverride
: False or parameters to use (TODO)
setSelf: bool
: Whether to set self.privateKey and self.publicKey
#### genParams()
Generate Diffie Hellman parameters
#### getParamsBytes()
Get bytes encoded from self.parameters (TODO: Encode from store)
#### getRecord(store: str, key: str)
Get record from store: store with key: key
#### getSalt()
Get random salt
#### initStore(store: str)
Initialize store: store
#### keyDerive(pubKey: bytes, salt: bytes, nodeID: str, params: bytes)
Derive shared key using Diffie Hellman
pubKey: bytes
: Public key
nodeID: str
: PierMesh node ID
params: bytes
: Encryption parameters
#### loadParamBytes(pemBytes: bytes)
Load parameters to self.params from given bytes (TODO: Load from store)
#### loadRecordToMem(store: str, nodeID: str)
Load record of nodeID from store to either keys or pameters