This commit is contained in:
number571 2024-04-29 22:07:00 +07:00
parent f0f91d7fc8
commit d2ee87f7a3
17 changed files with 64114 additions and 64244 deletions

View File

@ -4,6 +4,10 @@
*??? ??, ????*
### IMPROVEMENTS
- Update `cmd/hidden_lake/helpers/encryptor`: append 'pld_head' field
### CHANGES
- Update `cmd/hidden_lake`: update list of HLT nodes

View File

@ -657,10 +657,10 @@ $ make
Encrypt and decrypt message
```bash
$ cd examples/encrypt_message/client_hle
$ go run ./main.go e 'hello, world'
> 000000000003df67bf78638d051770be...15ce81c8f862ad747405a07236238d04
$ go run ./main.go d '000000000003df67bf78638d051770be...15ce81c8f862ad747405a07236238d04'
> hello, world
$ go run ./main.go e 'hello, world!'
> 5a8b4f0b388650fd...8d7cbd8fa01c008
$ go run ./main.go d '5a8b4f0b388650fd...8d7cbd8fa01c008'
> hello, world!
```
**[⬆ back to top](#installation)**

View File

@ -8,7 +8,6 @@
6. Append errors (as traffic/database) for all interface methods
7. Append Batch's to database
8. Custom Unmarshal with fields
9. HL schemes update
### Tests

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -62,15 +62,10 @@ func HandleMessageDecryptAPI(pConfig config.IConfig, pLogger logger.ILogger, pCl
return
}
if uint32(pld.GetHead()) != hls_settings.CServiceMask {
pLogger.PushWarn(logBuilder.WithMessage("invalid_service_mask"))
_ = api.Response(pW, http.StatusFailedDependency, "failed: invalid service mask")
return
}
pLogger.PushInfo(logBuilder.WithMessage(http_logger.CLogSuccess))
_ = api.Response(pW, http.StatusOK, hle_settings.SContainer{
FPublicKey: pubKey.ToString(),
FPldHead: pld.GetHead(),
FHexData: encoding.HexEncode(pld.GetBody()),
})
}

View File

