Add password generator options

This commit is contained in:
Evan Su 2021-08-10 21:03:33 -04:00 committed by GitHub
parent b73de4ca3e
commit 57b45d8734
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 44 additions and 45 deletions

View File

@ -127,8 +127,9 @@ var shredOverlay string // Text in shredding progress bar
var shredding = "Ready." var shredding = "Ready."
// User input variables // User input variables
var passwordState = giu.InputTextFlagsPassword
var password string var password string
var passwordState = giu.InputTextFlagsPassword
var passwordStateLabel = "Show"
var cPassword string // Confirm password text entry string variable var cPassword string // Confirm password text entry string variable
var keyfilePath string var keyfilePath string
var keyfileLabel = "Use a keyfile" var keyfileLabel = "Use a keyfile"
@ -144,10 +145,12 @@ var fast bool
var kept = false // If a file was corrupted/modified, but the output was kept var kept = false // If a file was corrupted/modified, but the output was kept
var showGenpass = false var showGenpass = false
var genpassUpper bool var genpassCopy = true
var genpassLower bool var genpassLength int32 = 32
var genpassNums bool var genpassUpper = true
var genpassSymbols bool var genpassLower = true
var genpassNums = true
var genpassSymbols = true
// Reed-Solomon encoders // Reed-Solomon encoders
var rs1,_ = infectious.NewFEC(1,3) // 1 data shards, 3 total -> 2 parity shards var rs1,_ = infectious.NewFEC(1,3) // 1 data shards, 3 total -> 2 parity shards
@ -212,30 +215,30 @@ func startUI(){
giu.Custom(func(){ giu.Custom(func(){
if showGenpass{ if showGenpass{
giu.PopupModal("Generate password:").Layout( giu.PopupModal("Generate password:").Layout(
giu.Checkbox("Uppercase letters",&genpassUpper), giu.Row(
giu.Checkbox("Lowercase letters",&genpassLower), giu.Label("Length: "),
giu.SliderInt("",&genpassLength,4,64).Size(-0.0000001),
),
giu.Checkbox("Uppercase",&genpassUpper),
giu.Checkbox("Lowercase",&genpassLower),
giu.Checkbox("Numbers",&genpassNums), giu.Checkbox("Numbers",&genpassNums),
giu.Checkbox("Symbols",&genpassSymbols), giu.Checkbox("Symbols",&genpassSymbols),
giu.Button("Cancel").Size(100,0).OnClick(func(){ giu.Checkbox("Copy to clipboard",&genpassCopy),
giu.CloseCurrentPopup() giu.Row(
showGenpass = false giu.Button("Cancel").Size(100,0).OnClick(func(){
}), giu.CloseCurrentPopup()
giu.Button("Generate").Size(100,0).OnClick(func(){ showGenpass = false
tmp := genPassword() }),
password = tmp giu.Button("Generate").Size(100,0).OnClick(func(){
cPassword = tmp tmp := genPassword()
passwordStrength = zxcvbn.PasswordStrength(password,nil).Score password = tmp
giu.CloseCurrentPopup() cPassword = tmp
showGenpass = false passwordStrength = zxcvbn.PasswordStrength(password,nil).Score
passwordState = giu.InputTextFlagsNone giu.CloseCurrentPopup()
go func(){ showGenpass = false
time.Sleep(3*time.Second)
passwordState = giu.InputTextFlagsPassword
giu.Update() giu.Update()
}() }),
),
giu.Update()
}),
).Build() ).Build()
giu.OpenPopup("Generate password:") giu.OpenPopup("Generate password:")
giu.Update() giu.Update()
@ -358,6 +361,15 @@ func startUI(){
passwordStrength = zxcvbn.PasswordStrength(password,nil).Score passwordStrength = zxcvbn.PasswordStrength(password,nil).Score
giu.Update() giu.Update()
}), }),
giu.SmallButton(passwordStateLabel).OnClick(func(){
if passwordState==giu.InputTextFlagsPassword{
passwordState = giu.InputTextFlagsNone
passwordStateLabel = "Hide"
}else{
passwordState = giu.InputTextFlagsPassword
passwordStateLabel = "Show"
}
}),
).Build() ).Build()
}), }),
), ),
@ -399,20 +411,6 @@ func startUI(){
canvas.PathStroke(col,false,3) canvas.PathStroke(col,false,3)
}), }),
giu.Dummy(-160,0), giu.Dummy(-160,0),
/*giu.Checkbox(keyfileLabel,&keyfile).OnChange(func(){
if !keyfile{
keyfileLabel = "Use a keyfile"
return
}
filename,err := dialog.File().Load()
if err!=nil{
keyfile = false
return
}
keyfileLabel = filename
keyfilePath = filename
}),*/
giu.Custom(func(){ giu.Custom(func(){
if !(mode=="decrypt"&&!keyfile){ if !(mode=="decrypt"&&!keyfile){
giu.Button(keyfileLabel).OnClick(func(){ giu.Button(keyfileLabel).OnClick(func(){
@ -464,7 +462,7 @@ func startUI(){
giu.Dummy(-0.0000001,0), giu.Dummy(-0.0000001,0),
).Build() ).Build()
}else{ }else{
giu.Dummy(0,42).Build() giu.Dummy(0,45).Build()
} }
}), }),
@ -519,7 +517,6 @@ func startUI(){
_status_color = color.RGBA{0xff,0x00,0x00,255} _status_color = color.RGBA{0xff,0x00,0x00,255}
return return
} }
fmt.Println(keyfile,keyfilePath)
if keyfile&&keyfilePath==""{ if keyfile&&keyfilePath==""{
_status = "Please select a keyfile." _status = "Please select a keyfile."
_status_color = color.RGBA{0xff,0x00,0x00,255} _status_color = color.RGBA{0xff,0x00,0x00,255}
@ -1286,7 +1283,6 @@ func work(){
khash_sha3.Write(khash) khash_sha3.Write(khash)
khash_hash = khash_sha3.Sum(nil) khash_hash = khash_sha3.Sum(nil)
} }
fmt.Println(keyfile)
sha3_512 := sha3.New512() sha3_512 := sha3.New512()
sha3_512.Write(key) sha3_512.Write(key)
@ -2038,11 +2034,14 @@ func genPassword() string{
if chars==""{ if chars==""{
return chars return chars
} }
tmp := make([]byte,32) tmp := make([]byte,genpassLength)
for i:=0;i<32;i++{ for i:=0;i<int(genpassLength);i++{
j,_ := rand.Int(rand.Reader,new(big.Int).SetUint64(uint64(len(chars)))) j,_ := rand.Int(rand.Reader,new(big.Int).SetUint64(uint64(len(chars))))
tmp[i] = chars[j.Int64()] tmp[i] = chars[j.Int64()]
} }
if genpassCopy{
clipboard.WriteAll(string(tmp))
}
return string(tmp) return string(tmp)
} }