Add nonbase64 sha256 support [v8] by gururajsh · Pull Request #3307 · cloudfoundry/cli
Expand Up
@@ -5,6 +5,7 @@ import (
"crypto/sha1"
"crypto/sha256"
"encoding/base64"
"encoding/hex"
"errors"
"fmt"
"io"
Expand All
@@ -28,6 +29,7 @@ const (
md5FingerprintLength = 47 // inclusive of space between bytes
hexSha1FingerprintLength = 59 // inclusive of space between bytes
base64Sha256FingerprintLength = 43
sha256FingerprintLength = 64
DefaultKeepAliveInterval = 30 * time.Second ) Expand Down Expand Up @@ -331,9 +333,12 @@ func (c *SecureShell) terminalType() string { return term }
func base64Sha256Fingerprint(key ssh.PublicKey) string { func sha256Fingerprint(key ssh.PublicKey, encode bool) string { sum := sha256.Sum256(key.Marshal()) return base64.RawStdEncoding.EncodeToString(sum[:]) if encode { return base64.RawStdEncoding.EncodeToString(sum[:]) } return hex.EncodeToString(sum[:]) }
func copyAndClose(wg *sync.WaitGroup, dest io.WriteCloser, src io.Reader) { Expand Down Expand Up @@ -364,8 +369,10 @@ func fingerprintCallback(skipHostValidation bool, expectedFingerprint string) ss var fingerprint string
switch len(expectedFingerprint) { case sha256FingerprintLength: fingerprint = sha256Fingerprint(key, false) case base64Sha256FingerprintLength: fingerprint = base64Sha256Fingerprint(key) fingerprint = sha256Fingerprint(key, true) case hexSha1FingerprintLength: fingerprint = hexSha1Fingerprint(key) case md5FingerprintLength: Expand Down
DefaultKeepAliveInterval = 30 * time.Second ) Expand Down Expand Up @@ -331,9 +333,12 @@ func (c *SecureShell) terminalType() string { return term }
func base64Sha256Fingerprint(key ssh.PublicKey) string { func sha256Fingerprint(key ssh.PublicKey, encode bool) string { sum := sha256.Sum256(key.Marshal()) return base64.RawStdEncoding.EncodeToString(sum[:]) if encode { return base64.RawStdEncoding.EncodeToString(sum[:]) } return hex.EncodeToString(sum[:]) }
func copyAndClose(wg *sync.WaitGroup, dest io.WriteCloser, src io.Reader) { Expand Down Expand Up @@ -364,8 +369,10 @@ func fingerprintCallback(skipHostValidation bool, expectedFingerprint string) ss var fingerprint string
switch len(expectedFingerprint) { case sha256FingerprintLength: fingerprint = sha256Fingerprint(key, false) case base64Sha256FingerprintLength: fingerprint = base64Sha256Fingerprint(key) fingerprint = sha256Fingerprint(key, true) case hexSha1FingerprintLength: fingerprint = hexSha1Fingerprint(key) case md5FingerprintLength: Expand Down