First fixes
parent
adf349b846
commit
46c47ab516
|
@ -2,7 +2,7 @@ package gaspass
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"error"
|
"errors"
|
||||||
"golang.org/x/crypto/argon2"
|
"golang.org/x/crypto/argon2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -27,35 +27,36 @@ type Params struct {
|
||||||
PassLength uint32
|
PassLength uint32
|
||||||
UseLower bool
|
UseLower bool
|
||||||
UseUpper bool
|
UseUpper bool
|
||||||
UseNumber bool
|
UseNumbers bool
|
||||||
UseSpecials bool
|
UseSpecials bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Params) GeneratePassword() (string, error) {
|
func (p *Params) GeneratePassword() (*string, error) {
|
||||||
// TODO: Check PassLength <= MAX_UINT32/8
|
// TODO: Check PassLength <= MAX_UINT32/8
|
||||||
|
var charSet string
|
||||||
|
|
||||||
if !(g.UseLower && p.UseUpper && p.UseNumbers && p.UseSpecials) {
|
if !(p.UseLower && p.UseUpper && p.UseNumbers && p.UseSpecials) {
|
||||||
return nil, error.New("Use at least one character group.") // CHECK ERROR DECLARATION
|
return nil, errors.New("Use at least one character group.")
|
||||||
}
|
}
|
||||||
if p.UseLower {
|
if p.UseLower {
|
||||||
charSet += charsLower
|
charSet += CharsLower
|
||||||
}
|
}
|
||||||
if p.UseUpper {
|
if p.UseUpper {
|
||||||
charSet += charsUpper
|
charSet += CharsUpper
|
||||||
}
|
}
|
||||||
if p.UseNumbers {
|
if p.UseNumbers {
|
||||||
charSet += charsNumbers
|
charSet += CharsNumbers
|
||||||
}
|
}
|
||||||
if p.UseSpecials {
|
if p.UseSpecials {
|
||||||
charSet += charsSpecials
|
charSet += CharsSpecials
|
||||||
}
|
}
|
||||||
|
|
||||||
dkey := argon2.IDKey(p.PrivKey, append(p.Counter, p.Salt), argonIters, argonMemory, argonThreads, p.PassLength*8)
|
dkey := argon2.IDKey(p.PrivKey, append(p.Counter, p.Salt...), argonIters, argonMemory, argonThreads, p.PassLength*8)
|
||||||
|
|
||||||
password := ""
|
password := ""
|
||||||
for cn := 0; cn < len(dkey); cn += 8 {
|
for cn := 0; cn < len(dkey); cn += 8 {
|
||||||
password += string(charSet[binary.BigEndian.Uint64(dkey[cn:cn+8])%uint64(len(charSet))])
|
password += string(charSet[binary.BigEndian.Uint64(dkey[cn:cn+8])%uint64(len(charSet))])
|
||||||
}
|
}
|
||||||
|
|
||||||
return password, nil
|
return &password, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/KawaiDesu/gaspass/gaspass"
|
"github.com/KawaiDesu/gaspass/src/gaspass"
|
||||||
"github.com/chzyer/readline"
|
"github.com/chzyer/readline"
|
||||||
flags "github.com/jessevdk/go-flags"
|
flags "github.com/jessevdk/go-flags"
|
||||||
"os"
|
"os"
|
||||||
|
|
Loading…
Reference in New Issue