status-im/status-go

View on GitHub
protocol/message_builder.go

Summary

Maintainability
A
0 mins
Test Coverage
B
82%
package protocol

import (
    "crypto/ecdsa"

    "github.com/status-im/status-go/eth-node/crypto"
    "github.com/status-im/status-go/eth-node/types"
    "github.com/status-im/status-go/protocol/common"
    "github.com/status-im/status-go/protocol/identity/alias"
    "github.com/status-im/status-go/protocol/identity/identicon"
)

func extendMessageFromChat(message *common.Message, chat *Chat, key *ecdsa.PublicKey, timesource common.TimeSource) error {
    clock, timestamp := chat.NextClockAndTimestamp(timesource)

    message.LocalChatID = chat.ID
    message.Clock = clock
    message.Timestamp = timestamp
    message.From = types.EncodeHex(crypto.FromECDSAPub(key))
    message.SigPubKey = key
    message.WhisperTimestamp = timestamp
    message.Seen = true
    message.OutgoingStatus = common.OutgoingStatusSending

    identicon, err := identicon.GenerateBase64(message.From)
    if err != nil {
        return err
    }

    message.Identicon = identicon

    alias, err := alias.GenerateFromPublicKeyString(message.From)
    if err != nil {
        return err
    }

    message.Alias = alias
    return nil

}

func extendPinMessageFromChat(message *common.PinMessage, chat *Chat, key *ecdsa.PublicKey, timesource common.TimeSource) error {
    clock, timestamp := chat.NextClockAndTimestamp(timesource)

    message.LocalChatID = chat.ID
    message.Clock = clock
    message.From = types.EncodeHex(crypto.FromECDSAPub(key))
    message.SigPubKey = key
    message.WhisperTimestamp = timestamp

    identicon, err := identicon.GenerateBase64(message.From)
    if err != nil {
        return err
    }

    message.Identicon = identicon

    alias, err := alias.GenerateFromPublicKeyString(message.From)
    if err != nil {
        return err
    }

    message.Alias = alias
    return nil

}