last-before-sharing
This commit is contained in:
parent
dee68043d1
commit
3966299a91
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
doc/protocol.aux
|
||||
doc/protocol.fdb_latexmk
|
||||
doc/protocol.fls
|
||||
doc/protocol.log
|
||||
doc/protocol.pdf
|
||||
doc/protocol.synctex.gz
|
||||
out/doc/general_deployment/general_deployment.png
|
||||
out/doc/server_deployment/server_deployment.png
|
21
doc/general_deployment.puml
Normal file
21
doc/general_deployment.puml
Normal file
@ -0,0 +1,21 @@
|
||||
@startuml
|
||||
|
||||
cloud net as "Network"
|
||||
|
||||
component mapp as "Mobile Application"
|
||||
component capp as "CLI Application"
|
||||
component dapp as "Desktop Application"
|
||||
component proxy1 as "Http Web Service Proxy"
|
||||
component proxy2 as "Http Web Service Proxy"
|
||||
component ws1 as "Company 1 Web Services" #LightGray
|
||||
component ws2 as "Company 2 Web Client" #LightGray
|
||||
component srv1 as "Server"
|
||||
net -- srv1
|
||||
net -- mapp
|
||||
net -- capp
|
||||
net -- dapp
|
||||
net -- proxy1
|
||||
net -- proxy2
|
||||
ws1 -- proxy1
|
||||
ws2 -- proxy2
|
||||
ws2 ..> ws1
|
@ -120,7 +120,7 @@ The Ekp is used to cypher your conversation.
|
||||
|
||||
\subsection{Conversation lookup}
|
||||
A contact conversation Lookup Key Pair(Lkp) is also associated with your conversation. The Lkp public key is used to identify your conversation on a server.
|
||||
the private key allows you to sign your tequest and prove the server that you are the legitimate recipient for a message.
|
||||
the private key allows you to sign your request and prove the server that you are the legitimate recipient for a message.
|
||||
This Lkp can be changed anytime by it's owner and the new public key will be sent along the last message.
|
||||
The Lkp and the Ekp are only changed, once the change has beeen acknowledged by your contact.
|
||||
|
||||
|
36
doc/server_deployment.puml
Normal file
36
doc/server_deployment.puml
Normal file
@ -0,0 +1,36 @@
|
||||
@startuml
|
||||
|
||||
cloud Network
|
||||
component lb as "Load Balancer"
|
||||
component http1 as "HTTP Server"
|
||||
component http2 as "HTTP Server"
|
||||
component ws1 as "Websocket Server"
|
||||
component ws2 as "Websocket Server"
|
||||
component ws3 as "Websocket Server"
|
||||
component ws4 as "..."
|
||||
database q as "Message Queue"
|
||||
component d1 as "Message Dispatcher"
|
||||
component d2 as "Message Dispatcher"
|
||||
component d3 as "Message Dispatcher"
|
||||
component d4 as "Message Dispatcher"
|
||||
component d5 as "..."
|
||||
|
||||
lb -- http1
|
||||
lb -- http2
|
||||
lb -- ws1
|
||||
lb -- ws2
|
||||
lb -- ws3
|
||||
lb -- ws4
|
||||
http1 -- q
|
||||
http2 -- q
|
||||
ws1 -- q
|
||||
ws2 -- q
|
||||
ws3 -- q
|
||||
q -- d1
|
||||
q -- d2
|
||||
q -- d3
|
||||
q -- d4
|
||||
q -- d5
|
||||
Network -- lb
|
||||
|
||||
@enduml
|
@ -35,7 +35,7 @@ func TestEndToEnd(t *testing.T) {
|
||||
//
|
||||
// Simulate peer invitation response : generate the friend's keypair
|
||||
fmt.Println("Simulating first friend answer...")
|
||||
var receivedContact Contact
|
||||
var receivedContact ContactCard
|
||||
firstFriendContactKp := NewKeyPair()
|
||||
firstFriendEncryptionKp := NewKeyPair()
|
||||
firstFriendLookupKp := NewKeyPair()
|
||||
@ -48,7 +48,7 @@ func TestEndToEnd(t *testing.T) {
|
||||
for _, srv := range friendsMessageServers.Servers {
|
||||
receivedContact.PullServers = append(receivedContact.PullServers, srv.ServerData)
|
||||
}
|
||||
// End simulating concact invitation response
|
||||
// End simulating contact invitation response
|
||||
//
|
||||
|
||||
//
|
||||
|
4
https.go
4
https.go
@ -25,13 +25,9 @@ func (https *Https) Send(msg []byte) ([]byte, error) {
|
||||
}
|
||||
|
||||
func (https *Https) Start(callback *func() []InternalMessage) {
|
||||
for {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
func (https *Https) Stop() {
|
||||
for {
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -28,9 +28,9 @@ func CreateIdentity(nickname string) *Identity {
|
||||
return &id
|
||||
}
|
||||
|
||||
func (id *Identity) InvitePeer(myName string, contactName string, messageServerIdxs []int) (*Peer, *Contact) {
|
||||
func (id *Identity) InvitePeer(myName string, contactName string, messageServerIdxs []int) (*Peer, *ContactCard) {
|
||||
var peer Peer
|
||||
var myContactCard Contact
|
||||
var myContactCard ContactCard
|
||||
peer.Me = NewKeyPair()
|
||||
peer.EncryptionKp = NewKeyPair()
|
||||
peer.LookupKp = NewKeyPair()
|
||||
@ -48,7 +48,7 @@ func (id *Identity) InvitePeer(myName string, contactName string, messageServerI
|
||||
return &id.Peers[len(id.Peers)-1], &myContactCard
|
||||
}
|
||||
|
||||
func (*Identity) FinalizeInvitation(peer *Peer, receivedContact *Contact) {
|
||||
func (*Identity) FinalizeInvitation(peer *Peer, receivedContact *ContactCard) {
|
||||
peer.Contact = *receivedContact
|
||||
|
||||
}
|
||||
|
BIN
invitation.png
BIN
invitation.png
Binary file not shown.
Before Width: | Height: | Size: 530 B |
0
messages.json
Normal file
0
messages.json
Normal file
1191
messages.pb.go
Normal file
1191
messages.pb.go
Normal file
File diff suppressed because it is too large
Load Diff
17
pb/messages.py
Normal file
17
pb/messages.py
Normal file
@ -0,0 +1,17 @@
|
||||
from socket import MsgFlag
|
||||
import protoparser
|
||||
import json
|
||||
|
||||
def parseMessage(pb, parent):
|
||||
if hasattr(pb, 'messages'):
|
||||
for msg in pb.messages:
|
||||
print(pb.messages)
|
||||
|
||||
|
||||
|
||||
pb = protoparser.parse_from_file("pb/messages.proto")
|
||||
#print(json.dumps(pb))
|
||||
print(json.dumps(pb.messages))
|
||||
|
||||
with open('messages.json', 'w') as f:
|
||||
f.write(pb)
|
16
peer.go
16
peer.go
@ -16,7 +16,7 @@ import (
|
||||
"github.com/makiuchi-d/gozxing/qrcode"
|
||||
)
|
||||
|
||||
type Contact struct {
|
||||
type ContactCard struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
ContactPublicKey string `json:"contact_public_key,omitempty"`
|
||||
EncryptionPublicKey string `json:"encryption_public_key,omitempty"`
|
||||
@ -27,7 +27,7 @@ type Contact struct {
|
||||
type Peer struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
Me KeyPair `json:"me,omitempty"`
|
||||
Contact Contact `json:"contact,omitempty"`
|
||||
Contact ContactCard `json:"contact,omitempty"`
|
||||
Visible bool `json:"visible,omitempty"`
|
||||
VisiblePassword string `json:"visible_password,omitempty"`
|
||||
PasswordType string `json:"password_type,omitempty"`
|
||||
@ -45,8 +45,8 @@ type Peer struct {
|
||||
type PeerList []Peer
|
||||
|
||||
type Group struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
Members []Contact `json:"members,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Members []ContactCard `json:"members,omitempty"`
|
||||
}
|
||||
|
||||
func (pl *PeerList) GetFromPublicKey(publickey string) *Peer {
|
||||
@ -81,7 +81,7 @@ func (peer *Peer) SendText(text string) {
|
||||
fmt.Println(im.MessageData.Destination)
|
||||
}
|
||||
|
||||
func (contact *Contact) WritePng(filename string) {
|
||||
func (contact *ContactCard) WritePng(filename string) {
|
||||
jsonContact, _ := json.Marshal(contact)
|
||||
//imgdata := base64.StdEncoding.EncodeToString(jsonContact)
|
||||
size := int(math.Sqrt(float64(len(jsonContact))/3)) + 1
|
||||
@ -120,7 +120,7 @@ func (contact *Contact) WritePng(filename string) {
|
||||
|
||||
}
|
||||
|
||||
func (contact *Contact) WriteQr(filename string) {
|
||||
func (contact *ContactCard) WriteQr(filename string) {
|
||||
jsonContact, _ := json.Marshal(contact)
|
||||
qwriter := qrcode.NewQRCodeWriter()
|
||||
code, err := qwriter.Encode(string(jsonContact), gozxing.BarcodeFormat_QR_CODE, 512, 512, nil)
|
||||
@ -136,8 +136,8 @@ func (contact *Contact) WriteQr(filename string) {
|
||||
|
||||
}
|
||||
|
||||
func ReadQr(fielname string) Contact {
|
||||
var contact Contact
|
||||
func ReadQr(fielname string) ContactCard {
|
||||
var contact ContactCard
|
||||
// open and decode image file
|
||||
file, _ := os.Open("qrcode.jpg")
|
||||
img, _, _ := image.Decode(file)
|
||||
|
Loading…
Reference in New Issue
Block a user