// Package krberror provides error type and functions for gokrb5.
package krberror import ( ) // Error type descriptions. const ( separator = " < " EncodingError = "Encoding_Error" NetworkingError = "Networking_Error" DecryptingError = "Decrypting_Error" EncryptingError = "Encrypting_Error" ChksumError = "Checksum_Error" KRBMsgError = "KRBMessage_Handling_Error" ConfigError = "Configuration_Error" KDCError = "KDC_Error" ) // Krberror is an error type for gokrb5 type Krberror struct { RootCause string EText []string } // Error function to implement the error interface. func ( Krberror) () string { return fmt.Sprintf("[Root cause: %s] ", .RootCause) + strings.Join(.EText, separator) } // Add another error statement to the error. func ( *Krberror) ( string, string) { .EText = append([]string{fmt.Sprintf("%s: %s", , )}, .EText...) } // New creates a new instance of Krberror. func (, string) Krberror { return Krberror{ RootCause: , EText: []string{}, } } // Errorf appends to or creates a new Krberror. func ( error, , string, ...interface{}) Krberror { if , := .(Krberror); { .Add(, fmt.Sprintf(, ...)) return } return NewErrorf(, +": %s", append(, )...) } // NewErrorf creates a new Krberror from a formatted string. func (, string, ...interface{}) Krberror { var string if len() > 0 { = fmt.Sprintf("%s: %s", , fmt.Sprintf(, ...)) } else { = fmt.Sprintf("%s: %s", , ) } return Krberror{ RootCause: , EText: []string{}, } }