Register hosts under Containers/VMs/Docker with encrypted key storage, and require re-authentication for sensitive account changes.
64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
package auth
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestGenerateSSHKeyEd25519(t *testing.T) {
|
|
generated, err := GenerateSSHKey(SSHKeyAlgoEd25519, 0, 100)
|
|
if err != nil {
|
|
t.Fatalf("GenerateSSHKey: %v", err)
|
|
}
|
|
if generated.Algorithm != SSHKeyAlgoEd25519 {
|
|
t.Fatalf("algorithm = %q", generated.Algorithm)
|
|
}
|
|
if generated.KDFRounds != 100 {
|
|
t.Fatalf("kdf rounds = %d", generated.KDFRounds)
|
|
}
|
|
if !strings.Contains(generated.PrivateKeyPEM, "BEGIN OPENSSH PRIVATE KEY") {
|
|
t.Fatal("expected openssh private key")
|
|
}
|
|
if !strings.HasPrefix(generated.PublicKey, "ssh-ed25519 ") {
|
|
t.Fatalf("public key = %q", generated.PublicKey)
|
|
}
|
|
|
|
parsed, err := ParseSSHPrivateKey(generated.PrivateKeyPEM)
|
|
if err != nil {
|
|
t.Fatalf("ParseSSHPrivateKey: %v", err)
|
|
}
|
|
if parsed.PublicKey != generated.PublicKey {
|
|
t.Fatalf("parsed public key mismatch")
|
|
}
|
|
}
|
|
|
|
func TestGenerateSSHKeyRSABits(t *testing.T) {
|
|
generated, err := GenerateSSHKey(SSHKeyAlgoRSA, 2048, 0)
|
|
if err != nil {
|
|
t.Fatalf("GenerateSSHKey: %v", err)
|
|
}
|
|
if generated.RSABits != 2048 {
|
|
t.Fatalf("rsa bits = %d", generated.RSABits)
|
|
}
|
|
if !strings.HasPrefix(generated.PublicKey, "ssh-rsa ") {
|
|
t.Fatalf("public key = %q", generated.PublicKey)
|
|
}
|
|
}
|
|
|
|
func TestGenerateSSHKeyRejectsInvalidRSABits(t *testing.T) {
|
|
_, err := GenerateSSHKey(SSHKeyAlgoRSA, 1024, 0)
|
|
if err == nil {
|
|
t.Fatal("expected error")
|
|
}
|
|
}
|
|
|
|
func TestNewUUIDFormat(t *testing.T) {
|
|
value, err := NewUUID()
|
|
if err != nil {
|
|
t.Fatalf("NewUUID: %v", err)
|
|
}
|
|
if len(value) != 36 {
|
|
t.Fatalf("uuid length = %d", len(value))
|
|
}
|
|
}
|