This commit is contained in:
number571 2024-01-18 10:01:22 +07:00
parent e38bac153b
commit fff45a5398
63 changed files with 1938 additions and 2110 deletions

View File

@ -12,6 +12,7 @@
- Update `cmd/hidden_lake/service`: remove 'share' option
- Update `cmd/hidden_lake/applications/messenger`: append 'share' option
- Update `cmd/hidden_lake/applications/messenger`: append copy hash of chat user, copy own hash from settings
- Update `cmd/hidden_lake/applications/messenger`: replace senderIDs -> pseudonyms
### CHANGES
@ -22,6 +23,7 @@
- Update `examples/anon_messenger/default`: remove middel_hls
- Update `examples/anon_messenger/routing`: append routing example
- Update `cmd/hidden_lake/applications/messenger`: frield 'alias_name' is now can be void
- Update `examples`: delete _docker examples
### BUG FIXES

View File

@ -7,6 +7,8 @@
5. Append example of use functions (godoc)
6. Append errors (as traffic/database) for all interface methods
7. Append Batch's to database
8. Proof asymmetric keys with PoW+Salt
9. Nicknames in HLM
### Tests

View File

@ -5,6 +5,7 @@ logging:
- warn
- erro
language: ENG
pseudonym: "Alice"
address:
interface: :9591
incoming: :9592

View File

@ -5,6 +5,7 @@ logging:
- warn
- erro
language: ENG
pseudonym: "Alice"
address:
interface: 127.0.0.1:9591
incoming: 127.0.0.1:9592

File diff suppressed because it is too large Load Diff

View File

