mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-26 08:51:02 -06:00
e9476c6765
Internally, triton-go has changed how it handles errors. We can now get rid of checking strings for errors, and we have introduced an errors library that wraps some of the major errors we encounter and test for
38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
//
|
|
// Copyright (c) 2018, Joyent, Inc. All rights reserved.
|
|
//
|
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
//
|
|
|
|
package authentication
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"golang.org/x/crypto/ssh"
|
|
)
|
|
|
|
// formatPublicKeyFingerprint produces the MD5 fingerprint of the given SSH
|
|
// public key. If display is true, the fingerprint is formatted with colons
|
|
// between each byte, as per the output of OpenSSL.
|
|
func formatPublicKeyFingerprint(key ssh.PublicKey, display bool) string {
|
|
publicKeyFingerprint := md5.New()
|
|
publicKeyFingerprint.Write(key.Marshal())
|
|
publicKeyFingerprintString := fmt.Sprintf("%x", publicKeyFingerprint.Sum(nil))
|
|
|
|
if !display {
|
|
return publicKeyFingerprintString
|
|
}
|
|
|
|
formatted := ""
|
|
for i := 0; i < len(publicKeyFingerprintString); i = i + 2 {
|
|
formatted = fmt.Sprintf("%s%s:", formatted, publicKeyFingerprintString[i:i+2])
|
|
}
|
|
|
|
return strings.TrimSuffix(formatted, ":")
|
|
}
|