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."
// User input variables
var passwordState = giu.InputTextFlagsPassword
var password string
var passwordState = giu.InputTextFlagsPassword
var passwordStateLabel = "Show"
var cPassword string // Confirm password text entry string variable
var keyfilePath string
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 showGenpass = false
var genpassUpper bool
var genpassLower bool
var genpassNums bool
var genpassSymbols bool
var genpassCopy = true
var genpassLength int32 = 32
var genpassUpper = true
var genpassLower = true
var genpassNums = true
var genpassSymbols = true
// Reed-Solomon encoders
var rs1,_ = infectious.NewFEC(1,3) // 1 data shards, 3 total -> 2 parity shards
@ -212,30 +215,30 @@ func startUI(){
giu.Custom(func(){
if showGenpass{
giu.PopupModal("Generate password:").Layout(
giu.Checkbox("Uppercase letters",&genpassUpper),
giu.Checkbox("Lowercase letters",&genpassLower),
giu.Row(
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("Symbols",&genpassSymbols),
giu.Button("Cancel").Size(100,0).OnClick(func(){
giu.CloseCurrentPopup()
showGenpass = false
}),
giu.Button("Generate").Size(100,0).OnClick(func(){
tmp := genPassword()
password = tmp
cPassword = tmp
passwordStrength = zxcvbn.PasswordStrength(password,nil).Score
giu.CloseCurrentPopup()
showGenpass = false
passwordState = giu.InputTextFlagsNone
go func(){
time.Sleep(3*time.Second)
passwordState = giu.InputTextFlagsPassword
giu.Checkbox("Copy to clipboard",&genpassCopy),
giu.Row(
giu.Button("Cancel").Size(100,0).OnClick(func(){
giu.CloseCurrentPopup()
showGenpass = false
}),
giu.Button("Generate").Size(100,0).OnClick(func(){
tmp := genPassword()
password = tmp
cPassword = tmp
passwordStrength = zxcvbn.PasswordStrength(password,nil).Score
giu.CloseCurrentPopup()
showGenpass = false
giu.Update()
}()
giu.Update()
}),
}),
),
).Build()
giu.OpenPopup("Generate password:")
giu.Update()
@ -358,6 +361,15 @@ func startUI(){
passwordStrength = zxcvbn.PasswordStrength(password,nil).Score
giu.Update()
}),
giu.SmallButton(passwordStateLabel).OnClick(func(){
if passwordState==giu.InputTextFlagsPassword{
passwordState = giu.InputTextFlagsNone
passwordStateLabel = "Hide"
}else{
passwordState = giu.InputTextFlagsPassword
passwordStateLabel = "Show"
}
}),
).Build()
}),
),
@ -399,20 +411,6 @@ func startUI(){
canvas.PathStroke(col,false,3)
}),
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(){
if !(mode=="decrypt"&&!keyfile){
giu.Button(keyfileLabel).OnClick(func(){
@ -464,7 +462,7 @@ func startUI(){
giu.Dummy(-0.0000001,0),
).Build()
}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}
return
}
fmt.Println(keyfile,keyfilePath)
if keyfile&&keyfilePath==""{
_status = "Please select a keyfile."
_status_color = color.RGBA{0xff,0x00,0x00,255}
@ -1286,7 +1283,6 @@ func work(){
khash_sha3.Write(khash)
khash_hash = khash_sha3.Sum(nil)
}
fmt.Println(keyfile)
sha3_512 := sha3.New512()
sha3_512.Write(key)
@ -2038,11 +2034,14 @@ func genPassword() string{
if chars==""{
return chars
}
tmp := make([]byte,32)
for i:=0;i<32;i++{
tmp := make([]byte,genpassLength)
for i:=0;i<int(genpassLength);i++{
j,_ := rand.Int(rand.Reader,new(big.Int).SetUint64(uint64(len(chars))))
tmp[i] = chars[j.Int64()]
}
if genpassCopy{
clipboard.WriteAll(string(tmp))
}
return string(tmp)
}