func getSessionKey(ss session.Store, hash string) (*uid.KeyEntry, error) { jsn, privKey, err := ss.GetSessionKey(hash) if err != nil { return nil, err } ke, err := uid.NewJSONKeyEntry([]byte(jsn)) if err != nil { return nil, err } if privKey != "" { if err := ke.SetPrivateKey(privKey); err != nil { return nil, err } } return ke, err }
// GetSessionState retrieves the session state for sessionStateKey from keyDB. func (keyDB *KeyDB) GetSessionState(sessionStateKey string) ( *session.State, error, ) { if sessionStateKey == "" { return nil, log.Error("keydb: sessionStateKey must be defined") } var ( senderSessionCount int64 senderMessageCount int64 maxRecipientCount int64 recipientTemp string senderSessionPub string nextSenderSessionPub string nextRecipientSessionPubSeen string nymAddress string keyInitSession int64 ) err := keyDB.getSessionStateQuery.QueryRow(sessionStateKey).Scan(&senderSessionCount, &senderMessageCount, &maxRecipientCount, &recipientTemp, &senderSessionPub, &nextSenderSessionPub, &nextRecipientSessionPubSeen, &nymAddress, &keyInitSession) switch { case err == sql.ErrNoRows: return nil, nil case err != nil: return nil, log.Error(err) } rt, err := uid.NewJSONKeyEntry([]byte(recipientTemp)) if err != nil { return nil, err } ssp, err := uid.NewJSONKeyEntry([]byte(senderSessionPub)) if err != nil { return nil, err } var ( nssp *uid.KeyEntry nrsps *uid.KeyEntry ) if nextSenderSessionPub != "" { nssp, err = uid.NewJSONKeyEntry([]byte(nextSenderSessionPub)) if err != nil { return nil, err } } if nextRecipientSessionPubSeen != "" { nrsps, err = uid.NewJSONKeyEntry([]byte(nextRecipientSessionPubSeen)) if err != nil { return nil, err } } ss := &session.State{ SenderSessionCount: uint64(senderSessionCount), SenderMessageCount: uint64(senderMessageCount), MaxRecipientCount: uint64(maxRecipientCount), RecipientTemp: *rt, SenderSessionPub: *ssp, NextSenderSessionPub: nssp, NextRecipientSessionPubSeen: nrsps, NymAddress: nymAddress, } if keyInitSession > 0 { ss.KeyInitSession = true } return ss, nil }