130 lines
2.3 KiB
Markdown
130 lines
2.3 KiB
Markdown
<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 node’s 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
|