Compare commits
8 Commits
v1.2.0
...
e1ced3f76d
| Author | SHA1 | Date | |
|---|---|---|---|
| e1ced3f76d | |||
| cdbca3b074 | |||
| e4eca321f6 | |||
| 0eacc92a45 | |||
| e96fded8ff | |||
| 710f96e9e7 | |||
| 4609be7a9d | |||
| 57b78dc62e |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,12 +1,13 @@
|
||||
// GoPass
|
||||
// Author: Maximilian Patterson
|
||||
// Version: 1.2.0
|
||||
// Version: 1.2.2
|
||||
package main
|
||||
|
||||
import (
|
||||
cryptorand "crypto/rand"
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"math/big"
|
||||
mathrand "math/rand"
|
||||
"os"
|
||||
"strconv"
|
||||
@@ -18,13 +19,15 @@ func main() {
|
||||
// Take in all OS arg
|
||||
args := os.Args[1:]
|
||||
if len(args) < 1 {
|
||||
panic("No password length specified! (ex: ./gopass 16)")
|
||||
println("No password length specified! (ex: ./gopass 16)")
|
||||
return
|
||||
}
|
||||
|
||||
// Convert String arg to int
|
||||
size, err := strconv.Atoi(args[0])
|
||||
if err != nil {
|
||||
panic("First argument supplied must be an integer! (ex: 16)")
|
||||
println("First argument supplied must be an integer! (ex: 16)")
|
||||
return
|
||||
}
|
||||
|
||||
// Grab second argument (if it exists) and use it as a disallowed character(s)
|
||||
@@ -50,14 +53,20 @@ func main() {
|
||||
var b [8]byte
|
||||
_, err = cryptorand.Read(b[:])
|
||||
if err != nil {
|
||||
panic("Error securely seeding crypto/rand!")
|
||||
println("Error securely seeding crypto/rand!")
|
||||
return
|
||||
}
|
||||
mathrand.Seed(int64(binary.LittleEndian.Uint64(b[:])))
|
||||
|
||||
// Assign every slot of pass to a random allowedCharacter
|
||||
for i := range pass {
|
||||
// Generate a random int greater than 0 and not to exceed the length of allowedCharacters
|
||||
pass[i] = allowedCharacters[mathrand.Intn(len(allowedCharacters))]
|
||||
index, err := cryptorand.Int(cryptorand.Reader, big.NewInt(int64(len(allowedCharacters))))
|
||||
if err != nil {
|
||||
println("Error securely generating random character!")
|
||||
return
|
||||
}
|
||||
pass[i] = allowedCharacters[index.Int64()]
|
||||
}
|
||||
|
||||
// Print the password
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
# The current version number of the program
|
||||
VERSION := 1.2.2
|
||||
|
||||
# List of OS and architecture combinations to build
|
||||
BUILD_OS_ARCH := \
|
||||
darwin/amd64 \
|
||||
linux/386 \
|
||||
linux/amd64 \
|
||||
windows/386 \
|
||||
windows/amd64
|
||||
|
||||
# Build all targets
|
||||
all: $(BUILD_OS_ARCH)
|
||||
|
||||
# Build targets in the form of `OS/ARCH`
|
||||
darwin/amd64:
|
||||
GOOS=darwin \
|
||||
GOARCH=amd64 \
|
||||
go build -ldflags="-s -w" -o "gopass-darwin-amd64-$(VERSION)" main.go
|
||||
|
||||
linux/386:
|
||||
GOOS=linux \
|
||||
GOARCH=386 \
|
||||
go build -ldflags="-s -w" -o "gopass-linux-386-$(VERSION)" main.go
|
||||
|
||||
linux/amd64:
|
||||
GOOS=linux \
|
||||
GOARCH=amd64 \
|
||||
go build -ldflags="-s -w" -o "gopass-linux-amd64-$(VERSION)" main.go
|
||||
|
||||
windows/386:
|
||||
GOOS=windows \
|
||||
GOARCH=386 \
|
||||
go build -ldflags="-s -w" -o "gopass-windows-386-$(VERSION)" main.go
|
||||
|
||||
windows/amd64:
|
||||
GOOS=windows \
|
||||
GOARCH=amd64 \
|
||||
go build -ldflags="-s -w" -o "gopass-windows-amd64-$(VERSION)" main.go
|
||||
Reference in New Issue
Block a user