1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
package gui
import (
"fmt"
"github.com/twstrike/gotk3adapter/gtki"
"github.com/twstrike/coyim/client"
"github.com/twstrike/coyim/config"
"github.com/twstrike/coyim/i18n"
)
func buildVerifyFingerprintDialog(accountName string, ourFp []byte, uid string, theirFp []byte) gtki.Dialog {
var message string
var builderName string
if theirFp == nil {
builderName = "VerifyFingerprintUnknown"
message = fmt.Sprintf(i18n.Local(
"You can't verify the fingerprint for %s yet.\n"+
"You first have to start an encrypted conversation with them.",
), uid)
} else {
m := i18n.Local(`
Is this the correct fingerprint for %[1]s?
Fingerprint for you (%[3]s):
%[4]s
Purported fingerprint for %[1]s:
%[2]s
`)
message = fmt.Sprintf(m,
uid,
config.FormatFingerprint(theirFp),
accountName,
config.FormatFingerprint(ourFp),
)
builderName = "VerifyFingerprint"
}
builder := newBuilder(builderName)
obj := builder.getObj("dialog")
dialog := obj.(gtki.Dialog)
obj = builder.getObj("message")
l := obj.(gtki.Label)
l.SetText(message)
l.SetSelectable(true)
dialog.SetTitle(fmt.Sprintf(i18n.Local("Verify fingerprint for %s"), uid))
return dialog
}
func verifyFingerprintDialog(account *account, uid, resource string, parent gtki.Window) gtki.ResponseType {
accountConfig := account.session.GetConfig()
conversation, _ := account.session.ConversationManager().EnsureConversationWith(uid, resource)
ourFp := conversation.OurFingerprint()
theirFp := conversation.TheirFingerprint()
dialog := buildVerifyFingerprintDialog(accountConfig.Account, ourFp, uid, theirFp)
defer dialog.Destroy()
dialog.SetTransientFor(parent)
dialog.ShowAll()
responseType := gtki.ResponseType(dialog.Run())
switch responseType {
case gtki.RESPONSE_YES:
account.executeCmd(client.AuthorizeFingerprintCmd{
Account: accountConfig,
Peer: uid,
Fingerprint: theirFp,
})
}
return responseType
}
|