@ -6,6 +6,7 @@ import (
"os"
"sync"
"github.com/number571/go-peer/cmd/hidden_lake/applications/messenger/internal/utils"
"github.com/number571/go-peer/internal/language"
logger "github.com/number571/go-peer/internal/logger/std"
"github.com/number571/go-peer/pkg/encoding"
@ -28,6 +29,7 @@ type SConfig struct {
FLogging []string `yaml:"logging,omitempty"`
FLanguage string `yaml:"language,omitempty"`
FShare bool `yaml:"share,omitempty"`
FPseudonym string `yaml:"pseudonym"`
FAddress *SAddress `yaml:"address"`
FConnection string `yaml:"connection"`
FStorageKey string `yaml:"storage_key,omitempty"`
@ -101,6 +103,7 @@ func (p *SConfigSettings) GetWorkSizeBits() uint64 {
func (p *SConfig) isValid() bool {
return true &&
utils.PseudonymIsValid(p.FPseudonym) &&
p.FSettings.FMessagesCapacity != 0
}
@ -170,6 +173,13 @@ func (p *SConfig) GetShare() bool {
return p.FShare
}
func (p *SConfig) GetPseudonym() string {
p.fMutex.Lock()
defer p.fMutex.Unlock()
return p.FPseudonym
}
func (p *SConfig) GetAddress() IAddress {
return p.FAddress
}

View File

@ -21,6 +21,7 @@ logging:
- erro
language: RUS
share: true
pseudonym: '%s'
address:
interface: '%s'
incoming: '%s'
@ -30,6 +31,7 @@ storage_key: '%s'`
)
const (
tcPseudonym = "Alice"
tcAddressInterface = "address_interface"
tcAddressIncoming = "address_incoming"
tcAddressPPROF = "address_pprof"
@ -43,6 +45,7 @@ func testNewConfigString() string {
return fmt.Sprintf(
tcConfigTemplate,
tcMessagesCapacity,
tcPseudonym,
tcAddressInterface,
tcAddressIncoming,
tcAddressPPROF,
@ -87,6 +90,11 @@ func TestConfig(t *testing.T) {
return
}
if cfg.GetPseudonym() != tcPseudonym {
t.Error("pseudonym is invalid")
return
}
if cfg.GetShare() != true {
t.Error("share is invalid")
return

View File

@ -31,6 +31,29 @@ func newEditor(pCfg IConfig) IEditor {
}
}
func (p *sEditor) UpdatePseudonym(pPseudonym string) error {
p.fMutex.Lock()
defer p.fMutex.Unlock()
filepath := p.fConfig.fFilepath
icfg, err := LoadConfig(filepath)
if err != nil {
return fmt.Errorf("load config (update language): %w", err)
}
cfg := icfg.(*SConfig)
cfg.FPseudonym = pPseudonym
if err := os.WriteFile(filepath, encoding.SerializeYAML(cfg), 0o644); err != nil {
return fmt.Errorf("write config (update language): %w", err)
}
p.fConfig.fMutex.Lock()
defer p.fConfig.fMutex.Unlock()
p.fConfig.FPseudonym = pPseudonym
return nil
}
func (p *sEditor) UpdateLanguage(pLang language.ILanguage) error {
p.fMutex.Lock()
defer p.fMutex.Unlock()

View File

@ -24,6 +24,7 @@ func (p *tsConfig) GetSettings() IConfigSettings { return nil }
func (p *tsConfig) GetLanguage() language.ILanguage { return 0 }
func (p *tsConfig) GetLogging() logger.ILogging { return nil }
func (p *tsConfig) GetShare() bool { return false }
func (p *tsConfig) GetPseudonym() string { return "" }
func (p *tsConfig) GetAddress() IAddress { return nil }
func (p *tsConfig) GetNetworkKey() string { return "" }
func (p *tsConfig) GetConnection() string { return "" }
@ -53,42 +54,6 @@ func testPanicEditor(t *testing.T, n int) {
}
}
func TestEditor(t *testing.T) {
t.Parallel()
configFile := fmt.Sprintf(tcConfigFileTemplate, 2)
defer os.Remove(configFile)
testConfigDefaultInit(configFile)
cfg, err := LoadConfig(configFile)
if err != nil {
t.Error(err)
return
}
wrapper := NewWrapper(cfg)
config := wrapper.GetConfig().(*SConfig)
editor := wrapper.GetEditor()
config.fFilepath = random.NewStdPRNG().GetString(32)
res, err := language.ToILanguage("RUS")
if err != nil {
t.Error(err)
return
}
if err := editor.UpdateLanguage(res); err == nil {
t.Error("success update network key with incorrect filepath")
return
}
if err := editor.UpdateSecretKeys(map[string]string{"Alice": "123"}); err == nil {
t.Error("success update friends with incorrect filepath")
return
}
}
func TestIncorrectFilepathEditor(t *testing.T) {
t.Parallel()
@ -119,6 +84,11 @@ func TestIncorrectFilepathEditor(t *testing.T) {
return
}
if err := editor.UpdatePseudonym("test"); err == nil {
t.Error("success update pseudonym with incorrect filepath")
return
}
if err := editor.UpdateSecretKeys(map[string]string{"Alice": "123"}); err == nil {
t.Error("success update friends with incorrect filepath")
return

View File

@ -4,6 +4,7 @@ import (
"os"
logger "github.com/number571/go-peer/internal/logger/std"
"github.com/number571/go-peer/pkg/crypto/random"
hlm_settings "github.com/number571/go-peer/cmd/hidden_lake/applications/messenger/pkg/settings"
hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
@ -18,9 +19,10 @@ func InitConfig(cfgPath string, initCfg *SConfig) (IConfig, error) {
FSettings: &SConfigSettings{
FMessagesCapacity: hlm_settings.CDefaultMessagesCapacity,
},
FLogging: []string{logger.CLogInfo, logger.CLogWarn, logger.CLogErro},
FLanguage: hlm_settings.CDefaultLanguage,
FShare: hlm_settings.CDefaultShare,
FLogging: []string{logger.CLogInfo, logger.CLogWarn, logger.CLogErro},
FLanguage: hlm_settings.CDefaultLanguage,
FShare: hlm_settings.CDefaultShare,
FPseudonym: random.NewStdPRNG().GetString(hlm_settings.CPseudonymSize),
FAddress: &SAddress{
FInterface: hlm_settings.CDefaultInterfaceAddress,
FIncoming: hlm_settings.CDefaultIncomingAddress,

View File

@ -11,6 +11,7 @@ type IWrapper interface {
}
type IEditor interface {
UpdatePseudonym(string) error
UpdateLanguage(language.ILanguage) error
UpdateSecretKeys(map[string]string) error
}
@ -18,6 +19,7 @@ type IEditor interface {
type IConfig interface {
GetSettings() IConfigSettings
GetShare() bool
GetPseudonym() string
GetAddress() IAddress
GetLogging() logger.ILogging
GetConnection() string

View File

@ -5,7 +5,9 @@ import (
"os"
"testing"
"github.com/number571/go-peer/cmd/hidden_lake/applications/messenger/pkg/settings"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/crypto/random"
"github.com/number571/go-peer/pkg/storage"
testutils "github.com/number571/go-peer/test/utils"
)
@ -33,7 +35,8 @@ func TestDatabase(t *testing.T) {
friend := asymmetric.LoadRSAPubKey(testutils.TgPubKeys[1])
rel := NewRelation(iam, friend)
err1 := db.Push(rel, NewMessage(true, friend.GetHasher().ToBytes(), []byte(testutils.TcBody)))
pseudonym := random.NewStdPRNG().GetString(settings.CPseudonymSize)
err1 := db.Push(rel, NewMessage(true, pseudonym, []byte(testutils.TcBody)))
if err1 != nil {
t.Error(err1)
return
@ -61,8 +64,8 @@ func TestDatabase(t *testing.T) {
return
}
if msgs[0].GetSenderID() != friend.GetHasher().ToString() {
t.Error("msgs[0].GetSenderID() != friend.GetHasher().ToString()")
if msgs[0].GetPseudonym() != pseudonym {
t.Error("msgs[0].GetSenderID() != pseudonym")
return
}

View File

@ -4,14 +4,15 @@ import (
"bytes"
"time"
"github.com/number571/go-peer/pkg/crypto/hashing"
"github.com/number571/go-peer/cmd/hidden_lake/applications/messenger/internal/utils"
"github.com/number571/go-peer/cmd/hidden_lake/applications/messenger/pkg/settings"
"github.com/number571/go-peer/pkg/encoding"
)
const (
cIsIncomingSize = 1
cTimestampSize = encoding.CSizeUint64
cSenderIDSize = hashing.CSHA256Size
cPseudonymSize = settings.CPseudonymSize
)
var (
@ -21,24 +22,26 @@ var (
type sMessage struct {
fIsIncoming bool
fTimestamp uint64
fSenderID []byte
fPseudonym []byte
fMessage []byte
}
func NewMessage(pIsIncoming bool, pSenderID []byte, pMessage []byte) IMessage {
if len(pSenderID) != cSenderIDSize {
panic("len(pSenderID) != cSenderIDSize")
func NewMessage(pIsIncoming bool, pPseudonym string, pMessage []byte) IMessage {
if !utils.PseudonymIsValid(pPseudonym) {
panic("!utils.PseudonymIsValid(pPseudonym)")
}
pseudonym := make([]byte, cPseudonymSize)
copy(pseudonym, []byte(pPseudonym))
return &sMessage{
fIsIncoming: pIsIncoming,
fTimestamp: uint64(time.Now().Unix()),
fSenderID: pSenderID,
fPseudonym: pseudonym,
fMessage: pMessage,
}
}
func LoadMessage(pMsgBytes []byte) IMessage {
if len(pMsgBytes) < (cIsIncomingSize + cTimestampSize + cSenderIDSize) {
if len(pMsgBytes) < (cIsIncomingSize + cTimestampSize + cPseudonymSize) {
return nil
}
@ -53,13 +56,13 @@ func LoadMessage(pMsgBytes []byte) IMessage {
return &sMessage{
fIsIncoming: isIncoming,
fTimestamp: encoding.BytesToUint64(blockTimestamp),
fSenderID: pMsgBytes[cIsIncomingSize+cTimestampSize : cIsIncomingSize+cTimestampSize+cSenderIDSize],
fMessage: pMsgBytes[cIsIncomingSize+cTimestampSize+cSenderIDSize:],
fPseudonym: pMsgBytes[cIsIncomingSize+cTimestampSize : cIsIncomingSize+cTimestampSize+cPseudonymSize],
fMessage: pMsgBytes[cIsIncomingSize+cTimestampSize+cPseudonymSize:],
}
}
func (p *sMessage) GetSenderID() string {
return encoding.HexEncode(p.fSenderID)
func (p *sMessage) GetPseudonym() string {
return string(bytes.TrimRight(p.fPseudonym, "\x00"))
}
func (p *sMessage) IsIncoming() bool {
@ -84,7 +87,7 @@ func (p *sMessage) ToBytes() []byte {
[][]byte{
{firstByte},
blockTimestamp[:],
p.fSenderID,
p.fPseudonym,
[]byte(p.fMessage),
},
[]byte{},

View File

@ -21,7 +21,7 @@ type IRelation interface {
type IMessage interface {
IsIncoming() bool
GetSenderID() string
GetPseudonym() string
GetTimestamp() string
GetMessage() []byte
ToBytes() []byte

View File

@ -86,13 +86,12 @@ func FriendsChatPage(pLogger logger.ILogger, pCfg config.IConfig, pDB database.I
// secret key can be = nil
secretKey := pCfg.GetSecretKeys()[aliasName]
if err := sendMessage(client, myPubKey, pDB, secretKey, aliasName, msgBytes); err != nil {
if err := sendMessage(pCfg, client, myPubKey, pDB, secretKey, aliasName, msgBytes); err != nil {
ErrorPage(pLogger, pCfg, "send_message", "push message to network")(pW, pR)
return
}
senderID := myPubKey.GetHasher().ToBytes()
dbMsg := database.NewMessage(false, senderID, msgBytes)
dbMsg := database.NewMessage(false, pCfg.GetPseudonym(), msgBytes)
if err := pDB.Push(rel, dbMsg); err != nil {
ErrorPage(pLogger, pCfg, "push_message", "add message to database")(pW, pR)
return
@ -133,7 +132,7 @@ func FriendsChatPage(pLogger logger.ILogger, pCfg config.IConfig, pDB database.I
FIsIncoming: msg.IsIncoming(),
FMessageInfo: getMessageInfo(
false,
msg.GetSenderID(),
msg.GetPseudonym(),
msg.GetMessage(),
msg.GetTimestamp(),
),
@ -197,6 +196,7 @@ func getUploadFile(pR *http.Request) (string, []byte, error) {
}
func sendMessage(
pCfg config.IConfig,
pClient client.IClient,
pMyPubKey asymmetric.IPubKey,
pDB database.IKVDatabase,
@ -214,32 +214,30 @@ func sendMessage(
}
requestID := random.NewStdPRNG().GetString(hlm_settings.CRequestIDSize)
requestIDBytes := []byte(requestID)
if ok, err := pDB.PushRequestID(requestIDBytes); !ok && err != nil {
if ok, err := pDB.PushRequestID([]byte(requestID)); !ok && err != nil {
return err
}
authKey := keybuilder.NewKeyBuilder(1, []byte(hlm_settings.CAuthSalt)).Build(pSecretKey)
cipherKey := keybuilder.NewKeyBuilder(1, []byte(hlm_settings.CCipherSalt)).Build(pSecretKey)
hash := hashing.NewHMACSHA256Hasher(
authKey,
bytes.Join(
[][]byte{
pMyPubKey.GetHasher().ToBytes(),
requestIDBytes,
[]byte(pCfg.GetPseudonym()),
[]byte(requestID),
pMsgBytes,
},
[]byte{},
),
).ToBytes()
cipherKey := keybuilder.NewKeyBuilder(1, []byte(hlm_settings.CCipherSalt)).Build(pSecretKey)
return pClient.BroadcastRequest(
pAliasName,
hlm_request.NewPushRequest(
pMyPubKey,
requestID,
pCfg.GetPseudonym(),
symmetric.NewAESCipher(cipherKey).EncryptBytes(
bytes.Join([][]byte{hash, pMsgBytes}, []byte{}),
),

View File

@ -18,7 +18,6 @@ import (
"github.com/number571/go-peer/pkg/crypto/hashing"
"github.com/number571/go-peer/pkg/crypto/keybuilder"
"github.com/number571/go-peer/pkg/crypto/symmetric"
"github.com/number571/go-peer/pkg/encoding"
"github.com/number571/go-peer/pkg/logger"
"github.com/number571/go-peer/pkg/utils"
@ -39,10 +38,10 @@ func HandleIncomigHTTP(pLogger logger.ILogger, pCfg config.IConfig, pDB database
return
}
senderID := encoding.HexDecode(pR.Header.Get(hlm_settings.CHeaderSenderId))
if len(senderID) != hashing.CSHA256Size {
pLogger.PushWarn(logBuilder.WithMessage("get_sender_id"))
api.Response(pW, http.StatusUnauthorized, "failed: get sender id from messenger")
senderPseudonym := pR.Header.Get(hlm_settings.CHeaderPseudonym)
if !hlm_utils.PseudonymIsValid(senderPseudonym) {
pLogger.PushWarn(logBuilder.WithMessage("get_sender_pseudonym"))
api.Response(pW, http.StatusUnauthorized, "failed: get pseudonym from messenger")
return
}
@ -77,12 +76,12 @@ func HandleIncomigHTTP(pLogger logger.ILogger, pCfg config.IConfig, pDB database
return
}
if err := shareMessage(pCfg, fPubKey, requestID, encMsgBytes); err != nil {
if err := shareMessage(pCfg, fPubKey, requestID, senderPseudonym, encMsgBytes); err != nil {
pLogger.PushWarn(logBuilder.WithMessage("share_message"))
// continue
}
rawMsgBytes, err := decryptMsgBytes(pCfg, fPubKey, senderID, []byte(requestID), encMsgBytes)
rawMsgBytes, err := decryptMsgBytes(pCfg, fPubKey, requestID, senderPseudonym, encMsgBytes)
if err != nil {
pLogger.PushWarn(logBuilder.WithMessage("decrypt_message"))
api.Response(pW, http.StatusConflict, "failed: decrypt message")
@ -103,7 +102,7 @@ func HandleIncomigHTTP(pLogger logger.ILogger, pCfg config.IConfig, pDB database
}
rel := database.NewRelation(myPubKey, fPubKey)
dbMsg := database.NewMessage(true, senderID, rawMsgBytes)
dbMsg := database.NewMessage(true, senderPseudonym, rawMsgBytes)
if err := pDB.Push(rel, dbMsg); err != nil {
pLogger.PushErro(logBuilder.WithMessage("push_message"))
@ -115,7 +114,7 @@ func HandleIncomigHTTP(pLogger logger.ILogger, pCfg config.IConfig, pDB database
FAddress: fPubKey.GetHasher().ToString(),
FMessageInfo: getMessageInfo(
true,
dbMsg.GetSenderID(),
dbMsg.GetPseudonym(),
dbMsg.GetMessage(),
dbMsg.GetTimestamp(),
),
@ -130,6 +129,7 @@ func shareMessage(
pCfg config.IConfig,
pSender asymmetric.IPubKey,
pRequestID string,
senderPseudonym string,
pBody []byte,
) error {
if !pCfg.GetShare() {
@ -160,7 +160,7 @@ func shareMessage(
chBufErr <- hlsClient.BroadcastRequest(
aliasName,
hlm_request.NewPushRequest(pSender, pRequestID, pBody),
hlm_request.NewPushRequest(pSender, pRequestID, senderPseudonym, pBody),
)
}(aliasName, pubKey)
}
@ -176,7 +176,13 @@ func shareMessage(
return utils.MergeErrors(errList...)
}
func decryptMsgBytes(pCfg config.IConfig, pPubKey asymmetric.IPubKey, senderID, requestID, encMsgBytes []byte) ([]byte, error) {
func decryptMsgBytes(
pCfg config.IConfig,
pPubKey asymmetric.IPubKey,
requestID string,
senderPseudonym string,
encMsgBytes []byte,
) ([]byte, error) {
aliasName := ""
friends, err := getClient(pCfg).GetFriends()
@ -206,7 +212,7 @@ func decryptMsgBytes(pCfg config.IConfig, pPubKey asymmetric.IPubKey, senderID,
msgBytes := decBytes[hashing.CSHA256Size:]
authBytes := bytes.Join([][]byte{senderID, requestID, msgBytes}, []byte{})
authBytes := bytes.Join([][]byte{[]byte(senderPseudonym), []byte(requestID), msgBytes}, []byte{})
newHash := hashing.NewHMACSHA256Hasher(authKey, authBytes).ToBytes()
if !bytes.Equal(decBytes[:hashing.CSHA256Size], newHash) {
return nil, errors.New("failed auth bytes")
@ -237,7 +243,7 @@ func isValidMsgBytes(rawMsgBytes []byte) error {
}
}
func getMessageInfo(pEscape bool, pSenderID string, pRawMsgBytes []byte, pTimestamp string) hlm_utils.SMessageInfo {
func getMessageInfo(pEscape bool, pPseudonym string, pRawMsgBytes []byte, pTimestamp string) hlm_utils.SMessageInfo {
switch {
case isText(pRawMsgBytes):
msgData := unwrapText(pRawMsgBytes, pEscape)
@ -245,7 +251,7 @@ func getMessageInfo(pEscape bool, pSenderID string, pRawMsgBytes []byte, pTimest
panic("message data = nil")
}
return hlm_utils.SMessageInfo{
FSenderID: pSenderID,
FPseudonym: pPseudonym,
FMessage: msgData,
FTimestamp: pTimestamp,
}
@ -255,7 +261,7 @@ func getMessageInfo(pEscape bool, pSenderID string, pRawMsgBytes []byte, pTimest
panic("filename = nil OR message data = nil")
}
return hlm_utils.SMessageInfo{
FSenderID: pSenderID,
FPseudonym: pPseudonym,
FFileName: filename,
FMessage: msgData,
FTimestamp: pTimestamp,

View File

@ -8,6 +8,7 @@ import (
"strings"
"github.com/number571/go-peer/cmd/hidden_lake/applications/messenger/internal/config"
"github.com/number571/go-peer/cmd/hidden_lake/applications/messenger/internal/utils"
hlm_settings "github.com/number571/go-peer/cmd/hidden_lake/applications/messenger/pkg/settings"
"github.com/number571/go-peer/cmd/hidden_lake/applications/messenger/web"
"github.com/number571/go-peer/internal/language"
@ -25,6 +26,7 @@ type sConnection struct {
type sSettings struct {
*sTemplate
FPseudonym string
FNetworkKey string
FPublicKey string
FPublicKeyHash string
@ -60,16 +62,29 @@ func SettingsPage(pLogger logger.ILogger, pWrapper config.IWrapper) http.Handler
return
}
case http.MethodPut:
lang := strings.TrimSpace(pR.FormValue("language"))
res, err := language.ToILanguage(lang)
strLang := strings.TrimSpace(pR.FormValue("language"))
ilang, err := language.ToILanguage(strLang)
if err != nil {
ErrorPage(pLogger, cfg, "to_language", "load unknown language")(pW, pR)
return
}
if err := cfgEditor.UpdateLanguage(res); err != nil {
ErrorPage(pLogger, cfg, "update_language", "update language")(pW, pR)
if ilang != cfg.GetLanguage() {
if err := cfgEditor.UpdateLanguage(ilang); err != nil {
ErrorPage(pLogger, cfg, "update_language", "update language")(pW, pR)
return
}
}
pseudonym := strings.TrimSpace(pR.FormValue("pseudonym"))
if !utils.PseudonymIsValid(pseudonym) {
ErrorPage(pLogger, cfg, "read_pseudonym", "pseudonym is invalid")(pW, pR)
return
}
if pseudonym != cfg.GetPseudonym() {
if err := cfgEditor.UpdatePseudonym(pseudonym); err != nil {
ErrorPage(pLogger, cfg, "update_pseudonym", "update pseudonym")(pW, pR)
return
}
}
case http.MethodPost:
host := strings.TrimSpace(pR.FormValue("host"))
port := strings.TrimSpace(pR.FormValue("port"))
@ -104,6 +119,7 @@ func SettingsPage(pLogger logger.ILogger, pWrapper config.IWrapper) http.Handler
result := new(sSettings)
result.sTemplate = getTemplate(cfg)
result.FPseudonym = cfg.GetPseudonym()
result.FPublicKey = myPubKey.ToString()
result.FPublicKeyHash = myPubKey.GetHasher().ToString()

View File

@ -6,15 +6,13 @@ import (
hlm_settings "github.com/number571/go-peer/cmd/hidden_lake/applications/messenger/pkg/settings"
hls_request "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/request"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/encoding"
)
func NewPushRequest(pPubKey asymmetric.IPubKey, pRequestID string, pBody []byte) hls_request.IRequest {
address := pPubKey.GetHasher().ToBytes()
func NewPushRequest(pPubKey asymmetric.IPubKey, pRequestID, pPseudonym string, pBody []byte) hls_request.IRequest {
return hls_request.NewRequest(http.MethodPost, hlm_settings.CTitlePattern, hlm_settings.CPushPath).
WithHead(map[string]string{
"Content-Type": "application/json",
hlm_settings.CHeaderSenderId: encoding.HexEncode(address),
hlm_settings.CHeaderPseudonym: pPseudonym,
hlm_settings.CHeaderRequestId: pRequestID,
}).
WithBody(pBody)

View File

@ -3,6 +3,6 @@ package utils
type SMessageInfo struct {
FFileName string `json:"filename"` // can be ""
FTimestamp string `json:"timestamp"`
FSenderID string `json:"sender_id"`
FPseudonym string `json:"pseudonym"`
FMessage string `json:"message"`
}

View File

@ -6,6 +6,7 @@ import (
"strings"
"unicode"
hlm_settings "github.com/number571/go-peer/cmd/hidden_lake/applications/messenger/pkg/settings"
"github.com/number571/go-peer/cmd/hidden_lake/applications/messenger/web"
)
@ -55,3 +56,9 @@ func HasNotWritableCharacters(pS string) bool {
}
return false
}
func PseudonymIsValid(pPseudonym string) bool {
return pPseudonym != "" &&
len(pPseudonym) <= hlm_settings.CPseudonymSize &&
!HasNotWritableCharacters(pPseudonym)
}

View File

@ -38,6 +38,7 @@ func TestApp(t *testing.T) {
FInterface: testutils.TgAddrs[57],
FIncoming: testutils.TgAddrs[58],
},
FPseudonym: "test",
})
if err != nil {
t.Error(err)

View File

@ -16,11 +16,12 @@ const (
)
const (
CHeaderSenderId = "Hl-Messenger-Sender-Id"
CHeaderPseudonym = "Hl-Messenger-Pseudonym"
CHeaderRequestId = "Hl-Messenger-Request-Id"
)
const (
CPseudonymSize = 32 // x >= 1 && x <= CPseudonymSize
CRequestIDSize = 44 // string chars (ASCII bytes)
)

View File

@ -28,14 +28,6 @@ Babilejo
}
</script>
<script type="text/javascript" defer>
function cutSenderID(senderID, n) {
let first = senderID.slice(0, n);
let last = senderID.substr(senderID.length - n);
return first + "..." + last;
}
</script>
<button id="copy_pubkey_hash" type="button" class="btn btn-info"
onclick="copy_pubkey_hash('{{.FAddress.FPubKeyHash}}');set_info_color('copy_pubkey_hash');">
{{if (eq .FLanguage 0)}}
@ -102,7 +94,7 @@ Babilejo
insertHTML = `
<div class="need-break-text d-flex flex-row justify-content-start mb-2 pt-1">
<div>
<p class="border border-secondary rounded text-center p-2 me-3 mb-1 text-white bg-dark">` + cutSenderID(messageInfo.sender_id, 8) + `</p>
<p class="border border-secondary rounded text-center p-2 me-3 mb-1 text-white bg-dark">` + messageInfo.pseudonym + `</p>
<p class="rounded text-center p-2 ms-3 mb-1 text-white bg-secondary">` + messageInfo.message + `</p>
<p class="small ms-3 mb-3 text-muted">` + messageInfo.timestamp + `</p>
</div>
@ -113,7 +105,7 @@ Babilejo
insertHTML = `
<div class="need-break-text d-flex flex-row justify-content-start mb-2 pt-1">
<div>
<p class="border border-secondary rounded text-center p-2 me-3 mb-1 text-white bg-dark">` + cutSenderID(messageInfo.sender_id, 8) + `</p>
<p class="border border-secondary rounded text-center p-2 me-3 mb-1 text-white bg-dark">` + messageInfo.pseudonym + `</p>
<button class="btn btn-muted text-dark w-100" onclick="downloadBase64File('` + messageInfo.message + `', '` + filename + `')">
` + filename + `
</button>
@ -167,16 +159,12 @@ Babilejo
<div>
{{if (eq .FMessageInfo.FFileName "")}}
<p class="border border-secondary rounded text-center p-2 me-3 mb-1 text-white bg-dark">
<script>
document.write(cutSenderID("{{.FMessageInfo.FSenderID}}", 8));
</script>
{{.FMessageInfo.FPseudonym}}
</p>
<p class="rounded text-center p-2 ms-3 mb-1 text-white bg-secondary">{{.FMessageInfo.FMessage}}</p>
{{else}}
<p class="border border-secondary rounded text-center p-2 me-3 mb-1 text-white bg-dark">
<script>
document.write(cutSenderID("{{.FMessageInfo.FSenderID}}", 8));
</script>
{{.FMessageInfo.FPseudonym}}
</p>
<button class="btn btn-muted text-center text-dark w-100"
onclick="downloadBase64File('{{.FMessageInfo.FMessage}}', '{{.FMessageInfo.FFileName}}')">
@ -191,16 +179,12 @@ Babilejo
<div>
{{if (eq .FMessageInfo.FFileName "")}}
<p class="border border-info rounded text-center p-2 me-3 mb-1 text-white bg-dark">
<script>
document.write(cutSenderID("{{.FMessageInfo.FSenderID}}", 8));
</script>
{{.FMessageInfo.FPseudonym}}
</p>
<p class="rounded text-center p-2 me-3 mb-1 text-white bg-info">{{.FMessageInfo.FMessage}}</p>
{{else}}
<p class="border border-info rounded text-center p-2 me-3 mb-1 text-white bg-dark">
<script>
document.write(cutSenderID("{{.FMessageInfo.FSenderID}}", 8));
</script>
{{.FMessageInfo.FPseudonym}}
</p>
<button class="btn btn-primary text-center text-white w-100"
onclick="downloadBase64File('{{.FMessageInfo.FMessage}}', '{{.FMessageInfo.FFileName}}')">

View File

@ -53,6 +53,28 @@ Agordoj
{{end}}
</h5>
<div class="card-body">
<form method="POST" action="/settings">
<!-- HTML does not support another methods (PUT, DELETE, etc...) -->
<input hidden name="method" value="PUT">
<div class="row mb-3">
<div class="col-md-8 w-75">
{{if (eq .FLanguage 0)}}
<input type="text" name="pseudonym" placeholder="Pseudonym" value="{{.FPseudonym}}"
class="text-center form-control bg-dark text-white w-100">
{{else if (eq .FLanguage 1)}}
<input type="text" name="pseudonym" placeholder="Псевдоним" value="{{.FPseudonym}}"
class="text-center form-control bg-dark text-white w-100">
{{else if (eq .FLanguage 2)}}
<input type="text" name="pseudonym" placeholder="Alnomo" value="{{.FPseudonym}}"
class="text-center form-control bg-dark text-white w-100">
{{end}}
</div>
<div class="col-md-4 w-25">
<input type="submit" name="submit" value="◀" class="btn btn-info w-100">
</div>
</div>
</form>
<form method="POST" action="/settings">
<!-- HTML does not support another methods (PUT, DELETE, etc...) -->
<input hidden name="method" value="PUT">

View File

@ -1,2 +0,0 @@
!*.yml
hls.yml

View File

@ -1,14 +0,0 @@
.PHONY: docker-default docker-run docker-clean
docker-default: docker-run
docker-run:
cp _mounted_node1/hls_copy.yml _mounted_node1/hls.yml
cp _mounted_node2/hls_copy.yml _mounted_node2/hls.yml
docker-compose build
docker-compose up
docker-clean:
rm -rf _mounted_node1/hls.db _mounted_node2/hls.db
rm -rf _mounted_node1/hlm.db _mounted_node2/hlm.db
rm -rf _mounted_middle/hlt.db
rm -f _mounted_node1/hls.yml _mounted_node2/hls.yml
docker-compose down
docker-compose rm -f

View File

@ -1,14 +0,0 @@
settings:
message_size_bytes: 8192
key_size_bits: 4096
work_size_bits: 22
messages_capacity: 2048
queue_period_ms: 5000
limit_void_size_bytes: 4096
logging:
- info
- warn
- erro
address:
tcp: traffic-middle:6581
http: traffic-middle:6582

View File

@ -1,13 +0,0 @@
settings:
messages_capacity: 2048
logging:
- info
- warn
- erro
language: ENG
address:
interface: messenger-node1:8080
incoming: messenger-node1:8081
connection: service-node1:8572
secret_keys:
Bob: abc

View File

@ -1,20 +0,0 @@
settings:
message_size_bytes: 8192
work_size_bits: 22
key_size_bits: 4096
queue_period_ms: 5000
limit_void_size_bytes: 4096
logging:
- info
- warn
- erro
address:
http: service-node1:8572
connections:
- traffic-middle:6581
services:
hidden-lake-messenger:
host: messenger-node1:8081
friends:
Bob: >-
PubKey{3082020A0282020100C17B6FA53983050B0339A0AB60D20A8A5FF5F8210564464C45CD2FAC2F266E8DDBA3B36C6F356AE57D1A71EED7B612C4CBC808557E4FCBAF6EDCFCECE37494144F09D65C7533109CE2F9B9B31D754453CA636A4463594F2C38303AE1B7BFFE738AC57805C782193B4854FF3F3FACA2C6BF9F75428DF6C583FBC29614C0B3329DF50F7B6399E1CC1F12BED77F29F885D7137ADFADE74A43451BB97A32F2301BE8EA866AFF34D6C7ED7FF1FAEA11FFB5B1034602B67E7918E42CA3D20E3E68AA700BE1B55A78C73A1D60D0A3DED3A6E5778C0BA68BAB9C345462131B9DC554D1A189066D649D7E167621815AB5B93905582BF19C28BCA6018E0CD205702968885E92A3B1E3DB37A25AC26FA4D2A47FF024ECD401F79FA353FEF2E4C2183C44D1D44B44938D32D8DBEDDAF5C87D042E4E9DAD671BE9C10DD8B3FE0A7C29AFE20843FE268C6A8F14949A04FF25A3EEE1EBE0027A99CE1C4DC561697297EA9FD9E23CF2E190B58CA385B66A235290A23CBB3856108EFFDD775601B3DE92C06C9EA2695C2D25D7897FD9D43C1AE10016E51C46C67F19AC84CD25F47DE2962A48030BCD8A0F14FFE4135A2893F62AC3E15CC61EC2E4ACADE0736C9A8DBC17D439248C42C5C0C6E08612414170FBE5AA6B52AE64E4CCDAE6FD3066BED5C200E07DBB0167D74A9FAD263AF253DFA870F44407F8EF3D9F12B8D910C4D803AD82ABA136F93F0203010001}

View File

@ -1 +0,0 @@
PrivKey{308209280201000282020100B752D35E81F4AEEC1A9C42EDED16E8924DD4D359663611DE2DCCE1A9611704A697B26254DD2AFA974A61A2CF94FAD016450FEF22F218CA970BFE41E6340CE3ABCBEE123E35A9DCDA6D23738DAC46AF8AC57902DDE7F41A03EB00A4818137E1BF4DFAE1EEDF8BB9E4363C15FD1C2278D86F2535BC3F395BE9A6CD690A5C852E6C35D6184BE7B9062AEE2AFC1A5AC81E7D21B7252A56C62BB5AC0BBAD36C7A4907C868704985E1754BAA3E8315E775A51B7BDC7ACB0D0675D29513D78CB05AB6119D3CA0A810A41F78150E3C5D9ACAFBE1533FC3533DECEC14387BF7478F6E229EB4CC312DC22436F4DB0D4CC308FB6EEA612F2F9E00239DE7902DE15889EE71370147C9696A5E7B022947ABB8AFBBC64F7840BED4CE69592CAF4085A1074475E365ED015048C89AE717BC259C42510F15F31DA3F9302EAD8F263B43D14886B2335A245C00871C041CBB683F1F047573F789673F9B11B6E6714C2A3360244757BB220C7952C6D3D9D65AA47511A63E2A59706B7A70846C930DCFB3D8CAFB3BD6F687CACF5A708692C26B363C80C460F54E59912D41D9BB359698051ABC049A0D0CFD7F23DC97DA940B1EDEAC6B84B194C8F8A56A46CE69EE7A0AEAA11C99508A368E64D27756AD0BA7146A6ADA3D5FA237B3B4EDDC84B71C27DE3A9F26A42197791C7DC09E2D7C4A7D8FCDC8F9A5D4983BB278FCE9513B1486D18F8560C3F31CC702030100010282020071714CA16013F526DFF4B0AA211C1B01662E7C37073C106487BD102BCB8BFDF1C54FBAEFBF093896E48D74BDB5F85B4A5CA4569C2E6A4EFB978D586446F36EF3C1B76A0C9B12A93B756C09B6B2D3EF0F15D22387046196B3B3F9EAD2C50EBAA0B275BCD81FF78C29FFB1C0FDA72A61D3B53BB67BEE37E57BBA1FC48F87DF5671DA02C9783745D4DE3E11D57DCD8DA6E85233CE48DBF7B7D6AD4778EE1A63B5CB9E259ACEB48D6713529F6A68E49975798375557B4F6D1EFE1808764B765A3BEEBC796705797EC6867DA9188BE81D122F465FDFD4242EF78C2FC3EEAA96C455A2164981694A893484E304E0EA94255B66A88B1591558EB4C935FC5E4576DD59AADEA5F24C3182C6F15D0AC03C33EACD988D4A461567D64BB0860D653CD1FC3CF0E3931475DE81C60D3F0417695ECB98A5D98AD4949BAB1FFB3F8D47EEA6657397E87E9D944E0FEEC01EECC262468A691BDF837192FFE5DFEA31E25E34BC34026517796947C4392EA054C95F795D451DCC2BA3474EE660E0B750EF2840AF08664D7C40DD63911F53D4B42FE58E1D1CF5447D235C748A2527EFC269C3E177F4AEFCC4CF9800EE6E677379F4A21FC403AF059AB6DB6B46391DD42C249EA01EB9C61C3658DCE7DD9EF999C8E24FF4A144AF407B01959D16FF69433CC3027161C40C11496C70C67C7769C4A06F17019CE1F904D538789BC245E3264B67AF04BA53CD790282010100E3F6F06E9B3E5989BF3ED2280D37FF0A841F5C6E038038C81CC965B2F484EEEBC7906DF20AAA41C21CDBBB93C34B4B1C9592A61EE7B58517CDD03A7714007DDAD4B9234ECF2F3A5037F3BF939EFADBB0F64A598D5F83BA486FD18EE0527AA377153CE48DE6A1595414487C319BCC862979CC9038CC2212D84A515C7F624FA8158097C1414DFE5769111CFBFEFD005F0A576B5DFC556EF8F28F2C3C2DC6A923633FEFB3F70AA85C8FD73CA6E185C21570042AD6428842100F4EFC54D3CB3D98FF663C945DC0B2AE34C7838C4DDCDB5F31CE1AFB3BF1654A5C43F322E17C314EE88DA66E98442B60401D112C8247E9DC2EA86C42EBB65427F0F0A4C2CDD7A63B850282010100CDDE71139488AAF431C71101D8D6E0CB656BA0EF311910E5A32CC00151817D406C38E908C43589588EED06111E1D5216C7B1CCB055E528CE01528757A0AC98BE1322B4374F73F6A92F5965A698D9EEF658A3946CC3AFA2B4D2244FE4B21671286BE2A230288CEDA4181A8FAFCD8D23479B5F391576E217C6766D77CBA96DD4EA4A8E97FA40570D566F7CD4FB300628C2E91EB2B89B75C0CC4AFDDBB6AC8BD6B5D7B7771D61D249A6422C05ED8AB087E7C190F7AD20899F5F7DEB435F76DE5F9D0613744659A51A11BC7F97C95A815799B82A07F242B4F78BB88A162060E969089C56B8FDDE2B428CEB93BDE94CE37EAECFF4630DFAF0FD6351A68D3E792F0ADB0282010009FC8C65DC092C34FB9ACDEC11402DBD1132AA82EB4657B67484621F27D516FE5F3CB5844FF14B762C7B77C92E5A030D5A841520EF77A53FF8B5318A7BE6D59C9B8B0CBFEC159E915B1223875D0492513B48E0896FF0BE5D6400A328B2944ACAF1B43C32F732844E49A12F47A112A1A1F982FBA27156E0CA76DEFF9559023253D6D14F17044AAB1BA0334BDACCCC925D4A9D1A7DEE643125B71DF1F8F365FF75DE9C2A9F1CE9693CA7EA314959E9B9B4B18A0ADED947439AD813F7C75B74F459E3E9AD7A39F1D9EDD7FBAC4ED0E90F4F883EE858A4E7920D5EB0AD0B81BC4B3FA6CCEEB55EEF23854B80B01978FB06B948898D98F3E0D5EB192FAE9503E8755D028201003B41BBEA96E67FCEAA45526FE5AA742A1797534B862660E6B88139032822CD9AAD8BF407C1F26706469D93117A4996475853A5475C7209BCC244AF1059FF5437E1EA2B55805930B6A21A6957FAC7403148724D56C13CDCE88F54446ADF97F61A5C736F9BCD104396E8193D22AD57E2BFC9C92EF52EB30584EAB1B7B9B79B159E1AB7D0A707BE06E8CA4E743F99232CB86DC1984FEAEF89FF43D6AE57767309EA6D9D317C139C23F6E73524BFAB1C05028084E9C5BB87E187EB06BCEDCD99548C2E238B6474894167B98A407684C69620791220176B7C0B84FC2943152ED0009BA9E48C7B06680D4FE2BF33FAE356D830194B8EF78733B6BBCFD4D0F31A8E9FE10282010100CCBC84560C368408205FD9F564F054BB8BDFF143E29EC426A5A1C3775801BE71822B1BCCF24B9808EE39143F664F5425ECB68E342AAB8DC44377AB719DFE103B8FF418B0841BE6C96987845C92997AA06EB0EE6ECE1F691867358735E5A1DF2965DED9A84A0BF90DC853DB1D8D6DBD0BC5C52073070493F4047FEC326F35C25716ED521EB18EE1E54014C8ADB3B561BD3B07625C2208638A2BF950E785CC9322399658A4DAD14ADDBDA188EE41193C1B02F9515D429844298A2352A7F809AB6DA9CA61AEB28B7B6A6CC2B5ED19F90DAAD04B7986ECCF41130A5FDBF77BA94D3099F5A275D4A3A3FE6962081CBAB5975457D32D96BD3E9B947E5AA999C1BC8CB2}

View File

@ -1 +0,0 @@
PubKey{3082020A0282020100B752D35E81F4AEEC1A9C42EDED16E8924DD4D359663611DE2DCCE1A9611704A697B26254DD2AFA974A61A2CF94FAD016450FEF22F218CA970BFE41E6340CE3ABCBEE123E35A9DCDA6D23738DAC46AF8AC57902DDE7F41A03EB00A4818137E1BF4DFAE1EEDF8BB9E4363C15FD1C2278D86F2535BC3F395BE9A6CD690A5C852E6C35D6184BE7B9062AEE2AFC1A5AC81E7D21B7252A56C62BB5AC0BBAD36C7A4907C868704985E1754BAA3E8315E775A51B7BDC7ACB0D0675D29513D78CB05AB6119D3CA0A810A41F78150E3C5D9ACAFBE1533FC3533DECEC14387BF7478F6E229EB4CC312DC22436F4DB0D4CC308FB6EEA612F2F9E00239DE7902DE15889EE71370147C9696A5E7B022947ABB8AFBBC64F7840BED4CE69592CAF4085A1074475E365ED015048C89AE717BC259C42510F15F31DA3F9302EAD8F263B43D14886B2335A245C00871C041CBB683F1F047573F789673F9B11B6E6714C2A3360244757BB220C7952C6D3D9D65AA47511A63E2A59706B7A70846C930DCFB3D8CAFB3BD6F687CACF5A708692C26B363C80C460F54E59912D41D9BB359698051ABC049A0D0CFD7F23DC97DA940B1EDEAC6B84B194C8F8A56A46CE69EE7A0AEAA11C99508A368E64D27756AD0BA7146A6ADA3D5FA237B3B4EDDC84B71C27DE3A9F26A42197791C7DC09E2D7C4A7D8FCDC8F9A5D4983BB278FCE9513B1486D18F8560C3F31CC70203010001}

View File

@ -1,13 +0,0 @@
settings:
messages_capacity: 2048
logging:
- info
- warn
- erro
language: ENG
address:
interface: messenger-node2:7070
incoming: messenger-node2:7071
connection: service-node2:7572
secret_keys:
Alice: abc

View File

@ -1,20 +0,0 @@
settings:
message_size_bytes: 8192
work_size_bits: 22
key_size_bits: 4096
queue_period_ms: 5000
limit_void_size_bytes: 4096
logging:
- info
- warn
- erro
address:
http: service-node2:7572
connections:
- traffic-middle:6581
services:
hidden-lake-messenger:
host: messenger-node2:7071
friends:
Alice: >-
PubKey{3082020A0282020100B752D35E81F4AEEC1A9C42EDED16E8924DD4D359663611DE2DCCE1A9611704A697B26254DD2AFA974A61A2CF94FAD016450FEF22F218CA970BFE41E6340CE3ABCBEE123E35A9DCDA6D23738DAC46AF8AC57902DDE7F41A03EB00A4818137E1BF4DFAE1EEDF8BB9E4363C15FD1C2278D86F2535BC3F395BE9A6CD690A5C852E6C35D6184BE7B9062AEE2AFC1A5AC81E7D21B7252A56C62BB5AC0BBAD36C7A4907C868704985E1754BAA3E8315E775A51B7BDC7ACB0D0675D29513D78CB05AB6119D3CA0A810A41F78150E3C5D9ACAFBE1533FC3533DECEC14387BF7478F6E229EB4CC312DC22436F4DB0D4CC308FB6EEA612F2F9E00239DE7902DE15889EE71370147C9696A5E7B022947ABB8AFBBC64F7840BED4CE69592CAF4085A1074475E365ED015048C89AE717BC259C42510F15F31DA3F9302EAD8F263B43D14886B2335A245C00871C041CBB683F1F047573F789673F9B11B6E6714C2A3360244757BB220C7952C6D3D9D65AA47511A63E2A59706B7A70846C930DCFB3D8CAFB3BD6F687CACF5A708692C26B363C80C460F54E59912D41D9BB359698051ABC049A0D0CFD7F23DC97DA940B1EDEAC6B84B194C8F8A56A46CE69EE7A0AEAA11C99508A368E64D27756AD0BA7146A6ADA3D5FA237B3B4EDDC84B71C27DE3A9F26A42197791C7DC09E2D7C4A7D8FCDC8F9A5D4983BB278FCE9513B1486D18F8560C3F31CC70203010001}

View File

@ -1 +0,0 @@
PrivKey{308209270201000282020100C17B6FA53983050B0339A0AB60D20A8A5FF5F8210564464C45CD2FAC2F266E8DDBA3B36C6F356AE57D1A71EED7B612C4CBC808557E4FCBAF6EDCFCECE37494144F09D65C7533109CE2F9B9B31D754453CA636A4463594F2C38303AE1B7BFFE738AC57805C782193B4854FF3F3FACA2C6BF9F75428DF6C583FBC29614C0B3329DF50F7B6399E1CC1F12BED77F29F885D7137ADFADE74A43451BB97A32F2301BE8EA866AFF34D6C7ED7FF1FAEA11FFB5B1034602B67E7918E42CA3D20E3E68AA700BE1B55A78C73A1D60D0A3DED3A6E5778C0BA68BAB9C345462131B9DC554D1A189066D649D7E167621815AB5B93905582BF19C28BCA6018E0CD205702968885E92A3B1E3DB37A25AC26FA4D2A47FF024ECD401F79FA353FEF2E4C2183C44D1D44B44938D32D8DBEDDAF5C87D042E4E9DAD671BE9C10DD8B3FE0A7C29AFE20843FE268C6A8F14949A04FF25A3EEE1EBE0027A99CE1C4DC561697297EA9FD9E23CF2E190B58CA385B66A235290A23CBB3856108EFFDD775601B3DE92C06C9EA2695C2D25D7897FD9D43C1AE10016E51C46C67F19AC84CD25F47DE2962A48030BCD8A0F14FFE4135A2893F62AC3E15CC61EC2E4ACADE0736C9A8DBC17D439248C42C5C0C6E08612414170FBE5AA6B52AE64E4CCDAE6FD3066BED5C200E07DBB0167D74A9FAD263AF253DFA870F44407F8EF3D9F12B8D910C4D803AD82ABA136F93F0203010001028202007497315BDB203CB5BA27CBCDF9F6182BF24F824A43B97D33110CE82155F84EBE65106C5A775935253D11E67E0AB6C8F095EBE039C477C941DA0888D126EF651C27D4C1BBCD540C3ABDFBC60F4D3D11037CFE13574A96D2C2CEC921724B0C030515269180CA0C77AFE592728D668D5D396ED7640DCB065D577F2A6ECDEAA1116B65F50261AEA5061FE367E4EBD81ACE6C206CF6C5108F0BA265668B608FD8B5B8D13A56D79ABBA296577735C03F405BF863049935E75889CB55AB12354B1E3F366DB2815A1755D68B457FF47F9E03005BDDA457A3EAB1A2470722848DBA0FB69324C31EC076B73849CF3EE7AE8202FE5977818C9C6FB18956541B6AF37FC0620BAD4A401FEBADEB782F85597BD4E8110E948DB2FA6D1BA6D9B3C76226EDB97578B0FAA480D8ED07CBD93FBEFA1CB499F6841DF85EE5A8EFFCAAD5193772930E164BCB254E63324E7DD545C629CB25358162A990DB55397510E0E7BBFF896E9673B9286F1ED353E3580D925AC89268EC6DDE2912BE8CB9CEBFCD4212DD6863BE267AAAA646B215C45541F98D606ED20964AE23B017B85119C267F00A99A86D31CB0A32BD66A4F7D07044B03F9A45C4775A753EFB2CA2E238857F968AFF607476D2CBB07A560E649895502C55B8782E3E761A935C223EE0573005D93CE92DEE0D60F2DBED5B044CC40445F50F83539F90455BED7E94145A0C6AF9B95B47B355E1210282010100F9A85AA543F0D90CBE0ED7A879FE5186D2A14BE5C1C10EC7848557CA312EED8DCE148B1E74D73FAF3022876E8AE985192ED8E0E64556D6B6E20AB9C94F06FF67B465D5F6156156A990DB5E7FC56FB0A352A5E75FA76ABF62C346F70546F6D7AA0E4F8C3947ED2F83782509BD75E3EF1F8BD5F37B62C0677393A959AB503251A13D111B7DE46103C8DEF96744BA0F383EC45B7CE66556AEE1DFE79EECE1F6E301955FFBBE935FE2689989C0F476525DBD8498CB42CF32D3129B66B6B34EC2A33F5CB5ECEEAF6E59B30800AB80879DFBE7D50D3E3771B2345C669290EABE2C9A3734F87414CFD4DF21C0D1F00E3665CF311FEBCAB3A20153886BB83448AADA7A730282010100C665BED80AB3AB43D55BBD1B584C5278D4DC7FD32B4B9870D8F606AB63BC3BBF3330915E587B1C408704FC2D1FCB86433E24E06937785372BB7A8F655BADF073C7E3B5CBFBC870F0F94A0D9EB1FF133CBCD406A4DE63552AEC6F52F50671A095F47D6D87A2B039DBD120116BC26A7D1278EBE7FC46B2B572CBD904804EBE92A0B424D308C4E822B29E670C4C1FE95CBD917FF546434AAED98FC7F8EA0ACF49F571572CCBFEE772686EFF8F6AD45904A305A850D6C3ADE545B8F3A2966E428A59A92B9640B5ED1C0CFDF5DF9D00D5320852321FCCBF699F1A8D3408ED5ACCCB20C387DE5524D9680E3F5837E11496F65843B1B5965FCEB131AEE74C40E674D705028201000C9711E32DB6F2AB32D67AC7B34741034491FFCAD9678C0041CD9BACC5A83130AA88DCAF2F833F61ED528073F1AB6F1BE301EAED91E79C3262D9D99EAE4E9308BECF37E80E11F795DB89448DBAFE33F13894C7434AA5167BBB8F539BBF856940D931E7C767BA2D603AE9DB40E3B617F4065046D41D19C8DDCA3F8B17199740089A94C7472502437798CF09072D3EE13E4116C008BA6991AE306574DD4B53F104BE6CB5BC59A04741B124824791C3FB98381CA07B8109761D851ABBF1F4F1D9DBB32835879FEF37B4D09D80089E4E384AEBB29C459D853820C4C775697127BCAB360FA582FB2C280882B9D39A53E1F47DECB72E64BAB1C86DA3C90951F4D3C9C3028201001688F008720EBE615216BD8021A369AAB7E2E3D20494ED97C3CD0E2CE1833BF617C6687CA2E838E94B6CD187FE988B838FC77885FAFAFBDF8853FF7DAFD02E03B8ACB0B59EBFC1B45D5C7FF78A9842831F9FA5B18C611407701BA4FC97E2C82EC03A8EFA5D0C4F461C96DBE3B58D8AEF5234D980DA36EA4D43C23EB4A43D19428FB3AF14CBE8E2280FBDFCB398DC54E0636A795DA5BF11E53C63A66E4F14047E90852A5D7172B09814238B12C353E926EB3997150DDCEEB1E0B42BBF927E946062CAC4A24D07C5ABE41CCD6D73EEC364169202F2AABB408B2F86BD8CD84772BB21FA88D27B0106C4B78539B3A337127C2C143F5FF939ECFE8BB35201FD2B4051028201007013EF7A989CF3DAF73407F23F75DD141AE5AB841D2A31BC1C632761B71F37EE0BE7690922130E4B29F5A92EF3CFD9184275B015BF95F885720AE117C5C8960BAC8E7E9FEB19B3007970E5CDE0F935C75F90D887AE15A820F104CBBA2ABC37697C2952B5D25A91CAA27E5C04DB6D74B5C8B012093A927E96E7315EB2C2E882300171AF0E725DB4088F7B2AC2A36DE6FE7B73413BB40989B21BEED9662EEF9477B938B4020A01169E7F70D8050F9D751A7530E2A44A47F69FAB1FDD7F3F78EC1C22236B49C3B68100712B53C97DB8DB67A4D8B9309D69773BE761CFFAB42DEE9C55E55573AE40AC6A4926A28119BD1C069869250297938875850E4F471CDD2DC7}

View File

@ -1 +0,0 @@
PubKey{3082020A0282020100C17B6FA53983050B0339A0AB60D20A8A5FF5F8210564464C45CD2FAC2F266E8DDBA3B36C6F356AE57D1A71EED7B612C4CBC808557E4FCBAF6EDCFCECE37494144F09D65C7533109CE2F9B9B31D754453CA636A4463594F2C38303AE1B7BFFE738AC57805C782193B4854FF3F3FACA2C6BF9F75428DF6C583FBC29614C0B3329DF50F7B6399E1CC1F12BED77F29F885D7137ADFADE74A43451BB97A32F2301BE8EA866AFF34D6C7ED7FF1FAEA11FFB5B1034602B67E7918E42CA3D20E3E68AA700BE1B55A78C73A1D60D0A3DED3A6E5778C0BA68BAB9C345462131B9DC554D1A189066D649D7E167621815AB5B93905582BF19C28BCA6018E0CD205702968885E92A3B1E3DB37A25AC26FA4D2A47FF024ECD401F79FA353FEF2E4C2183C44D1D44B44938D32D8DBEDDAF5C87D042E4E9DAD671BE9C10DD8B3FE0A7C29AFE20843FE268C6A8F14949A04FF25A3EEE1EBE0027A99CE1C4DC561697297EA9FD9E23CF2E190B58CA385B66A235290A23CBB3856108EFFDD775601B3DE92C06C9EA2695C2D25D7897FD9D43C1AE10016E51C46C67F19AC84CD25F47DE2962A48030BCD8A0F14FFE4135A2893F62AC3E15CC61EC2E4ACADE0736C9A8DBC17D439248C42C5C0C6E08612414170FBE5AA6B52AE64E4CCDAE6FD3066BED5C200E07DBB0167D74A9FAD263AF253DFA870F44407F8EF3D9F12B8D910C4D803AD82ABA136F93F0203010001}

View File

@ -1,63 +0,0 @@
version: "3"
services:
traffic-middle:
build:
context: ./../../../../
dockerfile: cmd/hidden_lake/helpers/traffic/Dockerfile
environment:
SERVICE_PATH: /mounted
volumes:
- ./_mounted_middle:/mounted
networks:
- hidden-lake
service-node1:
build:
context: ./../../../../
dockerfile: cmd/hidden_lake/service/Dockerfile
environment:
SERVICE_PATH: /mounted
volumes:
- ./_mounted_node1:/mounted
ports:
- "8572:8572"
networks:
- hidden-lake
messenger-node1:
build:
context: ./../../../../
dockerfile: cmd/hidden_lake/applications/messenger/Dockerfile
environment:
SERVICE_PATH: /mounted
volumes:
- ./_mounted_node1:/mounted
ports:
- "8080:8080"
networks:
- hidden-lake
service-node2:
build:
context: ./../../../../
dockerfile: cmd/hidden_lake/service/Dockerfile
environment:
SERVICE_PATH: /mounted
volumes:
- ./_mounted_node2:/mounted
ports:
- "7572:7572"
networks:
- hidden-lake
messenger-node2:
build:
context: ./../../../../
dockerfile: cmd/hidden_lake/applications/messenger/Dockerfile
environment:
SERVICE_PATH: /mounted
volumes:
- ./_mounted_node2:/mounted
ports:
- "7070:7070"
networks:
- hidden-lake
networks:
hidden-lake:
driver: bridge

View File

@ -13,7 +13,6 @@ import (
"github.com/number571/go-peer/pkg/crypto/keybuilder"
"github.com/number571/go-peer/pkg/crypto/random"
"github.com/number571/go-peer/pkg/crypto/symmetric"
"github.com/number571/go-peer/pkg/encoding"
hlm_settings "github.com/number571/go-peer/cmd/hidden_lake/applications/messenger/pkg/settings"
)
@ -59,13 +58,13 @@ func sendMessage(pReceiver string, pMessage []byte) {
cipherKey := keybuilder.NewKeyBuilder(1, []byte(hlm_settings.CCipherSalt)).Build(cSecretKey)
requestID := random.NewStdPRNG().GetString(hlm_settings.CRequestIDSize)
senderID := encoding.HexDecode("1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef")
pseudonym := "Bob"
encMessage := symmetric.NewAESCipher(cipherKey).EncryptBytes(
bytes.Join(
[][]byte{
hashing.NewHMACSHA256Hasher(
authKey,
bytes.Join([][]byte{senderID, []byte(requestID), pMessage}, []byte{}),
bytes.Join([][]byte{[]byte(pseudonym), []byte(requestID), pMessage}, []byte{}),
).ToBytes(),
pMessage,
},
@ -82,8 +81,8 @@ func sendMessage(pReceiver string, pMessage []byte) {
requestData := replacer.Replace(
fmt.Sprintf(
cJsonDataTemplate,
hlm_settings.CHeaderSenderId,
encoding.HexEncode(senderID),
hlm_settings.CHeaderPseudonym,
pseudonym,
hlm_settings.CHeaderRequestId,
requestID,
base64.StdEncoding.EncodeToString(encMessage),

View File

@ -8,12 +8,12 @@
randVal=$((RANDOM % 2))
if [ "$randVal" -eq "0" ]; then
echo "Sending text..." && echo # encrypted(byte(0x01) -> text format)
REQUEST_ID="Hdvl9TuoTfp3L-0HbsFb2J5tcDnuN0iHgHzbtCrKLRG1"
SENT_DATA=$(echo -ne "\xcf\x5e\x8f\x27\xd9\x42\xc8\x04\xb4\xdf\xb7\xff\xeb\x20\xe4\x4e\x5a\x16\xe0\xe4\xa2\x9a\x2e\x40\x35\x5d\xc4\x70\xc4\xd6\x33\xb5\xb4\x8c\x71\x3f\x81\xf9\x7a\xe0\x4c\x7f\x2a\x13\xf9\x51\xda\x46\xa4\xb3\xc2\xc5\x98\xe7\x32\x17\x67\xc7\x43\xb1\xc5\x4e" | base64);
REQUEST_ID="23GLKD8ovHnuTv99mMpIxq0O2srtuzUPLwRwq6Kd5VDo"
SENT_DATA=$(echo -ne "\xfb\xaa\x5a\xb9\x8b\x69\x3e\x58\x16\xdd\x83\x81\x58\xc4\xea\x7f\x62\x25\x1d\x02\xb1\xa5\x4f\xc6\x79\x68\xb9\xbd\x47\x76\xf3\x97\xd5\xd4\xc6\xc4\x15\x1e\x40\x6d\x3b\xb6\x4c\x5c\xa8\xa9\x20\xdc\xec\x52\x78\xd0\xfc\x4a\x74\x99\x72\xca\x4d\x1c\x77\xcf" | base64);
else
echo "Sending file..." && echo # encrypted(byte(0x02) -> file format)
REQUEST_ID="HrgMvCw10XohGs6gaFU7R44N7QDRwVSw4FPS7rwFcotQ"
SENT_DATA=$(echo -ne "\xb7\xd6\x39\xb4\x3d\x5b\xb1\x54\x8f\xfc\xf5\x35\xde\x92\x76\x69\x2e\x49\xd3\x62\x52\xaa\x31\x49\xe2\x87\xb6\xaf\xc1\xbc\x0f\x4e\xf7\x26\x19\x4e\x79\x1c\x2b\x32\x54\x87\x56\xd9\xf5\xb3\xfb\x0a\xe9\x1c\x4f\x2d\x32\xbe\x41\xa7\x42\x91\xc3\xef\xf0\xaa\x05\x0f\x09\xa2\xa9\x4f\xff\x0c\xd2\x02\xd4\x9e" | base64);
REQUEST_ID="HoiAiKaDCPc7V1WKHpCVsDYDLqbtZMramZyDJD-ETMYU"
SENT_DATA=$(echo -ne "\x08\xfc\x71\xc7\x68\x94\xbf\x4a\x47\x2f\xb9\xd4\xd6\x46\x72\xef\x74\xf0\x6f\x30\xbc\x25\x09\x45\x4a\x05\x93\x2b\xc4\xe7\x57\x9c\x26\x54\xc4\xed\xb7\xcd\x40\x29\x2b\x2e\x28\xf3\x91\xd7\xa2\x24\x1f\x77\x93\xae\x4b\x2a\x23\xd2\x62\x17\xe6\x11\xe5\x85\x86\x53\xe6\xf7\xf5\xd3\xa1\x96\x02\x37\x2e\x06" | base64);
fi
JSON_DATA='{
@ -21,7 +21,7 @@ JSON_DATA='{
"host":"hidden-lake-messenger",
"path":"/push",
"head":{
"Hl-Messenger-Sender-Id": "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"Hl-Messenger-Pseudonym": "Bob",
"Hl-Messenger-Request-Id": "'${REQUEST_ID}'",
"Accept": "application/json"
},

View File

@ -8,5 +8,6 @@ address:
interface: localhost:8080
incoming: localhost:8081
connection: localhost:8572
pseudonym: "Alice"
secret_keys:
Bob: abc

View File

@ -5,6 +5,7 @@ logging:
- warn
- erro
language: ENG
pseudonym: Bob
address:
interface: localhost:7070
incoming: localhost:7071

View File

@ -9,5 +9,4 @@ address:
interface: localhost:4040
incoming: localhost:4041
connection: localhost:4572
secret_keys:
Group: abc
pseudonym: "Group"

View File

@ -8,5 +8,6 @@ address:
interface: localhost:8080
incoming: localhost:8081
connection: localhost:8572
pseudonym: "Alice"
secret_keys:
Group: abc

View File

@ -9,5 +9,6 @@ address:
interface: localhost:7070
incoming: localhost:7071
connection: localhost:7572
pseudonym: "Bob"
secret_keys:
Group: abc

View File

@ -9,5 +9,6 @@ address:
interface: localhost:6060
incoming: localhost:6061
connection: localhost:6572
pseudonym: "Carol"
secret_keys:
Group: abc

View File

@ -8,5 +8,6 @@ address:
interface: localhost:8080
incoming: localhost:8081
connection: localhost:8572
pseudonym: "Alice"
secret_keys:
Bob: abc

View File

@ -8,5 +8,6 @@ address:
interface: localhost:7070
incoming: localhost:7071
connection: localhost:7572
pseudonym: "Bob"
secret_keys:
Alice: abc

View File

@ -8,5 +8,6 @@ address:
interface: localhost:8080
incoming: localhost:8081
connection: localhost:8572
pseudonym: "Alice"
secret_keys:
Bob: abc

View File

@ -9,5 +9,6 @@ address:
interface: localhost:7070
incoming: localhost:7071
connection: localhost:7572
pseudonym: "Bob"
secret_keys:
Alice: abc

View File

@ -4,5 +4,6 @@ address:
interface: localhost:8080
incoming: localhost:8081
connection: localhost:8572
pseudonym: "Alice"
secret_keys:
Bob: abc

View File

@ -4,5 +4,6 @@ address:
interface: localhost:7070
incoming: localhost:7071
connection: localhost:7572
pseudonym: "Bob"
secret_keys:
Alice: abc

View File

@ -1 +0,0 @@
!*.yml

View File

@ -1,9 +0,0 @@
.PHONY: docker-default docker-run docker-clean
docker-default: docker-run
docker-run:
docker-compose build
docker-compose up
docker-clean:
rm -rf ./_mounted_middle/hlt.db ./_mounted_recv/hls.db ./_mounted_send/hls.db
docker-compose down
docker-compose rm -f

View File

@ -1,13 +0,0 @@
settings:
message_size_bytes: 8192
key_size_bits: 4096
work_size_bits: 22
queue_period_ms: 5000
limit_void_size_bytes: 4096
messages_capacity: 2048
logging:
- info
- warn
- erro
address:
tcp: traffic-middle:6581

View File

@ -1,18 +0,0 @@
settings:
message_size_bytes: 8192
work_size_bits: 22
key_size_bits: 4096
queue_period_ms: 5000
limit_void_size_bytes: 4096
logging:
- info
- warn
- erro
services:
hidden-echo-service:
host: recv-echo-service:8080
connections:
- traffic-middle:6581
friends:
Alice: >-
PubKey{3082020A0282020100C17B6FA53983050B0339A0AB60D20A8A5FF5F8210564464C45CD2FAC2F266E8DDBA3B36C6F356AE57D1A71EED7B612C4CBC808557E4FCBAF6EDCFCECE37494144F09D65C7533109CE2F9B9B31D754453CA636A4463594F2C38303AE1B7BFFE738AC57805C782193B4854FF3F3FACA2C6BF9F75428DF6C583FBC29614C0B3329DF50F7B6399E1CC1F12BED77F29F885D7137ADFADE74A43451BB97A32F2301BE8EA866AFF34D6C7ED7FF1FAEA11FFB5B1034602B67E7918E42CA3D20E3E68AA700BE1B55A78C73A1D60D0A3DED3A6E5778C0BA68BAB9C345462131B9DC554D1A189066D649D7E167621815AB5B93905582BF19C28BCA6018E0CD205702968885E92A3B1E3DB37A25AC26FA4D2A47FF024ECD401F79FA353FEF2E4C2183C44D1D44B44938D32D8DBEDDAF5C87D042E4E9DAD671BE9C10DD8B3FE0A7C29AFE20843FE268C6A8F14949A04FF25A3EEE1EBE0027A99CE1C4DC561697297EA9FD9E23CF2E190B58CA385B66A235290A23CBB3856108EFFDD775601B3DE92C06C9EA2695C2D25D7897FD9D43C1AE10016E51C46C67F19AC84CD25F47DE2962A48030BCD8A0F14FFE4135A2893F62AC3E15CC61EC2E4ACADE0736C9A8DBC17D439248C42C5C0C6E08612414170FBE5AA6B52AE64E4CCDAE6FD3066BED5C200E07DBB0167D74A9FAD263AF253DFA870F44407F8EF3D9F12B8D910C4D803AD82ABA136F93F0203010001}

View File

@ -1 +0,0 @@
PrivKey{308209280201000282020100B752D35E81F4AEEC1A9C42EDED16E8924DD4D359663611DE2DCCE1A9611704A697B26254DD2AFA974A61A2CF94FAD016450FEF22F218CA970BFE41E6340CE3ABCBEE123E35A9DCDA6D23738DAC46AF8AC57902DDE7F41A03EB00A4818137E1BF4DFAE1EEDF8BB9E4363C15FD1C2278D86F2535BC3F395BE9A6CD690A5C852E6C35D6184BE7B9062AEE2AFC1A5AC81E7D21B7252A56C62BB5AC0BBAD36C7A4907C868704985E1754BAA3E8315E775A51B7BDC7ACB0D0675D29513D78CB05AB6119D3CA0A810A41F78150E3C5D9ACAFBE1533FC3533DECEC14387BF7478F6E229EB4CC312DC22436F4DB0D4CC308FB6EEA612F2F9E00239DE7902DE15889EE71370147C9696A5E7B022947ABB8AFBBC64F7840BED4CE69592CAF4085A1074475E365ED015048C89AE717BC259C42510F15F31DA3F9302EAD8F263B43D14886B2335A245C00871C041CBB683F1F047573F789673F9B11B6E6714C2A3360244757BB220C7952C6D3D9D65AA47511A63E2A59706B7A70846C930DCFB3D8CAFB3BD6F687CACF5A708692C26B363C80C460F54E59912D41D9BB359698051ABC049A0D0CFD7F23DC97DA940B1EDEAC6B84B194C8F8A56A46CE69EE7A0AEAA11C99508A368E64D27756AD0BA7146A6ADA3D5FA237B3B4EDDC84B71C27DE3A9F26A42197791C7DC09E2D7C4A7D8FCDC8F9A5D4983BB278FCE9513B1486D18F8560C3F31CC702030100010282020071714CA16013F526DFF4B0AA211C1B01662E7C37073C106487BD102BCB8BFDF1C54FBAEFBF093896E48D74BDB5F85B4A5CA4569C2E6A4EFB978D586446F36EF3C1B76A0C9B12A93B756C09B6B2D3EF0F15D22387046196B3B3F9EAD2C50EBAA0B275BCD81FF78C29FFB1C0FDA72A61D3B53BB67BEE37E57BBA1FC48F87DF5671DA02C9783745D4DE3E11D57DCD8DA6E85233CE48DBF7B7D6AD4778EE1A63B5CB9E259ACEB48D6713529F6A68E49975798375557B4F6D1EFE1808764B765A3BEEBC796705797EC6867DA9188BE81D122F465FDFD4242EF78C2FC3EEAA96C455A2164981694A893484E304E0EA94255B66A88B1591558EB4C935FC5E4576DD59AADEA5F24C3182C6F15D0AC03C33EACD988D4A461567D64BB0860D653CD1FC3CF0E3931475DE81C60D3F0417695ECB98A5D98AD4949BAB1FFB3F8D47EEA6657397E87E9D944E0FEEC01EECC262468A691BDF837192FFE5DFEA31E25E34BC34026517796947C4392EA054C95F795D451DCC2BA3474EE660E0B750EF2840AF08664D7C40DD63911F53D4B42FE58E1D1CF5447D235C748A2527EFC269C3E177F4AEFCC4CF9800EE6E677379F4A21FC403AF059AB6DB6B46391DD42C249EA01EB9C61C3658DCE7DD9EF999C8E24FF4A144AF407B01959D16FF69433CC3027161C40C11496C70C67C7769C4A06F17019CE1F904D538789BC245E3264B67AF04BA53CD790282010100E3F6F06E9B3E5989BF3ED2280D37FF0A841F5C6E038038C81CC965B2F484EEEBC7906DF20AAA41C21CDBBB93C34B4B1C9592A61EE7B58517CDD03A7714007DDAD4B9234ECF2F3A5037F3BF939EFADBB0F64A598D5F83BA486FD18EE0527AA377153CE48DE6A1595414487C319BCC862979CC9038CC2212D84A515C7F624FA8158097C1414DFE5769111CFBFEFD005F0A576B5DFC556EF8F28F2C3C2DC6A923633FEFB3F70AA85C8FD73CA6E185C21570042AD6428842100F4EFC54D3CB3D98FF663C945DC0B2AE34C7838C4DDCDB5F31CE1AFB3BF1654A5C43F322E17C314EE88DA66E98442B60401D112C8247E9DC2EA86C42EBB65427F0F0A4C2CDD7A63B850282010100CDDE71139488AAF431C71101D8D6E0CB656BA0EF311910E5A32CC00151817D406C38E908C43589588EED06111E1D5216C7B1CCB055E528CE01528757A0AC98BE1322B4374F73F6A92F5965A698D9EEF658A3946CC3AFA2B4D2244FE4B21671286BE2A230288CEDA4181A8FAFCD8D23479B5F391576E217C6766D77CBA96DD4EA4A8E97FA40570D566F7CD4FB300628C2E91EB2B89B75C0CC4AFDDBB6AC8BD6B5D7B7771D61D249A6422C05ED8AB087E7C190F7AD20899F5F7DEB435F76DE5F9D0613744659A51A11BC7F97C95A815799B82A07F242B4F78BB88A162060E969089C56B8FDDE2B428CEB93BDE94CE37EAECFF4630DFAF0FD6351A68D3E792F0ADB0282010009FC8C65DC092C34FB9ACDEC11402DBD1132AA82EB4657B67484621F27D516FE5F3CB5844FF14B762C7B77C92E5A030D5A841520EF77A53FF8B5318A7BE6D59C9B8B0CBFEC159E915B1223875D0492513B48E0896FF0BE5D6400A328B2944ACAF1B43C32F732844E49A12F47A112A1A1F982FBA27156E0CA76DEFF9559023253D6D14F17044AAB1BA0334BDACCCC925D4A9D1A7DEE643125B71DF1F8F365FF75DE9C2A9F1CE9693CA7EA314959E9B9B4B18A0ADED947439AD813F7C75B74F459E3E9AD7A39F1D9EDD7FBAC4ED0E90F4F883EE858A4E7920D5EB0AD0B81BC4B3FA6CCEEB55EEF23854B80B01978FB06B948898D98F3E0D5EB192FAE9503E8755D028201003B41BBEA96E67FCEAA45526FE5AA742A1797534B862660E6B88139032822CD9AAD8BF407C1F26706469D93117A4996475853A5475C7209BCC244AF1059FF5437E1EA2B55805930B6A21A6957FAC7403148724D56C13CDCE88F54446ADF97F61A5C736F9BCD104396E8193D22AD57E2BFC9C92EF52EB30584EAB1B7B9B79B159E1AB7D0A707BE06E8CA4E743F99232CB86DC1984FEAEF89FF43D6AE57767309EA6D9D317C139C23F6E73524BFAB1C05028084E9C5BB87E187EB06BCEDCD99548C2E238B6474894167B98A407684C69620791220176B7C0B84FC2943152ED0009BA9E48C7B06680D4FE2BF33FAE356D830194B8EF78733B6BBCFD4D0F31A8E9FE10282010100CCBC84560C368408205FD9F564F054BB8BDFF143E29EC426A5A1C3775801BE71822B1BCCF24B9808EE39143F664F5425ECB68E342AAB8DC44377AB719DFE103B8FF418B0841BE6C96987845C92997AA06EB0EE6ECE1F691867358735E5A1DF2965DED9A84A0BF90DC853DB1D8D6DBD0BC5C52073070493F4047FEC326F35C25716ED521EB18EE1E54014C8ADB3B561BD3B07625C2208638A2BF950E785CC9322399658A4DAD14ADDBDA188EE41193C1B02F9515D429844298A2352A7F809AB6DA9CA61AEB28B7B6A6CC2B5ED19F90DAAD04B7986ECCF41130A5FDBF77BA94D3099F5A275D4A3A3FE6962081CBAB5975457D32D96BD3E9B947E5AA999C1BC8CB2}

View File

@ -1 +0,0 @@
PubKey{3082020A0282020100B752D35E81F4AEEC1A9C42EDED16E8924DD4D359663611DE2DCCE1A9611704A697B26254DD2AFA974A61A2CF94FAD016450FEF22F218CA970BFE41E6340CE3ABCBEE123E35A9DCDA6D23738DAC46AF8AC57902DDE7F41A03EB00A4818137E1BF4DFAE1EEDF8BB9E4363C15FD1C2278D86F2535BC3F395BE9A6CD690A5C852E6C35D6184BE7B9062AEE2AFC1A5AC81E7D21B7252A56C62BB5AC0BBAD36C7A4907C868704985E1754BAA3E8315E775A51B7BDC7ACB0D0675D29513D78CB05AB6119D3CA0A810A41F78150E3C5D9ACAFBE1533FC3533DECEC14387BF7478F6E229EB4CC312DC22436F4DB0D4CC308FB6EEA612F2F9E00239DE7902DE15889EE71370147C9696A5E7B022947ABB8AFBBC64F7840BED4CE69592CAF4085A1074475E365ED015048C89AE717BC259C42510F15F31DA3F9302EAD8F263B43D14886B2335A245C00871C041CBB683F1F047573F789673F9B11B6E6714C2A3360244757BB220C7952C6D3D9D65AA47511A63E2A59706B7A70846C930DCFB3D8CAFB3BD6F687CACF5A708692C26B363C80C460F54E59912D41D9BB359698051ABC049A0D0CFD7F23DC97DA940B1EDEAC6B84B194C8F8A56A46CE69EE7A0AEAA11C99508A368E64D27756AD0BA7146A6ADA3D5FA237B3B4EDDC84B71C27DE3A9F26A42197791C7DC09E2D7C4A7D8FCDC8F9A5D4983BB278FCE9513B1486D18F8560C3F31CC70203010001}

View File

@ -1,17 +0,0 @@
settings:
message_size_bytes: 8192
work_size_bits: 22
key_size_bits: 4096
queue_period_ms: 5000
limit_void_size_bytes: 4096
logging:
- info
- warn
- erro
address:
http: service-send:7572
connections:
- traffic-middle:6581
friends:
Bob: >-
PubKey{3082020A0282020100B752D35E81F4AEEC1A9C42EDED16E8924DD4D359663611DE2DCCE1A9611704A697B26254DD2AFA974A61A2CF94FAD016450FEF22F218CA970BFE41E6340CE3ABCBEE123E35A9DCDA6D23738DAC46AF8AC57902DDE7F41A03EB00A4818137E1BF4DFAE1EEDF8BB9E4363C15FD1C2278D86F2535BC3F395BE9A6CD690A5C852E6C35D6184BE7B9062AEE2AFC1A5AC81E7D21B7252A56C62BB5AC0BBAD36C7A4907C868704985E1754BAA3E8315E775A51B7BDC7ACB0D0675D29513D78CB05AB6119D3CA0A810A41F78150E3C5D9ACAFBE1533FC3533DECEC14387BF7478F6E229EB4CC312DC22436F4DB0D4CC308FB6EEA612F2F9E00239DE7902DE15889EE71370147C9696A5E7B022947ABB8AFBBC64F7840BED4CE69592CAF4085A1074475E365ED015048C89AE717BC259C42510F15F31DA3F9302EAD8F263B43D14886B2335A245C00871C041CBB683F1F047573F789673F9B11B6E6714C2A3360244757BB220C7952C6D3D9D65AA47511A63E2A59706B7A70846C930DCFB3D8CAFB3BD6F687CACF5A708692C26B363C80C460F54E59912D41D9BB359698051ABC049A0D0CFD7F23DC97DA940B1EDEAC6B84B194C8F8A56A46CE69EE7A0AEAA11C99508A368E64D27756AD0BA7146A6ADA3D5FA237B3B4EDDC84B71C27DE3A9F26A42197791C7DC09E2D7C4A7D8FCDC8F9A5D4983BB278FCE9513B1486D18F8560C3F31CC70203010001}

View File

@ -1 +0,0 @@
PrivKey{308209270201000282020100C17B6FA53983050B0339A0AB60D20A8A5FF5F8210564464C45CD2FAC2F266E8DDBA3B36C6F356AE57D1A71EED7B612C4CBC808557E4FCBAF6EDCFCECE37494144F09D65C7533109CE2F9B9B31D754453CA636A4463594F2C38303AE1B7BFFE738AC57805C782193B4854FF3F3FACA2C6BF9F75428DF6C583FBC29614C0B3329DF50F7B6399E1CC1F12BED77F29F885D7137ADFADE74A43451BB97A32F2301BE8EA866AFF34D6C7ED7FF1FAEA11FFB5B1034602B67E7918E42CA3D20E3E68AA700BE1B55A78C73A1D60D0A3DED3A6E5778C0BA68BAB9C345462131B9DC554D1A189066D649D7E167621815AB5B93905582BF19C28BCA6018E0CD205702968885E92A3B1E3DB37A25AC26FA4D2A47FF024ECD401F79FA353FEF2E4C2183C44D1D44B44938D32D8DBEDDAF5C87D042E4E9DAD671BE9C10DD8B3FE0A7C29AFE20843FE268C6A8F14949A04FF25A3EEE1EBE0027A99CE1C4DC561697297EA9FD9E23CF2E190B58CA385B66A235290A23CBB3856108EFFDD775601B3DE92C06C9EA2695C2D25D7897FD9D43C1AE10016E51C46C67F19AC84CD25F47DE2962A48030BCD8A0F14FFE4135A2893F62AC3E15CC61EC2E4ACADE0736C9A8DBC17D439248C42C5C0C6E08612414170FBE5AA6B52AE64E4CCDAE6FD3066BED5C200E07DBB0167D74A9FAD263AF253DFA870F44407F8EF3D9F12B8D910C4D803AD82ABA136F93F0203010001028202007497315BDB203CB5BA27CBCDF9F6182BF24F824A43B97D33110CE82155F84EBE65106C5A775935253D11E67E0AB6C8F095EBE039C477C941DA0888D126EF651C27D4C1BBCD540C3ABDFBC60F4D3D11037CFE13574A96D2C2CEC921724B0C030515269180CA0C77AFE592728D668D5D396ED7640DCB065D577F2A6ECDEAA1116B65F50261AEA5061FE367E4EBD81ACE6C206CF6C5108F0BA265668B608FD8B5B8D13A56D79ABBA296577735C03F405BF863049935E75889CB55AB12354B1E3F366DB2815A1755D68B457FF47F9E03005BDDA457A3EAB1A2470722848DBA0FB69324C31EC076B73849CF3EE7AE8202FE5977818C9C6FB18956541B6AF37FC0620BAD4A401FEBADEB782F85597BD4E8110E948DB2FA6D1BA6D9B3C76226EDB97578B0FAA480D8ED07CBD93FBEFA1CB499F6841DF85EE5A8EFFCAAD5193772930E164BCB254E63324E7DD545C629CB25358162A990DB55397510E0E7BBFF896E9673B9286F1ED353E3580D925AC89268EC6DDE2912BE8CB9CEBFCD4212DD6863BE267AAAA646B215C45541F98D606ED20964AE23B017B85119C267F00A99A86D31CB0A32BD66A4F7D07044B03F9A45C4775A753EFB2CA2E238857F968AFF607476D2CBB07A560E649895502C55B8782E3E761A935C223EE0573005D93CE92DEE0D60F2DBED5B044CC40445F50F83539F90455BED7E94145A0C6AF9B95B47B355E1210282010100F9A85AA543F0D90CBE0ED7A879FE5186D2A14BE5C1C10EC7848557CA312EED8DCE148B1E74D73FAF3022876E8AE985192ED8E0E64556D6B6E20AB9C94F06FF67B465D5F6156156A990DB5E7FC56FB0A352A5E75FA76ABF62C346F70546F6D7AA0E4F8C3947ED2F83782509BD75E3EF1F8BD5F37B62C0677393A959AB503251A13D111B7DE46103C8DEF96744BA0F383EC45B7CE66556AEE1DFE79EECE1F6E301955FFBBE935FE2689989C0F476525DBD8498CB42CF32D3129B66B6B34EC2A33F5CB5ECEEAF6E59B30800AB80879DFBE7D50D3E3771B2345C669290EABE2C9A3734F87414CFD4DF21C0D1F00E3665CF311FEBCAB3A20153886BB83448AADA7A730282010100C665BED80AB3AB43D55BBD1B584C5278D4DC7FD32B4B9870D8F606AB63BC3BBF3330915E587B1C408704FC2D1FCB86433E24E06937785372BB7A8F655BADF073C7E3B5CBFBC870F0F94A0D9EB1FF133CBCD406A4DE63552AEC6F52F50671A095F47D6D87A2B039DBD120116BC26A7D1278EBE7FC46B2B572CBD904804EBE92A0B424D308C4E822B29E670C4C1FE95CBD917FF546434AAED98FC7F8EA0ACF49F571572CCBFEE772686EFF8F6AD45904A305A850D6C3ADE545B8F3A2966E428A59A92B9640B5ED1C0CFDF5DF9D00D5320852321FCCBF699F1A8D3408ED5ACCCB20C387DE5524D9680E3F5837E11496F65843B1B5965FCEB131AEE74C40E674D705028201000C9711E32DB6F2AB32D67AC7B34741034491FFCAD9678C0041CD9BACC5A83130AA88DCAF2F833F61ED528073F1AB6F1BE301EAED91E79C3262D9D99EAE4E9308BECF37E80E11F795DB89448DBAFE33F13894C7434AA5167BBB8F539BBF856940D931E7C767BA2D603AE9DB40E3B617F4065046D41D19C8DDCA3F8B17199740089A94C7472502437798CF09072D3EE13E4116C008BA6991AE306574DD4B53F104BE6CB5BC59A04741B124824791C3FB98381CA07B8109761D851ABBF1F4F1D9DBB32835879FEF37B4D09D80089E4E384AEBB29C459D853820C4C775697127BCAB360FA582FB2C280882B9D39A53E1F47DECB72E64BAB1C86DA3C90951F4D3C9C3028201001688F008720EBE615216BD8021A369AAB7E2E3D20494ED97C3CD0E2CE1833BF617C6687CA2E838E94B6CD187FE988B838FC77885FAFAFBDF8853FF7DAFD02E03B8ACB0B59EBFC1B45D5C7FF78A9842831F9FA5B18C611407701BA4FC97E2C82EC03A8EFA5D0C4F461C96DBE3B58D8AEF5234D980DA36EA4D43C23EB4A43D19428FB3AF14CBE8E2280FBDFCB398DC54E0636A795DA5BF11E53C63A66E4F14047E90852A5D7172B09814238B12C353E926EB3997150DDCEEB1E0B42BBF927E946062CAC4A24D07C5ABE41CCD6D73EEC364169202F2AABB408B2F86BD8CD84772BB21FA88D27B0106C4B78539B3A337127C2C143F5FF939ECFE8BB35201FD2B4051028201007013EF7A989CF3DAF73407F23F75DD141AE5AB841D2A31BC1C632761B71F37EE0BE7690922130E4B29F5A92EF3CFD9184275B015BF95F885720AE117C5C8960BAC8E7E9FEB19B3007970E5CDE0F935C75F90D887AE15A820F104CBBA2ABC37697C2952B5D25A91CAA27E5C04DB6D74B5C8B012093A927E96E7315EB2C2E882300171AF0E725DB4088F7B2AC2A36DE6FE7B73413BB40989B21BEED9662EEF9477B938B4020A01169E7F70D8050F9D751A7530E2A44A47F69FAB1FDD7F3F78EC1C22236B49C3B68100712B53C97DB8DB67A4D8B9309D69773BE761CFFAB42DEE9C55E55573AE40AC6A4926A28119BD1C069869250297938875850E4F471CDD2DC7}

View File

@ -1 +0,0 @@
PubKey{3082020A0282020100C17B6FA53983050B0339A0AB60D20A8A5FF5F8210564464C45CD2FAC2F266E8DDBA3B36C6F356AE57D1A71EED7B612C4CBC808557E4FCBAF6EDCFCECE37494144F09D65C7533109CE2F9B9B31D754453CA636A4463594F2C38303AE1B7BFFE738AC57805C782193B4854FF3F3FACA2C6BF9F75428DF6C583FBC29614C0B3329DF50F7B6399E1CC1F12BED77F29F885D7137ADFADE74A43451BB97A32F2301BE8EA866AFF34D6C7ED7FF1FAEA11FFB5B1034602B67E7918E42CA3D20E3E68AA700BE1B55A78C73A1D60D0A3DED3A6E5778C0BA68BAB9C345462131B9DC554D1A189066D649D7E167621815AB5B93905582BF19C28BCA6018E0CD205702968885E92A3B1E3DB37A25AC26FA4D2A47FF024ECD401F79FA353FEF2E4C2183C44D1D44B44938D32D8DBEDDAF5C87D042E4E9DAD671BE9C10DD8B3FE0A7C29AFE20843FE268C6A8F14949A04FF25A3EEE1EBE0027A99CE1C4DC561697297EA9FD9E23CF2E190B58CA385B66A235290A23CBB3856108EFFDD775601B3DE92C06C9EA2695C2D25D7897FD9D43C1AE10016E51C46C67F19AC84CD25F47DE2962A48030BCD8A0F14FFE4135A2893F62AC3E15CC61EC2E4ACADE0736C9A8DBC17D439248C42C5C0C6E08612414170FBE5AA6B52AE64E4CCDAE6FD3066BED5C200E07DBB0167D74A9FAD263AF253DFA870F44407F8EF3D9F12B8D910C4D803AD82ABA136F93F0203010001}

View File

@ -1,50 +0,0 @@
version: "3"
services:
traffic-middle:
build:
context: ./../../../../
dockerfile: cmd/hidden_lake/helpers/traffic/Dockerfile
environment:
SERVICE_PATH: /mounted
volumes:
- ./_mounted_middle:/mounted
networks:
- hidden-lake
service-recv:
build:
context: ./../../../../
dockerfile: cmd/hidden_lake/service/Dockerfile
environment:
SERVICE_PATH: /mounted
SERVICE_KEY: /mounted/priv.key
volumes:
- ./_mounted_recv:/mounted
depends_on:
- recv-echo-service
networks:
- hidden-lake
- local-relation
recv-echo-service:
build:
context: ./
dockerfile: recv_echo_service/Dockerfile
networks:
- local-relation
service-send:
build:
context: ./../../../../
dockerfile: cmd/hidden_lake/service/Dockerfile
environment:
SERVICE_PATH: /mounted
SERVICE_KEY: /mounted/priv.key
volumes:
- ./_mounted_send:/mounted
ports:
- "7572:7572"
networks:
- hidden-lake
networks:
hidden-lake:
driver: bridge
local-relation:
driver: bridge

View File

@ -1,12 +0,0 @@
FROM --platform=linux/amd64 ubuntu:20.04
RUN apt-get update && apt-get install -y wget gcc
RUN wget https://go.dev/dl/go1.16.linux-amd64.tar.gz && \
tar -C /opt -xzf go1.16.linux-amd64.tar.gz
WORKDIR /go-peer
ENV PATH="${PATH}:/opt/go/bin"
COPY ./ ./
RUN go build -o service ./recv_echo_service/main.go
ENTRYPOINT ["./service"]

View File

@ -1,38 +0,0 @@
package main
import (
"encoding/json"
"io"
"net/http"
)
type sResponse struct {
FEcho string `json:"echo"`
FReturn int `json:"return"`
}
func main() {
http.HandleFunc("/echo", echoPage)
http.ListenAndServe(":8080", nil)
}
func echoPage(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
response(w, 2, "failed: incorrect method")
return
}
res, err := io.ReadAll(r.Body)
if err != nil {
response(w, 3, "failed: read body")
return
}
response(w, 1, string(res))
}
func response(w http.ResponseWriter, ret int, res string) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(&sResponse{
FEcho: res,
FReturn: ret,
})
}

View File

@ -1,4 +1,21 @@
mode: set
github.com/number571/go-peer/internal/flag/flag.go:8.41,10.2 1 0
github.com/number571/go-peer/internal/flag/flag.go:12.49,14.2 1 0
github.com/number571/go-peer/internal/flag/flag.go:16.63,17.27 1 1
github.com/number571/go-peer/internal/flag/flag.go:17.27,19.22 2 1
github.com/number571/go-peer/internal/flag/flag.go:19.22,21.4 1 1
github.com/number571/go-peer/internal/flag/flag.go:23.2,23.14 1 1
github.com/number571/go-peer/internal/flag/flag.go:26.71,28.27 2 1
github.com/number571/go-peer/internal/flag/flag.go:28.27,29.18 1 1
github.com/number571/go-peer/internal/flag/flag.go:29.18,31.4 1 1
github.com/number571/go-peer/internal/flag/flag.go:32.3,33.40 2 1
github.com/number571/go-peer/internal/flag/flag.go:33.40,34.12 1 1
github.com/number571/go-peer/internal/flag/flag.go:36.3,37.24 2 1
github.com/number571/go-peer/internal/flag/flag.go:37.24,39.12 2 1
github.com/number571/go-peer/internal/flag/flag.go:41.3,41.40 1 1
github.com/number571/go-peer/internal/flag/flag.go:43.2,43.17 1 1
github.com/number571/go-peer/internal/flag/flag.go:43.17,44.47 1 1
github.com/number571/go-peer/internal/flag/flag.go:46.2,46.17 1 1
github.com/number571/go-peer/internal/closer/closer.go:9.47,11.29 2 1
github.com/number571/go-peer/internal/closer/closer.go:11.29,12.35 1 1
github.com/number571/go-peer/internal/closer/closer.go:12.35,14.4 1 1
@ -10,6 +27,28 @@ github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.33,17.3 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 1
github.com/number571/go-peer/internal/language/language.go:8.47,9.28 1 1
github.com/number571/go-peer/internal/language/language.go:10.17,11.23 1 1
github.com/number571/go-peer/internal/language/language.go:12.13,13.23 1 1
github.com/number571/go-peer/internal/language/language.go:14.13,15.23 1 1
github.com/number571/go-peer/internal/language/language.go:16.10,17.43 1 1
github.com/number571/go-peer/internal/language/language.go:21.44,22.15 1 1
github.com/number571/go-peer/internal/language/language.go:23.16,24.15 1 1
github.com/number571/go-peer/internal/language/language.go:25.16,26.15 1 1
github.com/number571/go-peer/internal/language/language.go:27.16,28.15 1 1
github.com/number571/go-peer/internal/language/language.go:29.10,30.28 1 1
github.com/number571/go-peer/internal/slices/slices.go:3.63,4.30 1 1
github.com/number571/go-peer/internal/slices/slices.go:4.30,6.3 1 1
github.com/number571/go-peer/internal/slices/slices.go:7.2,7.29 1 1
github.com/number571/go-peer/internal/slices/slices.go:10.61,12.27 2 1
github.com/number571/go-peer/internal/slices/slices.go:12.27,13.16 1 1
github.com/number571/go-peer/internal/slices/slices.go:13.16,14.12 1 1
github.com/number571/go-peer/internal/slices/slices.go:16.3,16.29 1 1
github.com/number571/go-peer/internal/slices/slices.go:18.2,18.15 1 1
github.com/number571/go-peer/internal/slices/slices.go:21.52,22.27 1 1
github.com/number571/go-peer/internal/slices/slices.go:22.27,23.16 1 1
github.com/number571/go-peer/internal/slices/slices.go:23.16,25.4 1 1
github.com/number571/go-peer/internal/slices/slices.go:27.2,27.14 1 1
github.com/number571/go-peer/internal/logger/std/log_func.go:7.35,8.45 1 1
github.com/number571/go-peer/internal/logger/std/log_func.go:8.45,10.10 2 1
github.com/number571/go-peer/internal/logger/std/log_func.go:10.10,11.32 1 1
@ -44,46 +83,41 @@ github.com/number571/go-peer/pkg/logger/settings.go:26.45,29.2 1 1
github.com/number571/go-peer/pkg/logger/settings.go:31.46,33.2 1 1
github.com/number571/go-peer/pkg/logger/settings.go:35.46,37.2 1 1
github.com/number571/go-peer/pkg/logger/settings.go:39.46,41.2 1 1
github.com/number571/go-peer/internal/slices/slices.go:3.63,4.30 1 1
github.com/number571/go-peer/internal/slices/slices.go:4.30,6.3 1 1
github.com/number571/go-peer/internal/slices/slices.go:7.2,7.29 1 1
github.com/number571/go-peer/internal/slices/slices.go:10.61,12.27 2 1
github.com/number571/go-peer/internal/slices/slices.go:12.27,13.16 1 1
github.com/number571/go-peer/internal/slices/slices.go:13.16,14.12 1 1
github.com/number571/go-peer/internal/slices/slices.go:16.3,16.29 1 1
github.com/number571/go-peer/internal/slices/slices.go:18.2,18.15 1 1
github.com/number571/go-peer/internal/slices/slices.go:21.52,22.27 1 1
github.com/number571/go-peer/internal/slices/slices.go:22.27,23.16 1 1
github.com/number571/go-peer/internal/slices/slices.go:23.16,25.4 1 1
github.com/number571/go-peer/internal/slices/slices.go:27.2,27.14 1 1
github.com/number571/go-peer/internal/language/language.go:8.47,9.28 1 1
github.com/number571/go-peer/internal/language/language.go:10.17,11.23 1 1
github.com/number571/go-peer/internal/language/language.go:12.13,13.23 1 1
github.com/number571/go-peer/internal/language/language.go:14.13,15.23 1 1
github.com/number571/go-peer/internal/language/language.go:16.10,17.43 1 1
github.com/number571/go-peer/internal/language/language.go:21.44,22.15 1 1
github.com/number571/go-peer/internal/language/language.go:23.16,24.15 1 1
github.com/number571/go-peer/internal/language/language.go:25.16,26.15 1 1
github.com/number571/go-peer/internal/language/language.go:27.16,28.15 1 1
github.com/number571/go-peer/internal/language/language.go:29.10,30.28 1 1
github.com/number571/go-peer/internal/flag/flag.go:8.41,10.2 1 0
github.com/number571/go-peer/internal/flag/flag.go:12.49,14.2 1 0
github.com/number571/go-peer/internal/flag/flag.go:16.63,17.27 1 1
github.com/number571/go-peer/internal/flag/flag.go:17.27,19.22 2 1
github.com/number571/go-peer/internal/flag/flag.go:19.22,21.4 1 1
github.com/number571/go-peer/internal/flag/flag.go:23.2,23.14 1 1
github.com/number571/go-peer/internal/flag/flag.go:26.71,28.27 2 1
github.com/number571/go-peer/internal/flag/flag.go:28.27,29.18 1 1
github.com/number571/go-peer/internal/flag/flag.go:29.18,31.4 1 1
github.com/number571/go-peer/internal/flag/flag.go:32.3,33.40 2 1
github.com/number571/go-peer/internal/flag/flag.go:33.40,34.12 1 1
github.com/number571/go-peer/internal/flag/flag.go:36.3,37.24 2 1
github.com/number571/go-peer/internal/flag/flag.go:37.24,39.12 2 1
github.com/number571/go-peer/internal/flag/flag.go:41.3,41.40 1 1
github.com/number571/go-peer/internal/flag/flag.go:43.2,43.17 1 1
github.com/number571/go-peer/internal/flag/flag.go:43.17,44.47 1 1
github.com/number571/go-peer/internal/flag/flag.go:46.2,46.17 1 1
github.com/number571/go-peer/internal/pprof/pprof.go:10.50,26.2 8 1
github.com/number571/go-peer/internal/logger/http/log_builder.go:16.67,25.2 3 1
github.com/number571/go-peer/internal/logger/http/log_builder.go:27.40,29.2 1 1
github.com/number571/go-peer/internal/logger/http/log_builder.go:31.60,34.2 2 1
github.com/number571/go-peer/internal/logger/http/log_func.go:13.35,14.45 1 1
github.com/number571/go-peer/internal/logger/http/log_func.go:14.45,16.10 2 1
github.com/number571/go-peer/internal/logger/http/log_func.go:16.10,17.32 1 1
github.com/number571/go-peer/internal/logger/http/log_func.go:20.3,28.4 2 1
github.com/number571/go-peer/internal/logger/http/log_getter.go:7.57,11.2 1 1
github.com/number571/go-peer/internal/logger/http/log_getter.go:13.42,15.2 1 1
github.com/number571/go-peer/internal/logger/http/log_getter.go:17.39,19.2 1 1
github.com/number571/go-peer/internal/logger/http/log_getter.go:21.41,23.2 1 1
github.com/number571/go-peer/internal/logger/http/log_getter.go:25.39,27.2 1 1
github.com/number571/go-peer/internal/logger/http/log_getter.go:29.42,31.2 1 1
github.com/number571/go-peer/pkg/logger/logger.go:28.60,35.23 3 0
github.com/number571/go-peer/pkg/logger/logger.go:35.23,37.3 1 0
github.com/number571/go-peer/pkg/logger/logger.go:39.2,40.23 2 0
github.com/number571/go-peer/pkg/logger/logger.go:40.23,42.3 1 0
github.com/number571/go-peer/pkg/logger/logger.go:44.2,45.23 2 0
github.com/number571/go-peer/pkg/logger/logger.go:45.23,47.3 1 0
github.com/number571/go-peer/pkg/logger/logger.go:49.2,49.15 1 0
github.com/number571/go-peer/pkg/logger/logger.go:52.43,54.2 1 0
github.com/number571/go-peer/pkg/logger/logger.go:56.42,57.23 1 0
github.com/number571/go-peer/pkg/logger/logger.go:57.23,59.3 1 0
github.com/number571/go-peer/pkg/logger/logger.go:60.2,60.38 1 0
github.com/number571/go-peer/pkg/logger/logger.go:63.42,64.23 1 0
github.com/number571/go-peer/pkg/logger/logger.go:64.23,66.3 1 0
github.com/number571/go-peer/pkg/logger/logger.go:67.2,67.38 1 0
github.com/number571/go-peer/pkg/logger/logger.go:70.42,71.23 1 0
github.com/number571/go-peer/pkg/logger/logger.go:71.23,73.3 1 0
github.com/number571/go-peer/pkg/logger/logger.go:74.2,74.38 1 0
github.com/number571/go-peer/pkg/logger/settings.go:18.46,24.2 1 0
github.com/number571/go-peer/pkg/logger/settings.go:26.45,29.2 1 0
github.com/number571/go-peer/pkg/logger/settings.go:31.46,33.2 1 0
github.com/number571/go-peer/pkg/logger/settings.go:35.46,37.2 1 0
github.com/number571/go-peer/pkg/logger/settings.go:39.46,41.2 1 0
github.com/number571/go-peer/internal/logger/anon/log_func.go:16.35,17.45 1 1
github.com/number571/go-peer/internal/logger/anon/log_func.go:17.45,19.10 2 1
github.com/number571/go-peer/internal/logger/anon/log_func.go:19.10,20.32 1 1
@ -386,41 +420,99 @@ github.com/number571/go-peer/test/utils/testutils.go:10.25,12.29 2 0
github.com/number571/go-peer/test/utils/testutils.go:12.29,14.12 2 0
github.com/number571/go-peer/test/utils/testutils.go:16.3,16.13 1 0
github.com/number571/go-peer/test/utils/testutils.go:18.2,18.15 1 0
github.com/number571/go-peer/internal/logger/http/log_builder.go:16.67,25.2 3 1
github.com/number571/go-peer/internal/logger/http/log_builder.go:27.40,29.2 1 1
github.com/number571/go-peer/internal/logger/http/log_builder.go:31.60,34.2 2 1
github.com/number571/go-peer/internal/logger/http/log_func.go:13.35,14.45 1 1
github.com/number571/go-peer/internal/logger/http/log_func.go:14.45,16.10 2 1
github.com/number571/go-peer/internal/logger/http/log_func.go:16.10,17.32 1 1
github.com/number571/go-peer/internal/logger/http/log_func.go:20.3,28.4 2 1
github.com/number571/go-peer/internal/logger/http/log_getter.go:7.57,11.2 1 1
github.com/number571/go-peer/internal/logger/http/log_getter.go:13.42,15.2 1 1
github.com/number571/go-peer/internal/logger/http/log_getter.go:17.39,19.2 1 1
github.com/number571/go-peer/internal/logger/http/log_getter.go:21.41,23.2 1 1
github.com/number571/go-peer/internal/logger/http/log_getter.go:25.39,27.2 1 1
github.com/number571/go-peer/internal/logger/http/log_getter.go:29.42,31.2 1 1
github.com/number571/go-peer/pkg/logger/logger.go:28.60,35.23 3 0
github.com/number571/go-peer/pkg/logger/logger.go:35.23,37.3 1 0
github.com/number571/go-peer/pkg/logger/logger.go:39.2,40.23 2 0
github.com/number571/go-peer/pkg/logger/logger.go:40.23,42.3 1 0
github.com/number571/go-peer/pkg/logger/logger.go:44.2,45.23 2 0
github.com/number571/go-peer/pkg/logger/logger.go:45.23,47.3 1 0
github.com/number571/go-peer/pkg/logger/logger.go:49.2,49.15 1 0
github.com/number571/go-peer/pkg/logger/logger.go:52.43,54.2 1 0
github.com/number571/go-peer/pkg/logger/logger.go:56.42,57.23 1 0
github.com/number571/go-peer/pkg/logger/logger.go:57.23,59.3 1 0
github.com/number571/go-peer/pkg/logger/logger.go:60.2,60.38 1 0
github.com/number571/go-peer/pkg/logger/logger.go:63.42,64.23 1 0
github.com/number571/go-peer/pkg/logger/logger.go:64.23,66.3 1 0
github.com/number571/go-peer/pkg/logger/logger.go:67.2,67.38 1 0
github.com/number571/go-peer/pkg/logger/logger.go:70.42,71.23 1 0
github.com/number571/go-peer/pkg/logger/logger.go:71.23,73.3 1 0
github.com/number571/go-peer/pkg/logger/logger.go:74.2,74.38 1 0
github.com/number571/go-peer/pkg/logger/settings.go:18.46,24.2 1 0
github.com/number571/go-peer/pkg/logger/settings.go:26.45,29.2 1 0
github.com/number571/go-peer/pkg/logger/settings.go:31.46,33.2 1 0
github.com/number571/go-peer/pkg/logger/settings.go:35.46,37.2 1 0
github.com/number571/go-peer/pkg/logger/settings.go:39.46,41.2 1 0
github.com/number571/go-peer/internal/pprof/pprof.go:10.50,26.2 8 1
github.com/number571/go-peer/pkg/client/message/message.go:37.71,41.26 3 1
github.com/number571/go-peer/pkg/client/message/message.go:42.14,43.14 1 1
github.com/number571/go-peer/pkg/client/message/message.go:44.14,45.22 1 1
github.com/number571/go-peer/pkg/client/message/message.go:46.10,47.29 1 1
github.com/number571/go-peer/pkg/client/message/message.go:50.2,51.13 2 1
github.com/number571/go-peer/pkg/client/message/message.go:51.13,53.3 1 1
github.com/number571/go-peer/pkg/client/message/message.go:55.2,55.67 1 1
github.com/number571/go-peer/pkg/client/message/message.go:55.67,57.3 1 1
github.com/number571/go-peer/pkg/client/message/message.go:59.2,59.26 1 1
github.com/number571/go-peer/pkg/client/message/message.go:60.14,61.37 1 1
github.com/number571/go-peer/pkg/client/message/message.go:62.14,65.26 3 1
github.com/number571/go-peer/pkg/client/message/message.go:65.26,67.4 1 1
github.com/number571/go-peer/pkg/client/message/message.go:70.2,70.25 1 1
github.com/number571/go-peer/pkg/client/message/message.go:70.25,72.3 1 1
github.com/number571/go-peer/pkg/client/message/message.go:74.2,74.17 1 1
github.com/number571/go-peer/pkg/client/message/message.go:77.39,79.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:81.39,83.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:85.37,87.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:89.37,91.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:93.37,95.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:97.40,99.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:101.37,109.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:111.38,119.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:121.50,124.9 3 1
github.com/number571/go-peer/pkg/client/message/message.go:132.49,133.15 1 1
github.com/number571/go-peer/pkg/client/message/message.go:134.10,135.14 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:13.46,18.2 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:20.45,21.25 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:21.25,22.31 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:24.2,24.30 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:24.30,25.36 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:27.2,27.10 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:30.45,32.2 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:34.50,36.2 1 1
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:21.44,27.2 3 0
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:29.43,31.2 1 0
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:33.42,35.2 1 0
github.com/number571/go-peer/pkg/crypto/hashing/hmac.go:18.61,24.2 3 0
github.com/number571/go-peer/pkg/crypto/hashing/hmac.go:26.47,28.2 1 0
github.com/number571/go-peer/pkg/crypto/hashing/hmac.go:30.46,32.2 1 0
github.com/number571/go-peer/pkg/crypto/random/random.go:15.13,16.35 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:16.35,17.41 1 0
github.com/number571/go-peer/pkg/crypto/random/random.go:28.25,30.2 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:33.46,36.16 3 1
github.com/number571/go-peer/pkg/crypto/random/random.go:36.16,37.13 1 0
github.com/number571/go-peer/pkg/crypto/random/random.go:39.2,39.14 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:57.47,62.30 4 1
github.com/number571/go-peer/pkg/crypto/random/random.go:62.30,64.3 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:66.2,66.24 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:70.39,74.2 3 0
github.com/number571/go-peer/pkg/crypto/random/random.go:77.35,79.2 1 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:23.40,24.30 1 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:24.30,25.36 1 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:27.2,28.16 2 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:28.16,29.36 1 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:31.2,33.3 1 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:36.55,46.2 7 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:48.55,50.27 2 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:50.27,52.3 1 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:54.2,58.15 4 0
github.com/number571/go-peer/pkg/encoding/bytes.go:17.51,22.16 4 0
github.com/number571/go-peer/pkg/encoding/bytes.go:22.16,23.13 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:26.2,27.12 2 0
github.com/number571/go-peer/pkg/encoding/bytes.go:31.53,33.2 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:5.37,7.2 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:9.37,11.16 2 1
github.com/number571/go-peer/pkg/encoding/hex.go:11.16,13.3 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:14.2,14.15 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:9.46,11.16 2 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:14.2,14.12 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:17.60,18.52 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:18.52,20.3 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:21.2,21.12 1 1
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:8.46,10.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:10.16,12.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:13.2,13.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:16.60,17.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:17.52,19.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:20.2,20.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:7.42,9.30 2 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:9.30,10.17 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:10.17,11.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.33,17.3 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 1
github.com/number571/go-peer/test/utils/testutils.go:8.57,10.25 2 0
github.com/number571/go-peer/test/utils/testutils.go:10.25,12.29 2 0
github.com/number571/go-peer/test/utils/testutils.go:12.29,14.12 2 0
github.com/number571/go-peer/test/utils/testutils.go:16.3,16.13 1 0
github.com/number571/go-peer/test/utils/testutils.go:18.2,18.15 1 0
github.com/number571/go-peer/pkg/client/client.go:30.79,31.50 1 1
github.com/number571/go-peer/pkg/client/client.go:31.50,32.45 1 1
github.com/number571/go-peer/pkg/client/client.go:35.2,47.51 4 1
@ -622,98 +714,6 @@ github.com/number571/go-peer/test/utils/testutils.go:10.25,12.29 2 0
github.com/number571/go-peer/test/utils/testutils.go:12.29,14.12 2 0
github.com/number571/go-peer/test/utils/testutils.go:16.3,16.13 1 0
github.com/number571/go-peer/test/utils/testutils.go:18.2,18.15 1 0
github.com/number571/go-peer/pkg/client/message/message.go:37.71,41.26 3 1
github.com/number571/go-peer/pkg/client/message/message.go:42.14,43.14 1 1
github.com/number571/go-peer/pkg/client/message/message.go:44.14,45.22 1 1
github.com/number571/go-peer/pkg/client/message/message.go:46.10,47.29 1 1
github.com/number571/go-peer/pkg/client/message/message.go:50.2,51.13 2 1
github.com/number571/go-peer/pkg/client/message/message.go:51.13,53.3 1 1
github.com/number571/go-peer/pkg/client/message/message.go:55.2,55.67 1 1
github.com/number571/go-peer/pkg/client/message/message.go:55.67,57.3 1 1
github.com/number571/go-peer/pkg/client/message/message.go:59.2,59.26 1 1
github.com/number571/go-peer/pkg/client/message/message.go:60.14,61.37 1 1
github.com/number571/go-peer/pkg/client/message/message.go:62.14,65.26 3 1
github.com/number571/go-peer/pkg/client/message/message.go:65.26,67.4 1 1
github.com/number571/go-peer/pkg/client/message/message.go:70.2,70.25 1 1
github.com/number571/go-peer/pkg/client/message/message.go:70.25,72.3 1 1
github.com/number571/go-peer/pkg/client/message/message.go:74.2,74.17 1 1
github.com/number571/go-peer/pkg/client/message/message.go:77.39,79.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:81.39,83.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:85.37,87.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:89.37,91.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:93.37,95.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:97.40,99.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:101.37,109.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:111.38,119.2 1 1
github.com/number571/go-peer/pkg/client/message/message.go:121.50,124.9 3 1
github.com/number571/go-peer/pkg/client/message/message.go:132.49,133.15 1 1
github.com/number571/go-peer/pkg/client/message/message.go:134.10,135.14 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:13.46,18.2 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:20.45,21.25 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:21.25,22.31 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:24.2,24.30 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:24.30,25.36 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:27.2,27.10 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:30.45,32.2 1 1
github.com/number571/go-peer/pkg/client/message/settings.go:34.50,36.2 1 1
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:21.44,27.2 3 0
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:29.43,31.2 1 0
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:33.42,35.2 1 0
github.com/number571/go-peer/pkg/crypto/hashing/hmac.go:18.61,24.2 3 0
github.com/number571/go-peer/pkg/crypto/hashing/hmac.go:26.47,28.2 1 0
github.com/number571/go-peer/pkg/crypto/hashing/hmac.go:30.46,32.2 1 0
github.com/number571/go-peer/pkg/crypto/random/random.go:15.13,16.35 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:16.35,17.41 1 0
github.com/number571/go-peer/pkg/crypto/random/random.go:28.25,30.2 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:33.46,36.16 3 1
github.com/number571/go-peer/pkg/crypto/random/random.go:36.16,37.13 1 0
github.com/number571/go-peer/pkg/crypto/random/random.go:39.2,39.14 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:57.47,62.30 4 1
github.com/number571/go-peer/pkg/crypto/random/random.go:62.30,64.3 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:66.2,66.24 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:70.39,74.2 3 0
github.com/number571/go-peer/pkg/crypto/random/random.go:77.35,79.2 1 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:23.40,24.30 1 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:24.30,25.36 1 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:27.2,28.16 2 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:28.16,29.36 1 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:31.2,33.3 1 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:36.55,46.2 7 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:48.55,50.27 2 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:50.27,52.3 1 0
github.com/number571/go-peer/pkg/crypto/symmetric/symmetric.go:54.2,58.15 4 0
github.com/number571/go-peer/pkg/encoding/bytes.go:17.51,22.16 4 0
github.com/number571/go-peer/pkg/encoding/bytes.go:22.16,23.13 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:26.2,27.12 2 0
github.com/number571/go-peer/pkg/encoding/bytes.go:31.53,33.2 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:5.37,7.2 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:9.37,11.16 2 1
github.com/number571/go-peer/pkg/encoding/hex.go:11.16,13.3 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:14.2,14.15 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:9.46,11.16 2 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:14.2,14.12 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:17.60,18.52 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:18.52,20.3 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:21.2,21.12 1 1
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:8.46,10.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:10.16,12.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:13.2,13.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:16.60,17.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:17.52,19.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:20.2,20.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:7.42,9.30 2 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:9.30,10.17 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:10.17,11.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.33,17.3 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 1
github.com/number571/go-peer/test/utils/testutils.go:8.57,10.25 2 0
github.com/number571/go-peer/test/utils/testutils.go:10.25,12.29 2 0
github.com/number571/go-peer/test/utils/testutils.go:12.29,14.12 2 0
github.com/number571/go-peer/test/utils/testutils.go:16.3,16.13 1 0
github.com/number571/go-peer/test/utils/testutils.go:18.2,18.15 1 0
github.com/number571/go-peer/internal/api/request.go:12.93,18.27 2 1
github.com/number571/go-peer/internal/api/request.go:19.14,21.15 2 1
github.com/number571/go-peer/internal/api/request.go:22.14,24.23 2 1
@ -767,33 +767,39 @@ github.com/number571/go-peer/test/utils/testutils.go:10.25,12.29 2 0
github.com/number571/go-peer/test/utils/testutils.go:12.29,14.12 2 0
github.com/number571/go-peer/test/utils/testutils.go:16.3,16.13 1 0
github.com/number571/go-peer/test/utils/testutils.go:18.2,18.15 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:17.51,22.16 4 1
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:21.44,27.2 3 1
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:29.43,31.2 1 1
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:33.42,35.2 1 1
github.com/number571/go-peer/pkg/crypto/hashing/hmac.go:18.61,24.2 3 1
github.com/number571/go-peer/pkg/crypto/hashing/hmac.go:26.47,28.2 1 1
github.com/number571/go-peer/pkg/crypto/hashing/hmac.go:30.46,32.2 1 1
github.com/number571/go-peer/pkg/encoding/bytes.go:17.51,22.16 4 0
github.com/number571/go-peer/pkg/encoding/bytes.go:22.16,23.13 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:26.2,27.12 2 1
github.com/number571/go-peer/pkg/encoding/bytes.go:31.53,33.2 1 1
github.com/number571/go-peer/pkg/encoding/bytes.go:26.2,27.12 2 0
github.com/number571/go-peer/pkg/encoding/bytes.go:31.53,33.2 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:5.37,7.2 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:9.37,11.16 2 1
github.com/number571/go-peer/pkg/encoding/hex.go:11.16,13.3 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:14.2,14.15 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:9.46,11.16 2 1
github.com/number571/go-peer/pkg/encoding/hex.go:9.37,11.16 2 0
github.com/number571/go-peer/pkg/encoding/hex.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:14.2,14.15 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:9.46,11.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:14.2,14.12 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:17.60,18.52 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:18.52,20.3 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:21.2,21.12 1 1
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:8.46,10.16 2 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:14.2,14.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:17.60,18.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:18.52,20.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:21.2,21.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:8.46,10.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:10.16,12.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:13.2,13.12 1 1
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:16.60,17.52 1 1
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:17.52,19.3 1 1
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:20.2,20.12 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:7.42,9.30 2 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:9.30,10.17 1 1
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:13.2,13.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:16.60,17.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:17.52,19.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:20.2,20.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:7.42,9.30 2 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:9.30,10.17 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:10.17,11.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.33,17.3 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 0
github.com/number571/go-peer/pkg/crypto/random/random.go:15.13,16.35 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:16.35,17.41 1 0
github.com/number571/go-peer/pkg/crypto/random/random.go:28.25,30.2 1 1
@ -863,6 +869,71 @@ github.com/number571/go-peer/pkg/logger/settings.go:26.45,29.2 1 1
github.com/number571/go-peer/pkg/logger/settings.go:31.46,33.2 1 1
github.com/number571/go-peer/pkg/logger/settings.go:35.46,37.2 1 1
github.com/number571/go-peer/pkg/logger/settings.go:39.46,41.2 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:15.13,16.35 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:16.35,17.41 1 0
github.com/number571/go-peer/pkg/crypto/random/random.go:28.25,30.2 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:33.46,36.16 3 1
github.com/number571/go-peer/pkg/crypto/random/random.go:36.16,37.13 1 0
github.com/number571/go-peer/pkg/crypto/random/random.go:39.2,39.14 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:57.47,62.30 4 1
github.com/number571/go-peer/pkg/crypto/random/random.go:62.30,64.3 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:66.2,66.24 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:70.39,74.2 3 1
github.com/number571/go-peer/pkg/crypto/random/random.go:77.35,79.2 1 1
github.com/number571/go-peer/pkg/encoding/bytes.go:17.51,22.16 4 0
github.com/number571/go-peer/pkg/encoding/bytes.go:22.16,23.13 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:26.2,27.12 2 0
github.com/number571/go-peer/pkg/encoding/bytes.go:31.53,33.2 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:5.37,7.2 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:9.37,11.16 2 0
github.com/number571/go-peer/pkg/encoding/hex.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:14.2,14.15 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:9.46,11.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:14.2,14.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:17.60,18.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:18.52,20.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:21.2,21.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:8.46,10.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:10.16,12.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:13.2,13.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:16.60,17.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:17.52,19.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:20.2,20.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:7.42,9.30 2 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:9.30,10.17 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:10.17,11.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.33,17.3 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:17.51,22.16 4 1
github.com/number571/go-peer/pkg/encoding/bytes.go:22.16,23.13 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:26.2,27.12 2 1
github.com/number571/go-peer/pkg/encoding/bytes.go:31.53,33.2 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:5.37,7.2 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:9.37,11.16 2 1
github.com/number571/go-peer/pkg/encoding/hex.go:11.16,13.3 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:14.2,14.15 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:9.46,11.16 2 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:14.2,14.12 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:17.60,18.52 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:18.52,20.3 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:21.2,21.12 1 1
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:8.46,10.16 2 1
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:10.16,12.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:13.2,13.12 1 1
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:16.60,17.52 1 1
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:17.52,19.3 1 1
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:20.2,20.12 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:7.42,9.30 2 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:9.30,10.17 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:10.17,11.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.33,17.3 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 1
github.com/number571/go-peer/pkg/crypto/keybuilder/keybuilder.go:19.61,24.2 1 1
github.com/number571/go-peer/pkg/crypto/keybuilder/keybuilder.go:26.54,34.2 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:15.13,16.35 1 1
@ -918,77 +989,6 @@ github.com/number571/go-peer/test/utils/testutils.go:12.29,14.12 2 0
github.com/number571/go-peer/test/utils/testutils.go:16.3,16.13 1 0
github.com/number571/go-peer/test/utils/testutils.go:18.2,18.15 1 0
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:21.44,27.2 3 1
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:29.43,31.2 1 1
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:33.42,35.2 1 1
github.com/number571/go-peer/pkg/crypto/hashing/hmac.go:18.61,24.2 3 1
github.com/number571/go-peer/pkg/crypto/hashing/hmac.go:26.47,28.2 1 1
github.com/number571/go-peer/pkg/crypto/hashing/hmac.go:30.46,32.2 1 1
github.com/number571/go-peer/pkg/encoding/bytes.go:17.51,22.16 4 0
github.com/number571/go-peer/pkg/encoding/bytes.go:22.16,23.13 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:26.2,27.12 2 0
github.com/number571/go-peer/pkg/encoding/bytes.go:31.53,33.2 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:5.37,7.2 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:9.37,11.16 2 0
github.com/number571/go-peer/pkg/encoding/hex.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:14.2,14.15 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:9.46,11.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:14.2,14.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:17.60,18.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:18.52,20.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:21.2,21.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:8.46,10.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:10.16,12.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:13.2,13.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:16.60,17.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:17.52,19.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:20.2,20.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:7.42,9.30 2 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:9.30,10.17 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:10.17,11.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.33,17.3 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 0
github.com/number571/go-peer/pkg/crypto/random/random.go:15.13,16.35 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:16.35,17.41 1 0
github.com/number571/go-peer/pkg/crypto/random/random.go:28.25,30.2 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:33.46,36.16 3 1
github.com/number571/go-peer/pkg/crypto/random/random.go:36.16,37.13 1 0
github.com/number571/go-peer/pkg/crypto/random/random.go:39.2,39.14 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:57.47,62.30 4 1
github.com/number571/go-peer/pkg/crypto/random/random.go:62.30,64.3 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:66.2,66.24 1 1
github.com/number571/go-peer/pkg/crypto/random/random.go:70.39,74.2 3 1
github.com/number571/go-peer/pkg/crypto/random/random.go:77.35,79.2 1 1
github.com/number571/go-peer/pkg/encoding/bytes.go:17.51,22.16 4 0
github.com/number571/go-peer/pkg/encoding/bytes.go:22.16,23.13 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:26.2,27.12 2 0
github.com/number571/go-peer/pkg/encoding/bytes.go:31.53,33.2 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:5.37,7.2 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:9.37,11.16 2 0
github.com/number571/go-peer/pkg/encoding/hex.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:14.2,14.15 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:9.46,11.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:14.2,14.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:17.60,18.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:18.52,20.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:21.2,21.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:8.46,10.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:10.16,12.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:13.2,13.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:16.60,17.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:17.52,19.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:20.2,20.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:7.42,9.30 2 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:9.30,10.17 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:10.17,11.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.33,17.3 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 0
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:21.44,27.2 3 1
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:29.43,31.2 1 0
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:33.42,35.2 1 1
github.com/number571/go-peer/pkg/crypto/hashing/hmac.go:18.61,24.2 3 0
@ -1241,7 +1241,7 @@ github.com/number571/go-peer/pkg/network/network.go:108.52,110.16 2 1
github.com/number571/go-peer/pkg/network/network.go:110.16,112.3 1 1
github.com/number571/go-peer/pkg/network/network.go:113.2,116.6 3 1
github.com/number571/go-peer/pkg/network/network.go:116.6,117.10 1 1
github.com/number571/go-peer/pkg/network/network.go:118.22,119.21 1 1
github.com/number571/go-peer/pkg/network/network.go:118.22,119.21 1 0
github.com/number571/go-peer/pkg/network/network.go:120.11,122.18 2 1
github.com/number571/go-peer/pkg/network/network.go:122.18,124.5 1 1
github.com/number571/go-peer/pkg/network/network.go:126.4,126.26 1 1
@ -1326,7 +1326,7 @@ github.com/number571/go-peer/pkg/network/conn/conn.go:111.2,111.12 1 1
github.com/number571/go-peer/pkg/network/conn/conn.go:114.102,117.16 2 1
github.com/number571/go-peer/pkg/network/conn/conn.go:117.16,119.3 1 1
github.com/number571/go-peer/pkg/network/conn/conn.go:121.2,122.16 2 1
github.com/number571/go-peer/pkg/network/conn/conn.go:122.16,124.3 1 0
github.com/number571/go-peer/pkg/network/conn/conn.go:122.16,124.3 1 1
github.com/number571/go-peer/pkg/network/conn/conn.go:127.2,134.36 2 1
github.com/number571/go-peer/pkg/network/conn/conn.go:134.36,136.3 1 0
github.com/number571/go-peer/pkg/network/conn/conn.go:139.2,141.16 3 1
@ -1449,44 +1449,6 @@ github.com/number571/go-peer/test/utils/testutils.go:10.25,12.29 2 1
github.com/number571/go-peer/test/utils/testutils.go:12.29,14.12 2 0
github.com/number571/go-peer/test/utils/testutils.go:16.3,16.13 1 1
github.com/number571/go-peer/test/utils/testutils.go:18.2,18.15 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:17.51,22.16 4 1
github.com/number571/go-peer/pkg/encoding/bytes.go:22.16,23.13 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:26.2,27.12 2 1
github.com/number571/go-peer/pkg/encoding/bytes.go:31.53,33.2 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:5.37,7.2 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:9.37,11.16 2 0
github.com/number571/go-peer/pkg/encoding/hex.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:14.2,14.15 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:9.46,11.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:14.2,14.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:17.60,18.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:18.52,20.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:21.2,21.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:8.46,10.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:10.16,12.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:13.2,13.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:16.60,17.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:17.52,19.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:20.2,20.12 1 0
github.com/number571/go-peer/pkg/network/anonymity/adapters/payload.go:15.54,19.2 1 1
github.com/number571/go-peer/pkg/network/anonymity/adapters/payload.go:21.37,23.2 1 1
github.com/number571/go-peer/pkg/network/anonymity/adapters/payload.go:25.37,27.2 1 1
github.com/number571/go-peer/pkg/network/anonymity/adapters/payload.go:29.48,31.2 1 1
github.com/number571/go-peer/pkg/payload/payload.go:15.54,21.2 2 1
github.com/number571/go-peer/pkg/payload/payload.go:23.49,24.47 1 0
github.com/number571/go-peer/pkg/payload/payload.go:24.47,26.3 1 0
github.com/number571/go-peer/pkg/payload/payload.go:27.2,27.32 1 0
github.com/number571/go-peer/pkg/payload/payload.go:30.36,34.2 3 1
github.com/number571/go-peer/pkg/payload/payload.go:36.36,38.2 1 1
github.com/number571/go-peer/pkg/payload/payload.go:40.36,42.2 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:7.42,9.30 2 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:9.30,10.17 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:10.17,11.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.33,17.3 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 0
github.com/number571/go-peer/pkg/crypto/asymmetric/asymmetric.go:36.55,41.2 1 0
github.com/number571/go-peer/pkg/crypto/asymmetric/asymmetric.go:44.43,46.16 2 0
github.com/number571/go-peer/pkg/crypto/asymmetric/asymmetric.go:46.16,47.13 1 0
@ -1755,11 +1717,11 @@ github.com/number571/go-peer/test/utils/testutils.go:18.2,18.15 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:17.51,22.16 4 1
github.com/number571/go-peer/pkg/encoding/bytes.go:22.16,23.13 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:26.2,27.12 2 1
github.com/number571/go-peer/pkg/encoding/bytes.go:31.53,33.2 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:5.37,7.2 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:9.37,11.16 2 1
github.com/number571/go-peer/pkg/encoding/hex.go:11.16,13.3 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:14.2,14.15 1 1
github.com/number571/go-peer/pkg/encoding/bytes.go:31.53,33.2 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:5.37,7.2 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:9.37,11.16 2 0
github.com/number571/go-peer/pkg/encoding/hex.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:14.2,14.15 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:9.46,11.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:14.2,14.12 1 0
@ -1772,23 +1734,17 @@ github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:13.2,13.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:16.60,17.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:17.52,19.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:20.2,20.12 1 0
github.com/number571/go-peer/pkg/queue_set/queue_set.go:21.49,27.2 1 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:29.45,31.2 1 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:33.39,38.2 3 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:40.53,45.19 4 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:45.19,47.3 1 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:49.2,50.17 2 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:50.17,51.40 1 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:54.2,54.19 1 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:57.52,63.33 4 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:63.33,65.3 1 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:68.2,76.13 5 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:79.54,85.2 4 1
github.com/number571/go-peer/pkg/queue_set/settings.go:12.46,16.2 1 1
github.com/number571/go-peer/pkg/queue_set/settings.go:18.45,19.22 1 1
github.com/number571/go-peer/pkg/queue_set/settings.go:19.22,20.28 1 1
github.com/number571/go-peer/pkg/queue_set/settings.go:22.2,22.10 1 1
github.com/number571/go-peer/pkg/queue_set/settings.go:25.42,27.2 1 1
github.com/number571/go-peer/pkg/network/anonymity/adapters/payload.go:15.54,19.2 1 1
github.com/number571/go-peer/pkg/network/anonymity/adapters/payload.go:21.37,23.2 1 1
github.com/number571/go-peer/pkg/network/anonymity/adapters/payload.go:25.37,27.2 1 1
github.com/number571/go-peer/pkg/network/anonymity/adapters/payload.go:29.48,31.2 1 1
github.com/number571/go-peer/pkg/payload/payload.go:15.54,21.2 2 1
github.com/number571/go-peer/pkg/payload/payload.go:23.49,24.47 1 0
github.com/number571/go-peer/pkg/payload/payload.go:24.47,26.3 1 0
github.com/number571/go-peer/pkg/payload/payload.go:27.2,27.32 1 0
github.com/number571/go-peer/pkg/payload/payload.go:30.36,34.2 3 1
github.com/number571/go-peer/pkg/payload/payload.go:36.36,38.2 1 1
github.com/number571/go-peer/pkg/payload/payload.go:40.36,42.2 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:7.42,9.30 2 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:9.30,10.17 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:10.17,11.12 1 0
@ -1796,6 +1752,45 @@ github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.33,17.3 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:17.51,22.16 4 1
github.com/number571/go-peer/pkg/encoding/bytes.go:22.16,23.13 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:26.2,27.12 2 1
github.com/number571/go-peer/pkg/encoding/bytes.go:31.53,33.2 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:5.37,7.2 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:9.37,11.16 2 0
github.com/number571/go-peer/pkg/encoding/hex.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:14.2,14.15 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:9.46,11.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:14.2,14.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:17.60,18.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:18.52,20.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:21.2,21.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:8.46,10.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:10.16,12.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:13.2,13.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:16.60,17.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:17.52,19.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:20.2,20.12 1 0
github.com/number571/go-peer/pkg/payload/payload.go:15.54,21.2 2 1
github.com/number571/go-peer/pkg/payload/payload.go:23.49,24.47 1 1
github.com/number571/go-peer/pkg/payload/payload.go:24.47,26.3 1 1
github.com/number571/go-peer/pkg/payload/payload.go:27.2,27.32 1 1
github.com/number571/go-peer/pkg/payload/payload.go:30.36,34.2 3 1
github.com/number571/go-peer/pkg/payload/payload.go:36.36,38.2 1 1
github.com/number571/go-peer/pkg/payload/payload.go:40.36,42.2 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:7.42,9.30 2 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:9.30,10.17 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:10.17,11.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.33,17.3 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 0
github.com/number571/go-peer/test/utils/testutils.go:8.57,10.25 2 0
github.com/number571/go-peer/test/utils/testutils.go:10.25,12.29 2 0
github.com/number571/go-peer/test/utils/testutils.go:12.29,14.12 2 0
github.com/number571/go-peer/test/utils/testutils.go:16.3,16.13 1 0
github.com/number571/go-peer/test/utils/testutils.go:18.2,18.15 1 0
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:21.44,27.2 3 1
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:29.43,31.2 1 0
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:33.42,35.2 1 1
@ -1901,45 +1896,26 @@ github.com/number571/go-peer/test/utils/testutils.go:10.25,12.29 2 0
github.com/number571/go-peer/test/utils/testutils.go:12.29,14.12 2 0
github.com/number571/go-peer/test/utils/testutils.go:16.3,16.13 1 0
github.com/number571/go-peer/test/utils/testutils.go:18.2,18.15 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:17.51,22.16 4 1
github.com/number571/go-peer/pkg/encoding/bytes.go:22.16,23.13 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:26.2,27.12 2 1
github.com/number571/go-peer/pkg/encoding/bytes.go:31.53,33.2 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:5.37,7.2 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:9.37,11.16 2 0
github.com/number571/go-peer/pkg/encoding/hex.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:14.2,14.15 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:9.46,11.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:14.2,14.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:17.60,18.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:18.52,20.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:21.2,21.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:8.46,10.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:10.16,12.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:13.2,13.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:16.60,17.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:17.52,19.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:20.2,20.12 1 0
github.com/number571/go-peer/pkg/payload/payload.go:15.54,21.2 2 1
github.com/number571/go-peer/pkg/payload/payload.go:23.49,24.47 1 1
github.com/number571/go-peer/pkg/payload/payload.go:24.47,26.3 1 1
github.com/number571/go-peer/pkg/payload/payload.go:27.2,27.32 1 1
github.com/number571/go-peer/pkg/payload/payload.go:30.36,34.2 3 1
github.com/number571/go-peer/pkg/payload/payload.go:36.36,38.2 1 1
github.com/number571/go-peer/pkg/payload/payload.go:40.36,42.2 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:7.42,9.30 2 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:9.30,10.17 1 0
github.com/number571/go-peer/pkg/state/state.go:18.28,20.2 1 1
github.com/number571/go-peer/pkg/state/state.go:22.42,26.16 3 1
github.com/number571/go-peer/pkg/state/state.go:26.16,28.3 1 1
github.com/number571/go-peer/pkg/state/state.go:30.2,30.14 1 1
github.com/number571/go-peer/pkg/state/state.go:30.14,31.29 1 1
github.com/number571/go-peer/pkg/state/state.go:31.29,33.4 1 1
github.com/number571/go-peer/pkg/state/state.go:36.2,37.12 2 1
github.com/number571/go-peer/pkg/state/state.go:40.43,44.17 3 1
github.com/number571/go-peer/pkg/state/state.go:44.17,46.3 1 1
github.com/number571/go-peer/pkg/state/state.go:48.2,48.14 1 1
github.com/number571/go-peer/pkg/state/state.go:48.14,49.29 1 1
github.com/number571/go-peer/pkg/state/state.go:49.29,51.4 1 1
github.com/number571/go-peer/pkg/state/state.go:54.2,55.12 2 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:7.42,9.30 2 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:9.30,10.17 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:10.17,11.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.33,17.3 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 0
github.com/number571/go-peer/test/utils/testutils.go:8.57,10.25 2 0
github.com/number571/go-peer/test/utils/testutils.go:10.25,12.29 2 0
github.com/number571/go-peer/test/utils/testutils.go:12.29,14.12 2 0
github.com/number571/go-peer/test/utils/testutils.go:16.3,16.13 1 0
github.com/number571/go-peer/test/utils/testutils.go:18.2,18.15 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 1
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:21.44,27.2 3 1
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:29.43,31.2 1 0
github.com/number571/go-peer/pkg/crypto/hashing/hashing.go:33.42,35.2 1 1
@ -2121,26 +2097,50 @@ github.com/number571/go-peer/test/utils/testutils.go:10.25,12.29 2 0
github.com/number571/go-peer/test/utils/testutils.go:12.29,14.12 2 0
github.com/number571/go-peer/test/utils/testutils.go:16.3,16.13 1 0
github.com/number571/go-peer/test/utils/testutils.go:18.2,18.15 1 0
github.com/number571/go-peer/pkg/state/state.go:18.28,20.2 1 1
github.com/number571/go-peer/pkg/state/state.go:22.42,26.16 3 1
github.com/number571/go-peer/pkg/state/state.go:26.16,28.3 1 1
github.com/number571/go-peer/pkg/state/state.go:30.2,30.14 1 1
github.com/number571/go-peer/pkg/state/state.go:30.14,31.29 1 1
github.com/number571/go-peer/pkg/state/state.go:31.29,33.4 1 1
github.com/number571/go-peer/pkg/state/state.go:36.2,37.12 2 1
github.com/number571/go-peer/pkg/state/state.go:40.43,44.17 3 1
github.com/number571/go-peer/pkg/state/state.go:44.17,46.3 1 1
github.com/number571/go-peer/pkg/state/state.go:48.2,48.14 1 1
github.com/number571/go-peer/pkg/state/state.go:48.14,49.29 1 1
github.com/number571/go-peer/pkg/state/state.go:49.29,51.4 1 1
github.com/number571/go-peer/pkg/state/state.go:54.2,55.12 2 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:7.42,9.30 2 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:9.30,10.17 1 1
github.com/number571/go-peer/pkg/encoding/bytes.go:17.51,22.16 4 1
github.com/number571/go-peer/pkg/encoding/bytes.go:22.16,23.13 1 0
github.com/number571/go-peer/pkg/encoding/bytes.go:26.2,27.12 2 1
github.com/number571/go-peer/pkg/encoding/bytes.go:31.53,33.2 1 0
github.com/number571/go-peer/pkg/encoding/hex.go:5.37,7.2 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:9.37,11.16 2 1
github.com/number571/go-peer/pkg/encoding/hex.go:11.16,13.3 1 1
github.com/number571/go-peer/pkg/encoding/hex.go:14.2,14.15 1 1
github.com/number571/go-peer/pkg/encoding/serialize_json.go:9.46,11.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:11.16,13.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:14.2,14.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:17.60,18.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:18.52,20.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_json.go:21.2,21.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:8.46,10.16 2 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:10.16,12.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:13.2,13.12 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:16.60,17.52 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:17.52,19.3 1 0
github.com/number571/go-peer/pkg/encoding/serialize_yaml.go:20.2,20.12 1 0
github.com/number571/go-peer/pkg/queue_set/queue_set.go:21.49,27.2 1 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:29.45,31.2 1 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:33.39,38.2 3 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:40.53,45.19 4 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:45.19,47.3 1 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:49.2,50.17 2 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:50.17,51.40 1 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:54.2,54.19 1 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:57.52,63.33 4 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:63.33,65.3 1 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:68.2,76.13 5 1
github.com/number571/go-peer/pkg/queue_set/queue_set.go:79.54,85.2 4 1
github.com/number571/go-peer/pkg/queue_set/settings.go:12.46,16.2 1 1
github.com/number571/go-peer/pkg/queue_set/settings.go:18.45,19.22 1 1
github.com/number571/go-peer/pkg/queue_set/settings.go:19.22,20.28 1 1
github.com/number571/go-peer/pkg/queue_set/settings.go:22.2,22.10 1 1
github.com/number571/go-peer/pkg/queue_set/settings.go:25.42,27.2 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:7.42,9.30 2 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:9.30,10.17 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:10.17,11.12 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:13.3,13.20 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.2,15.33 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:15.33,17.3 1 0
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 1
github.com/number571/go-peer/pkg/utils/merge_errors.go:18.2,18.17 1 0
github.com/number571/go-peer/pkg/crypto/asymmetric/asymmetric.go:36.55,41.2 1 1
github.com/number571/go-peer/pkg/crypto/asymmetric/asymmetric.go:44.43,46.16 2 1
github.com/number571/go-peer/pkg/crypto/asymmetric/asymmetric.go:46.16,47.13 1 0