[PD1] small changes
This commit is contained in:
parent
568b6e6739
commit
2cafc3163c
10 changed files with 160 additions and 71 deletions
|
@ -20,7 +20,7 @@ func Run() {
|
|||
panic("No command provided. Use 'help' for instructions.")
|
||||
}
|
||||
//Get user KeyStore
|
||||
password := AskUserPassword()
|
||||
password := readStdin("Insert keystore passphrase")
|
||||
clientKeyStore := cryptoUtils.LoadKeyStore(userFile, password)
|
||||
|
||||
command := flag.Arg(0)
|
||||
|
@ -49,7 +49,14 @@ func Run() {
|
|||
if !cl.Connection.Send(sendMsgPacket) {
|
||||
return
|
||||
}
|
||||
cl.Connection.Conn.Close()
|
||||
answerSendMsg, active := cl.Connection.Receive()
|
||||
if !active {
|
||||
return
|
||||
}
|
||||
if answerSendMsg.Flag == protocol.FlagReportError {
|
||||
reportError := protocol.UnmarshalReportError(answerSendMsg.Body)
|
||||
log.Println(reportError.ErrorMessage)
|
||||
}
|
||||
|
||||
case "askqueue":
|
||||
pageInput := flag.Arg(1)
|
||||
|
@ -69,7 +76,7 @@ func Run() {
|
|||
|
||||
cl := networking.NewClient[protocol.Packet](&clientKeyStore)
|
||||
defer cl.Connection.Conn.Close()
|
||||
askQueue(cl,clientKeyStore, page, pageSize)
|
||||
askQueue(cl, clientKeyStore, page, pageSize)
|
||||
|
||||
case "getmsg":
|
||||
if flag.NArg() < 2 {
|
||||
|
@ -89,6 +96,11 @@ func Run() {
|
|||
if !active {
|
||||
return
|
||||
}
|
||||
if receivedMsgPacket.Flag == protocol.FlagReportError {
|
||||
reportError := protocol.UnmarshalReportError(receivedMsgPacket.Body)
|
||||
log.Println(reportError.ErrorMessage)
|
||||
return
|
||||
}
|
||||
answerGetMsg := protocol.UnmarshalAnswerGetMsg(receivedMsgPacket.Body)
|
||||
senderCert := getUserCert(cl, answerGetMsg.FromUID)
|
||||
decSubjectBytes := clientKeyStore.DecryptMessageContent(senderCert, answerGetMsg.Subject)
|
||||
|
@ -117,6 +129,11 @@ func getUserCert(cl networking.Client[protocol.Packet], uid string) *x509.Certif
|
|||
if !active {
|
||||
return nil
|
||||
}
|
||||
if answerGetUserCertPacket.Flag == protocol.FlagReportError {
|
||||
reportError := protocol.UnmarshalReportError(answerGetUserCertPacket.Body)
|
||||
log.Println(reportError.ErrorMessage)
|
||||
return nil
|
||||
}
|
||||
answerGetUserCert := protocol.UnmarshalAnswerGetUserCert(answerGetUserCertPacket.Body)
|
||||
userCert, err := x509.ParseCertificate(answerGetUserCert.Certificate)
|
||||
if err != nil {
|
||||
|
@ -130,6 +147,11 @@ func getManyMessagesInfo(cl networking.Client[protocol.Packet]) (protocol.Answer
|
|||
if !active {
|
||||
return protocol.NewAnswerGetUnreadMsgsInfo(0, 0, nil), nil
|
||||
}
|
||||
if answerGetUnreadMsgsInfoPacket.Flag == protocol.FlagReportError {
|
||||
reportError := protocol.UnmarshalReportError(answerGetUnreadMsgsInfoPacket.Body)
|
||||
log.Println(reportError.ErrorMessage)
|
||||
return protocol.NewAnswerGetUnreadMsgsInfo(0, 0, nil), nil
|
||||
}
|
||||
answerGetUnreadMsgsInfo := protocol.UnmarshalAnswerGetUnreadMsgsInfo(answerGetUnreadMsgsInfoPacket.Body)
|
||||
|
||||
//Create Set of needed certificates
|
||||
|
@ -146,7 +168,7 @@ func getManyMessagesInfo(cl networking.Client[protocol.Packet]) (protocol.Answer
|
|||
return answerGetUnreadMsgsInfo, certificatesMap
|
||||
}
|
||||
|
||||
func askQueue(cl networking.Client[protocol.Packet],clientKeyStore cryptoUtils.KeyStore, page int, pageSize int) {
|
||||
func askQueue(cl networking.Client[protocol.Packet], clientKeyStore cryptoUtils.KeyStore, page int, pageSize int) {
|
||||
requestUnreadMsgsQueuePacket := protocol.NewGetUnreadMsgsInfoPacket(page, pageSize)
|
||||
if !cl.Connection.Send(requestUnreadMsgsQueuePacket) {
|
||||
return
|
||||
|
@ -156,8 +178,13 @@ func askQueue(cl networking.Client[protocol.Packet],clientKeyStore cryptoUtils.K
|
|||
for _, message := range unreadMsgsInfo.MessagesInfo {
|
||||
senderCert, ok := certificates[message.FromUID]
|
||||
if ok {
|
||||
decryptedSubjectBytes := clientKeyStore.DecryptMessageContent(senderCert, message.Subject)
|
||||
subject := Unmarshal(decryptedSubjectBytes)
|
||||
var subject string
|
||||
if senderCert != nil {
|
||||
decryptedSubjectBytes := clientKeyStore.DecryptMessageContent(senderCert, message.Subject)
|
||||
subject = Unmarshal(decryptedSubjectBytes)
|
||||
} else {
|
||||
subject = ""
|
||||
}
|
||||
clientMessage := newClientMessageInfo(message.Num, message.FromUID, subject, message.Timestamp)
|
||||
clientMessages = append(clientMessages, clientMessage)
|
||||
}
|
||||
|
@ -167,13 +194,13 @@ func askQueue(cl networking.Client[protocol.Packet],clientKeyStore cryptoUtils.K
|
|||
return clientMessages[i].Num > clientMessages[j].Num
|
||||
})
|
||||
|
||||
action := showMessagesInfo(unreadMsgsInfo.Page, unreadMsgsInfo.NumPages, clientMessages)
|
||||
switch action {
|
||||
case -1:
|
||||
askQueue(cl, clientKeyStore , max(1,unreadMsgsInfo.Page-1) , pageSize)
|
||||
case 0:
|
||||
return
|
||||
case 1:
|
||||
askQueue(cl, clientKeyStore , max(1,unreadMsgsInfo.Page+1) , pageSize)
|
||||
}
|
||||
action := showMessagesInfo(unreadMsgsInfo.Page, unreadMsgsInfo.NumPages, clientMessages)
|
||||
switch action {
|
||||
case -1:
|
||||
askQueue(cl, clientKeyStore, max(1, unreadMsgsInfo.Page-1), pageSize)
|
||||
case 0:
|
||||
return
|
||||
case 1:
|
||||
askQueue(cl, clientKeyStore, max(1, unreadMsgsInfo.Page+1), pageSize)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue