Home

go-spectre @0e965a5dfa98eaa9b8a1d0075fc2b385a244ae0e - refs - log -
-
https://git.jolheiser.com/go-spectre.git
Go implementation for spectre/masterpassword
go-spectre / user_key.go
- raw
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
package spectre

import "golang.org/x/crypto/scrypt"

func userKey(name, secret string, scoper Scoper) ([]byte, error) {
	nameBytes := []byte(name)
	secretBytes := []byte(secret)
	keyScope := []byte(scoper.Scope(Authentication))

	nameBytesLen := len(nameBytes)
	keySalt := append(keyScope,
		byte(nameBytesLen>>24),
		byte(nameBytesLen>>16),
		byte(nameBytesLen>>8),
		byte(nameBytesLen),
	)
	keySalt = append(keySalt, nameBytes...)

	return scrypt.Key(secretBytes, keySalt, 32768, 8, 2, 64)
}