Class Ssh2PublicKeyEntryDecoder

    • Field Detail

      • SUPPORTED_KEY_TYPES

        public static final java.util.NavigableSet<java.lang.String> SUPPORTED_KEY_TYPES
      • START_MARKERS

        public static final java.util.List<java.lang.String> START_MARKERS
      • STOP_MARKERS

        public static final java.util.List<java.lang.String> STOP_MARKERS
      • HEADER_CONTINUATION_INDICATOR

        public static final char HEADER_CONTINUATION_INDICATOR
        According to RFC-4716 section 3.3:

        A line is continued if the last character in the line is a "\". If the last character of a line is a "\", then the logical contents of the line are formed by removing the "\" and the line termination characters, and appending the contents of the next line.

        See Also:
        Constant Field Values
    • Constructor Detail

      • Ssh2PublicKeyEntryDecoder

        public Ssh2PublicKeyEntryDecoder()
    • Method Detail

      • getSupportedKeyTypes

        public java.util.NavigableSet<java.lang.String> getSupportedKeyTypes()
        Specified by:
        getSupportedKeyTypes in interface KeyTypeNamesSupport
        Returns:
        The case insensitive NavigableSet of OpenSSH key type names that are supported by this decoder - e.g., ssh-rsa, ssh-dss, ecdsa-sha2-nistp384. This is not a single name - e.g., ECDSA keys have several curve names. Caveat: this collection may be un-modifiable...
      • resolve

        public java.security.PublicKey resolve​(SessionContext session,
                                               java.lang.String keyType,
                                               byte[] keyData,
                                               java.util.Map<java.lang.String,​java.lang.String> headers)
                                        throws java.io.IOException,
                                               java.security.GeneralSecurityException
        Specified by:
        resolve in interface PublicKeyEntryResolver
        Parameters:
        session - The SessionContext for invoking this load command - may be null if not invoked within a session context (e.g., offline tool or session unknown).
        keyType - The OpenSSH reported key type
        keyData - The OpenSSH encoded key data
        headers - Any headers that may have been available when data was read
        Returns:
        The extracted PublicKey - ignored if null
        Throws:
        java.io.IOException - If failed to parse the key data
        java.security.GeneralSecurityException - If failed to generate the key
      • decodePublicKey

        public java.security.PublicKey decodePublicKey​(SessionContext session,
                                                       java.lang.String keyType,
                                                       java.io.InputStream keyData,
                                                       java.util.Map<java.lang.String,​java.lang.String> headers)
                                                throws java.io.IOException,
                                                       java.security.GeneralSecurityException
        Specified by:
        decodePublicKey in interface PublicKeyRawDataDecoder<java.security.PublicKey>
        Parameters:
        session - The SessionContext for invoking this command - may be null if not invoked within a session context (e.g., offline tool or session unknown).
        keyType - The reported / encode key type
        keyData - The key data bytes stream positioned after the key type decoding and making sure it is one of the supported types
        headers - Any headers that may have been available when data was read
        Returns:
        The decoded PublicKey
        Throws:
        java.io.IOException - If failed to read from the data stream
        java.security.GeneralSecurityException - If failed to generate the key
      • decodePublicKeyByType

        public java.security.PublicKey decodePublicKeyByType​(SessionContext session,
                                                             java.lang.String keyType,
                                                             java.io.InputStream keyData,
                                                             java.util.Map<java.lang.String,​java.lang.String> headers)
                                                      throws java.io.IOException,
                                                             java.security.GeneralSecurityException
        Specified by:
        decodePublicKeyByType in interface PublicKeyRawDataDecoder<java.security.PublicKey>
        Throws:
        java.io.IOException
        java.security.GeneralSecurityException
      • readPublicKey

        public java.security.PublicKey readPublicKey​(SessionContext session,
                                                     NamedResource resourceKey,
                                                     java.util.List<java.lang.String> lines)
                                              throws java.io.IOException,
                                                     java.security.GeneralSecurityException
        Specified by:
        readPublicKey in interface PublicKeyRawDataReader<java.security.PublicKey>
        Throws:
        java.io.IOException
        java.security.GeneralSecurityException
      • readPublicKey

        public java.security.PublicKey readPublicKey​(SessionContext session,
                                                     NamedResource resourceKey,
                                                     java.lang.String beginMarker,
                                                     java.lang.String endMarker,
                                                     java.util.List<java.lang.String> lines,
                                                     java.util.Map<java.lang.String,​java.lang.String> headers)
                                              throws java.io.IOException,
                                                     java.security.GeneralSecurityException
        Throws:
        java.io.IOException
        java.security.GeneralSecurityException
      • readPublicKey

        public java.security.PublicKey readPublicKey​(SessionContext session,
                                                     NamedResource resourceKey,
                                                     java.lang.String beginMarker,
                                                     java.lang.String endMarker,
                                                     byte[] dataBytes,
                                                     java.util.Map<java.lang.String,​java.lang.String> headers)
                                              throws java.io.IOException,
                                                     java.security.GeneralSecurityException
        Throws:
        java.io.IOException
        java.security.GeneralSecurityException
      • separateDataLinesFromHeaders

        protected java.util.Map.Entry<java.util.Map<java.lang.String,​java.lang.String>,​java.util.List<java.lang.String>> separateDataLinesFromHeaders​(SessionContext session,
                                                                                                                                                                  NamedResource resourceKey,
                                                                                                                                                                  java.lang.String startLine,
                                                                                                                                                                  java.lang.String endLine,
                                                                                                                                                                  java.util.List<java.lang.String> lines)
                                                                                                                                                           throws java.io.IOException,
                                                                                                                                                                  java.security.GeneralSecurityException
        Throws:
        java.io.IOException
        java.security.GeneralSecurityException