1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
// Copyright 2020 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package utils
import (
"os"
"golang.org/x/crypto/ssh"
)
// Contains checks containment
func Contains(haystack []string, needle string) bool {
return IndexOf(haystack, needle) != -1
}
// IndexOf returns the index of first occurrence of needle in haystack
func IndexOf(haystack []string, needle string) int {
for i, s := range haystack {
if s == needle {
return i
}
}
return -1
}
// IsKeyEncrypted checks if the key is encrypted
func IsKeyEncrypted(sshKey string) (bool, error) {
priv, err := os.ReadFile(sshKey)
if err != nil {
return false, err
}
_, err = ssh.ParsePrivateKey(priv)
if err != nil {
if _, ok := err.(*ssh.PassphraseMissingError); ok {
return true, nil
}
}
return false, err
}
|