@ -9,6 +9,7 @@ import (
hle_client "github.com/number571/go-peer/cmd/hidden_lake/helpers/encryptor/pkg/client"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/payload"
testutils "github.com/number571/go-peer/test/utils"
)
@ -33,13 +34,13 @@ func TestHandleEncryptDecryptAPI(t *testing.T) {
data := []byte("hello, world!")
netMsg, err := hleClient.EncryptMessage(context.Background(), pubKey, data)
netMsg, err := hleClient.EncryptMessage(context.Background(), pubKey, payload.NewPayload(1, data))
if err != nil {
t.Error(err)
return
}
gotPubKey, gotData, err := hleClient.DecryptMessage(context.Background(), netMsg)
gotPubKey, getPld, err := hleClient.DecryptMessage(context.Background(), netMsg)
if err != nil {
t.Error(err)
return
@ -50,7 +51,7 @@ func TestHandleEncryptDecryptAPI(t *testing.T) {
return
}
if !bytes.Equal(gotData, data) {
if !bytes.Equal(getPld.GetBody(), data) {
t.Error("got invalid data")
return
}

View File

@ -15,7 +15,6 @@ import (
"github.com/number571/go-peer/cmd/hidden_lake/helpers/encryptor/internal/config"
hle_settings "github.com/number571/go-peer/cmd/hidden_lake/helpers/encryptor/pkg/settings"
hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/network/anonymity/adapters"
net_message "github.com/number571/go-peer/pkg/network/message"
)
@ -58,7 +57,7 @@ func HandleMessageEncryptAPI(
msg, err := pClient.EncryptPayload(
pubKey,
adapters.NewPayload(hls_settings.CServiceMask, bodyData).ToOrigin(),
payload.NewPayload(vContainer.FPldHead, bodyData),
)
if err != nil {
pLogger.PushWarn(logBuilder.WithMessage("encrypt_payload"))

View File

@ -25,7 +25,7 @@ func TestErrorsAPI(t *testing.T) {
),
)
if _, err := client.EncryptMessage(context.Background(), asymmetric.LoadRSAPubKey(testutils.TgPubKeys[0]), []byte{123}); err == nil {
if _, err := client.EncryptMessage(context.Background(), asymmetric.LoadRSAPubKey(testutils.TgPubKeys[0]), payload.NewPayload(1, []byte{123})); err == nil {
t.Error("success encrypt message with unknown host")
return
}

View File

@ -7,6 +7,7 @@ import (
"github.com/number571/go-peer/cmd/hidden_lake/helpers/encryptor/pkg/config"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
net_message "github.com/number571/go-peer/pkg/network/message"
"github.com/number571/go-peer/pkg/payload"
)
var (
@ -31,15 +32,15 @@ func (p *sClient) GetIndex(pCtx context.Context) (string, error) {
return res, nil
}
func (p *sClient) EncryptMessage(pCtx context.Context, pPubKey asymmetric.IPubKey, pData []byte) (net_message.IMessage, error) {
res, err := p.fRequester.EncryptMessage(pCtx, pPubKey, pData)
func (p *sClient) EncryptMessage(pCtx context.Context, pPubKey asymmetric.IPubKey, pPayload payload.IPayload) (net_message.IMessage, error) {
res, err := p.fRequester.EncryptMessage(pCtx, pPubKey, pPayload)
if err != nil {
return nil, fmt.Errorf("encrypt message (client): %w", err)
}
return res, nil
}
func (p *sClient) DecryptMessage(pCtx context.Context, pNetMsg net_message.IMessage) (asymmetric.IPubKey, []byte, error) {
func (p *sClient) DecryptMessage(pCtx context.Context, pNetMsg net_message.IMessage) (asymmetric.IPubKey, payload.IPayload, error) {
pubKey, data, err := p.fRequester.DecryptMessage(pCtx, pNetMsg)
if err != nil {
return nil, nil, fmt.Errorf("decrypt message (client): %w", err)

View File

@ -11,6 +11,7 @@ import (
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/encoding"
net_message "github.com/number571/go-peer/pkg/network/message"
"github.com/number571/go-peer/pkg/payload"
"github.com/number571/go-peer/pkg/utils"
)
@ -60,7 +61,7 @@ func (p *sRequester) GetIndex(pCtx context.Context) (string, error) {
return result, nil
}
func (p *sRequester) EncryptMessage(pCtx context.Context, pPubKey asymmetric.IPubKey, pData []byte) (net_message.IMessage, error) {
func (p *sRequester) EncryptMessage(pCtx context.Context, pPubKey asymmetric.IPubKey, pPayload payload.IPayload) (net_message.IMessage, error) {
resp, err := api.Request(
pCtx,
p.fClient,
@ -68,7 +69,8 @@ func (p *sRequester) EncryptMessage(pCtx context.Context, pPubKey asymmetric.IPu
fmt.Sprintf(cHandleMessageEncryptTemplate, p.fHost),
hle_settings.SContainer{
FPublicKey: pPubKey.ToString(),
FHexData: encoding.HexEncode(pData),
FPldHead: pPayload.GetHead(),
FHexData: encoding.HexEncode(pPayload.GetBody()),
},
)
if err != nil {
@ -83,7 +85,7 @@ func (p *sRequester) EncryptMessage(pCtx context.Context, pPubKey asymmetric.IPu
return msg, nil
}
func (p *sRequester) DecryptMessage(pCtx context.Context, pNetMsg net_message.IMessage) (asymmetric.IPubKey, []byte, error) {
func (p *sRequester) DecryptMessage(pCtx context.Context, pNetMsg net_message.IMessage) (asymmetric.IPubKey, payload.IPayload, error) {
resp, err := api.Request(
pCtx,
p.fClient,
@ -110,7 +112,7 @@ func (p *sRequester) DecryptMessage(pCtx context.Context, pNetMsg net_message.IM
return nil, nil, ErrInvalidHexFormat
}
return pubKey, data, nil
return pubKey, payload.NewPayload(result.FPldHead, data), nil
}
func (p *sRequester) GetPubKey(pCtx context.Context) (asymmetric.IPubKey, error) {

View File

@ -6,6 +6,7 @@ import (
"github.com/number571/go-peer/cmd/hidden_lake/helpers/encryptor/pkg/config"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
net_message "github.com/number571/go-peer/pkg/network/message"
"github.com/number571/go-peer/pkg/payload"
)
type IClient interface {
@ -14,8 +15,8 @@ type IClient interface {
GetPubKey(context.Context) (asymmetric.IPubKey, error)
EncryptMessage(context.Context, asymmetric.IPubKey, []byte) (net_message.IMessage, error)
DecryptMessage(context.Context, net_message.IMessage) (asymmetric.IPubKey, []byte, error)
EncryptMessage(context.Context, asymmetric.IPubKey, payload.IPayload) (net_message.IMessage, error)
DecryptMessage(context.Context, net_message.IMessage) (asymmetric.IPubKey, payload.IPayload, error)
}
type IRequester interface {
@ -24,6 +25,6 @@ type IRequester interface {
GetPubKey(context.Context) (asymmetric.IPubKey, error)
EncryptMessage(context.Context, asymmetric.IPubKey, []byte) (net_message.IMessage, error)
DecryptMessage(context.Context, net_message.IMessage) (asymmetric.IPubKey, []byte, error)
EncryptMessage(context.Context, asymmetric.IPubKey, payload.IPayload) (net_message.IMessage, error)
DecryptMessage(context.Context, net_message.IMessage) (asymmetric.IPubKey, payload.IPayload, error)
}

View File

@ -2,5 +2,6 @@ package settings
type SContainer struct {
FPublicKey string `json:"public_key"`
FPldHead uint64 `json:"pld_head"`
FHexData string `json:"hex_data"`
}

View File

@ -36,7 +36,6 @@ Also, the composition of these works can be found in the book [The general theor
### 5. Schemes
<!-- TODO: proto is old, need update -->
1. [Hidden Lake proto](https://github.com/number571/go-peer/blob/master/docs/hidden_lake_message_layers.svg)
## Default applications ports

File diff suppressed because one or more lines are too long

View File

@ -8,8 +8,10 @@ import (
"time"
hle_client "github.com/number571/go-peer/cmd/hidden_lake/helpers/encryptor/pkg/client"
"github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
net_message "github.com/number571/go-peer/pkg/network/message"
"github.com/number571/go-peer/pkg/payload"
)
const (
@ -44,7 +46,11 @@ func main() {
}
pubKey := asymmetric.LoadRSAPubKey(string(readPubKey))
netMsg, err := hleClient.EncryptMessage(ctx, pubKey, []byte(os.Args[2]))
netMsg, err := hleClient.EncryptMessage(
ctx,
pubKey,
payload.NewPayload(uint64(settings.CServiceMask), []byte(os.Args[2])),
)
if err != nil {
panic(err)
}
@ -61,7 +67,11 @@ func main() {
panic(err)
}
fmt.Println(string(data))
if data.GetHead() != uint64(settings.CServiceMask) {
panic("service mask error")
}
fmt.Println(string(data.GetBody()))
default:
panic("unknown mode")
}

File diff suppressed because it is too large Load Diff