Пример #1
0
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
}
Пример #2
0
// 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
}