piermesh/docs/Cryptography/WhaleSong.md

130 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<a id="whalesong"></a>
# WhaleSong
### *class* Cryptography.WhaleSong.Transport(cache, nodeNickname, daisyCryptography, psk)
[🔗 Source](https://git.utopic.work/PierMesh/piermesh/src/branch/main/Cryptography/WhaleSong.py)
#### 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:**
[Daisy.Cache.Cache](/PierMesh/piermesh/src/branch/main/docs/Daisy/Cache.md#Daisy.Cache.Cache)
#### publicKey
Public key for node
#### privateKey
Private key for node
#### daisyCryptography
Record cryptography reference
* **Type:**
[Daisy.CryptographyUtil.SteelPetal](/PierMesh/piermesh/src/branch/main/docs/Daisy/CryptographyUtil.md#Daisy.CryptographyUtil.SteelPetal)
#### addPeerEphemeralKey(onodeID, peerEphemeralKey: bytes)
Add a peer nodes epehemeral key for session encryption
onodeID
: Node identifier
peerEphemeralKey: bytes
: Serialized ephemeral key
#### addPublickey(onodeID, publicKey, forSelf: bool = False)
Add a public key for a given node including this one
onodeID
: Node identifier
publicKey
: Public key to add
forSelf: bool
: Whether to add key for this node
#### decrypt(data, onodeID: str, nonce, tag)
Decrypt bytes and return either str or dict depending on result
onodeID: str
: Node identifier
nonce
: Encryption nonce
tag
: Encryption tag
#### encrypt(data, nodeID: str, isDict: bool = True, pskEncrypt=False)
Encrypt given data with AES GCM
data
: Either bytes or dict to encrypt
isDict: bool
: Whether data is a dictionary
pskEncrypt: bool
: Whether to encrypt with pre-shared key
#### genOurEphemeralKey(onodeID)
Generate epehemeral key for session encryption with given node
#### genStaticKey(onodeID)
Generate static key for session encryption with given node
#### generateSessionKey(onodeID)
Generate session key for transport encryption
onodeID
: Node identifier
#### getRecord(store: str, key: str, ephemeral=False)
Get record from store: store with key: key
#### initStore(store: str)
Initialize store: store
#### kdf(bytesX)
Key derivation function
#### sessionSetup(onodeID, peerEphemeralKey: bytes)
Set up transport encryption session
onodeID
: Node identifier
peerEphemeralKey: bytes
: Serialized ephemeral key