Documentation ¶
Index ¶
- func LoadRelationship(kv *versioned.KV, t session.RelationshipType, myID, partnerID *id.ID, ...) (*relationship, error)
- func NewRelationship(kv *versioned.KV, t session.RelationshipType, myID, partnerID *id.ID, ...) *relationship
- type ConnectionFp
- type Manager
- func LoadManager(kv *versioned.KV, myID, partnerID *id.ID, cyHandler session.CypherHandler, ...) (Manager, error)
- func NewManager(kv *versioned.KV, myID, partnerID *id.ID, myPrivKey, partnerPubKey *cyclic.Int, ...) Manager
- func NewTestManager(partnerId *id.ID, partnerPubKey, myPrivKey *cyclic.Int, t *testing.T) Manager
- type ServiceHandler
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func LoadRelationship ¶
func LoadRelationship(kv *versioned.KV, t session.RelationshipType, myID, partnerID *id.ID, cyHandler session.CypherHandler, grp *cyclic.Group, rng *fastRNG.StreamGenerator) (*relationship, error)
todo - doscstring
func NewRelationship ¶
func NewRelationship(kv *versioned.KV, t session.RelationshipType, myID, partnerID *id.ID, myOriginPrivateKey, partnerOriginPublicKey *cyclic.Int, originMySIDHPrivKey *sidh.PrivateKey, originPartnerSIDHPubKey *sidh.PublicKey, initialParams session.Params, cyHandler session.CypherHandler, grp *cyclic.Group, rng *fastRNG.StreamGenerator) *relationship
fixme - this is weird becasue it creates the relationsip and the session. Should be refactored to create an empty relationship, with a second call adding the session todo - doscstring
Types ¶
type ConnectionFp ¶
type ConnectionFp struct {
// contains filtered or unexported fields
}
ConnectionFp represents a Partner connection fingerprint
func (ConnectionFp) Bytes ¶
func (c ConnectionFp) Bytes() []byte
func (ConnectionFp) String ¶
func (c ConnectionFp) String() string
type Manager ¶
type Manager interface { // PartnerId returns the ID of the E2E partner PartnerId() *id.ID // MyId returns my ID used for the E2E relationship MyId() *id.ID // MyRootPrivateKey returns first private key in the DAG MyRootPrivateKey() *cyclic.Int // PartnerRootPublicKey returns the partner's first public key in the DAG PartnerRootPublicKey() *cyclic.Int // SendRelationshipFingerprint returns the fingerprint of the send session SendRelationshipFingerprint() []byte // ReceiveRelationshipFingerprint returns the fingerprint of the receive session ReceiveRelationshipFingerprint() []byte // ConnectionFingerprint returns a unique fingerprint for an E2E relationship in string format ConnectionFingerprint() ConnectionFp // Contact returns the contact of the E2E partner Contact() contact.Contact // PopSendCypher returns the key which is most likely to be successful for sending PopSendCypher() (session.Cypher, error) // PopRekeyCypher returns a key which should be used for rekeying PopRekeyCypher() (session.Cypher, error) // NewReceiveSession creates a new Receive session using the latest private key // this user has sent and the new public key received from the partner. If the // session already exists, then it will not be overwritten and the extant // session will be returned with the bool set to true denoting a duplicate. This // allows for support of duplicate key exchange triggering. NewReceiveSession(partnerPubKey *cyclic.Int, partnerSIDHPubKey *sidh.PublicKey, e2eParams session.Params, source *session.Session) (*session.Session, bool) // NewSendSession creates a new Send session using the latest public key // received from the partner and a new private key for the user. Passing in a // private key is optional. A private key will be generated if none is passed. NewSendSession(myDHPrivKey *cyclic.Int, mySIDHPrivateKey *sidh.PrivateKey, e2eParams session.Params, source *session.Session) *session.Session // GetSendSession gets the Send session of the passed ID. Returns nil if no session is found. GetSendSession(sid session.SessionID) *session.Session //GetReceiveSession gets the Receive session of the passed ID. Returns nil if no session is found. GetReceiveSession(sid session.SessionID) *session.Session // Confirm sets the passed session ID as confirmed and cleans up old sessions Confirm(sid session.SessionID) error // TriggerNegotiations returns a list of session that need rekeys TriggerNegotiations() []*session.Session // MakeService Returns a service interface with the // appropriate identifier for who is being sent to. Will populate // the metadata with the partner MakeService(tag string) message.Service // Delete removes the relationship between the partner // and deletes the Send and Receive sessions. This includes the // sessions and the key vectors Delete() error }
Manager create and manages both E2E send and receive sessions using the passed cryptographic data
func LoadManager ¶
func LoadManager(kv *versioned.KV, myID, partnerID *id.ID, cyHandler session.CypherHandler, grp *cyclic.Group, rng *fastRNG.StreamGenerator) (Manager, error)
LoadManager loads a relationship and all buffers and sessions from disk
func NewManager ¶
func NewManager(kv *versioned.KV, myID, partnerID *id.ID, myPrivKey, partnerPubKey *cyclic.Int, mySIDHPrivKey *sidh.PrivateKey, partnerSIDHPubKey *sidh.PublicKey, sendParams, receiveParams session.Params, cyHandler session.CypherHandler, grp *cyclic.Group, rng *fastRNG.StreamGenerator) Manager
NewManager creates the relationship and its first Send and Receive sessions.
func NewTestManager ¶
NewTestManager allows creation of a Manager interface object for testing purposes Backwards compatibility must be maintained if you make changes here Currently used for: Group chat testing