common

package
v1.6.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 25, 2022 License: Apache-2.0, MIT Imports: 9 Imported by: 0

Documentation

Overview

Package common contains Assuan protocol I/O and error handling utilities shared by server and client code.

Index

Constants

View Source
const (
	// MaxLineLen is a maximum length of line in Assuan protocol, including
	// space after command and LF.
	MaxLineLen = 1000
)

Variables

This section is empty.

Functions

func DecodeErrCmd

func DecodeErrCmd(params string) error

DecodeErrCmd converts protocol string into error.

func EscapeParameters

func EscapeParameters(raw string) string

EscapeParameters percent-encodes CR, LF, % and backslash at end as required by protocol. Note: We escape all backslashes to keep code simple. Ref.: https//www.gnupg.org/documentation/manuals/assuan/Client-requests.html.

func MakeErrCode

func MakeErrCode(source ErrorSource, code ErrorCode) int

MakeErrCode converts (source, code) pair to format used by Assuan.

func SplitErrCode

func SplitErrCode(code int) (ErrorSource, ErrorCode)

SplitErrCode splits integer code into parts according to protocol.

func UnescapeParameters

func UnescapeParameters(encoded string) (string, error)

UnescapeParameters reverses EscapeParameters function. Note: It does unescape any escaped character, not only CR, LF, % and backslashes. Ref.: https//www.gnupg.org/documentation/manuals/assuan/Client-requests.html.

Types

type Error

type Error struct {
	Src     ErrorSource
	Code    ErrorCode
	SrcName string
	Message string
}

Error is used to present errors returned by server.

func ReadError

func ReadError(err error) *Error

ReadError converts arbitrary error object to protocol error with Assuan Read Error code.

func WriteError

func WriteError(err error) *Error

WriteError converts arbitrary error object to protocol error with Assuan Write Error code.

func (Error) Error

func (e Error) Error() string

type ErrorCode

type ErrorCode uint16

ErrorCode - error code as defined by Assuan protocol.

const (
	ErrNoError               ErrorCode = 0
	ErrGeneral               ErrorCode = 1
	ErrUnknownPacket         ErrorCode = 2
	ErrUnknownVersion        ErrorCode = 3
	ErrPubkeyAlgo            ErrorCode = 4
	ErrDigestAlgo            ErrorCode = 5
	ErrBadPubkey             ErrorCode = 6
	ErrBadSeckey             ErrorCode = 7
	ErrBadSignature          ErrorCode = 8
	ErrNoPubkey              ErrorCode = 9
	ErrChecksum              ErrorCode = 10
	ErrBadPassphrase         ErrorCode = 11
	ErrCipherAlgo            ErrorCode = 12
	ErrKeyringOpen           ErrorCode = 13
	ErrInvPacket             ErrorCode = 14
	ErrInvArmor              ErrorCode = 15
	ErrNoUserID              ErrorCode = 16
	ErrNoSeckey              ErrorCode = 17
	ErrWrongSeckey           ErrorCode = 18
	ErrBadKey                ErrorCode = 19
	ErrComprAlgo             ErrorCode = 20
	ErrNoPrime               ErrorCode = 21
	ErrNoEncodingMethod      ErrorCode = 22
	ErrNoEncryptionScheme    ErrorCode = 23
	ErrNoSignatureScheme     ErrorCode = 24
	ErrInvAttr               ErrorCode = 25
	ErrNoValue               ErrorCode = 26
	ErrNotFound              ErrorCode = 27
	ErrValueNotFound         ErrorCode = 28
	ErrSyntax                ErrorCode = 29
	ErrBadMpi                ErrorCode = 30
	ErrInvPassphrase         ErrorCode = 31
	ErrSigClass              ErrorCode = 32
	ErrResourceLimit         ErrorCode = 33
	ErrInvKeyring            ErrorCode = 34
	ErrTrustdb               ErrorCode = 35
	ErrBadCert               ErrorCode = 36
	ErrInvUserID             ErrorCode = 37
	ErrUnexpected            ErrorCode = 38
	ErrTimeConflict          ErrorCode = 39
	ErrKeyserver             ErrorCode = 40
	ErrWrongPubkeyAlgo       ErrorCode = 41
	ErrTributeToDA           ErrorCode = 42
	ErrWeakKey               ErrorCode = 43
	ErrInvKeylen             ErrorCode = 44
	ErrInvArg                ErrorCode = 45
	ErrBadURI                ErrorCode = 46
	ErrInvURI                ErrorCode = 47
	ErrNetwork               ErrorCode = 48
	ErrUnknownHost           ErrorCode = 49
	ErrSelftestFailed        ErrorCode = 50
	ErrNotEncrypted          ErrorCode = 51
	ErrNotProcessed          ErrorCode = 52
	ErrUnusablePubkey        ErrorCode = 53
	ErrUnusableSeckey        ErrorCode = 54
	ErrInvValue              ErrorCode = 55
	ErrBadCertChain          ErrorCode = 56
	ErrMissingCert           ErrorCode = 57
	ErrNoData                ErrorCode = 58
	ErrBug                   ErrorCode = 59
	ErrNotSupported          ErrorCode = 60
	ErrInvOp                 ErrorCode = 61
	ErrTimeout               ErrorCode = 62
	ErrInternal              ErrorCode = 63
	ErrEOFGcrypt             ErrorCode = 64
	ErrInvObj                ErrorCode = 65
	ErrTooShort              ErrorCode = 66
	ErrTooLarge              ErrorCode = 67
	ErrNoObj                 ErrorCode = 68
	ErrNotImplemented        ErrorCode = 69
	ErrConflict              ErrorCode = 70
	ErrInvCipherMode         ErrorCode = 71
	ErrInvFlag               ErrorCode = 72
	ErrInvHandle             ErrorCode = 73
	ErrTruncated             ErrorCode = 74
	ErrIncompleteLine        ErrorCode = 75
	ErrInvResponse           ErrorCode = 76
	ErrNoAgent               ErrorCode = 77
	ErrAgent                 ErrorCode = 78
	ErrInvData               ErrorCode = 79
	ErrAssuanServerFault     ErrorCode = 80
	ErrAssuan                ErrorCode = 81
	ErrInvSessionKey         ErrorCode = 82
	ErrInvSexp               ErrorCode = 83
	ErrUnsupportedAlgorithm  ErrorCode = 84
	ErrNoPinEntry            ErrorCode = 85
	ErrPinEntry              ErrorCode = 86
	ErrBadPIN                ErrorCode = 87
	ErrInvName               ErrorCode = 88
	ErrBadData               ErrorCode = 89
	ErrInvParameter          ErrorCode = 90
	ErrWrongCard             ErrorCode = 91
	ErrNoDirmngr             ErrorCode = 92
	ErrDirmngr               ErrorCode = 93
	ErrCertRevoked           ErrorCode = 94
	ErrNoCrlKnown            ErrorCode = 95
	ErrCrlTooOld             ErrorCode = 96
	ErrLineTooLong           ErrorCode = 97
	ErrNotTrusted            ErrorCode = 98
	ErrCanceled              ErrorCode = 99
	ErrBadCaCert             ErrorCode = 100
	ErrCertExpired           ErrorCode = 101
	ErrCertTooYoung          ErrorCode = 102
	ErrUnsupportedCert       ErrorCode = 103
	ErrUnknownSexp           ErrorCode = 104
	ErrUnsupportedProtection ErrorCode = 105
	ErrCorruptedProtection   ErrorCode = 106
	ErrAmbiguousName         ErrorCode = 107
	ErrCard                  ErrorCode = 108
	ErrCardReset             ErrorCode = 109
	ErrCardRemoved           ErrorCode = 110
	ErrInvCard               ErrorCode = 111
	ErrCardNotPresent        ErrorCode = 112
	ErrNoPkcs15App           ErrorCode = 113
	ErrNotConfirmed          ErrorCode = 114
	ErrConfiguration         ErrorCode = 115
	ErrNoPolicyMatch         ErrorCode = 116
	ErrInvIndex              ErrorCode = 117
	ErrInvID                 ErrorCode = 118
	ErrNoScdaemon            ErrorCode = 119
	ErrScdaemon              ErrorCode = 120
	ErrUnsupportedProtocol   ErrorCode = 121
	ErrBadPinMethod          ErrorCode = 122
	ErrCardNotInitialized    ErrorCode = 123
	ErrUnsupportedOperation  ErrorCode = 124
	ErrWrongKeyUsage         ErrorCode = 125
	ErrNothingFound          ErrorCode = 126
	ErrWrongBlobType         ErrorCode = 127
	ErrMissingValue          ErrorCode = 128
	ErrHardware              ErrorCode = 129
	ErrPinBlocked            ErrorCode = 130
	ErrUseConditions         ErrorCode = 131
	ErrPinNotSynced          ErrorCode = 132
	ErrInvCrl                ErrorCode = 133
	ErrBadBer                ErrorCode = 134
	ErrInvBer                ErrorCode = 135
	ErrElementNotFound       ErrorCode = 136
	ErrIdentifierNotFound    ErrorCode = 137
	ErrInvTag                ErrorCode = 138
	ErrInvLength             ErrorCode = 139
	ErrInvKeyinfo            ErrorCode = 140
	ErrUnexpectedTag         ErrorCode = 141
	ErrNotDerEncoded         ErrorCode = 142
	ErrNoCmsObj              ErrorCode = 143
	ErrInvCmsObj             ErrorCode = 144
	ErrUnknownCmsObj         ErrorCode = 145
	ErrUnsupportedCmsObj     ErrorCode = 146
	ErrUnsupportedEncoding   ErrorCode = 147
	ErrUnsupportedCmsVersion ErrorCode = 148
	ErrUnknownAlgorithm      ErrorCode = 149
	ErrInvEngine             ErrorCode = 150
	ErrPubkeyNotTrusted      ErrorCode = 151
	ErrDecryptFailed         ErrorCode = 152
	ErrKeyExpired            ErrorCode = 153
	ErrSigExpired            ErrorCode = 154
	ErrEncodingProblem       ErrorCode = 155
	ErrInvState              ErrorCode = 156
	ErrDupValue              ErrorCode = 157
	ErrMissingAction         ErrorCode = 158
	ErrModuleNotFound        ErrorCode = 159
	ErrInvOidString          ErrorCode = 160
	ErrInvTime               ErrorCode = 161
	ErrInvCrlObj             ErrorCode = 162
	ErrUnsupportedCrlVersion ErrorCode = 163
	ErrInvCertObj            ErrorCode = 164
	ErrUnknownName           ErrorCode = 165
	ErrLocaleProblem         ErrorCode = 166
	ErrNotLocked             ErrorCode = 167
	ErrProtocolViolation     ErrorCode = 168
	ErrInvMac                ErrorCode = 169
	ErrInvRequest            ErrorCode = 170
	ErrUnknownExtn           ErrorCode = 171
	ErrUnknownCritExtn       ErrorCode = 172
	ErrLocked                ErrorCode = 173
	ErrUnknownOption         ErrorCode = 174
	ErrUnknownCommand        ErrorCode = 175
	ErrNotOperational        ErrorCode = 176
	ErrNoPassphrase          ErrorCode = 177
	ErrNoPin                 ErrorCode = 178
	ErrNotEnabled            ErrorCode = 179
	ErrNoEngine              ErrorCode = 180
	ErrMissingKey            ErrorCode = 181
	ErrTooMany               ErrorCode = 182
	ErrLimitReached          ErrorCode = 183
	ErrNotInitialized        ErrorCode = 184
	ErrMissingIssuerCert     ErrorCode = 185
	ErrNoKeyserver           ErrorCode = 186
	ErrInvCurve              ErrorCode = 187
	ErrUnknownCurve          ErrorCode = 188
	ErrDupKey                ErrorCode = 189
	ErrAmbiguous             ErrorCode = 190
	ErrNoCryptCtx            ErrorCode = 191
	ErrWrongCryptCtx         ErrorCode = 192
	ErrBadCryptCtx           ErrorCode = 193
	ErrCryptCtxConflict      ErrorCode = 194
	ErrBrokenPubkey          ErrorCode = 195
	ErrBrokenSeckey          ErrorCode = 196
	ErrMacAlgo               ErrorCode = 197
	ErrFullyCanceled         ErrorCode = 198
	ErrUnfinished            ErrorCode = 199
	ErrBufferTooShort        ErrorCode = 200
	ErrSEXPInvLenSpec        ErrorCode = 201
	ErrSEXPStringTooLong     ErrorCode = 202
	ErrSEXPUnmatchedParen    ErrorCode = 203
	ErrSEXPNotCanonical      ErrorCode = 204
	ErrSEXPBadCharacter      ErrorCode = 205
	ErrSEXPBadQuotation      ErrorCode = 206
	ErrSEXPZeroPrefix        ErrorCode = 207
	ErrSEXPNestedDh          ErrorCode = 208
	ErrSEXPUnmatchedDh       ErrorCode = 209
	ErrSEXPUnexpectedPunc    ErrorCode = 210
	ErrSEXPBadHexChar        ErrorCode = 211
	ErrSEXPOddHexNumbers     ErrorCode = 212
	ErrSEXPBadOctChar        ErrorCode = 213
	ErrSubkeysExpOrRev       ErrorCode = 217
	ErrDBCorrupted           ErrorCode = 218
	ErrServerFailed          ErrorCode = 219
	ErrNoName                ErrorCode = 220
	ErrNoKey                 ErrorCode = 221
	ErrLegacyKey             ErrorCode = 222
	ErrRequestTooShort       ErrorCode = 223
	ErrRequestTooLong        ErrorCode = 224
	ErrObjTermState          ErrorCode = 225
	ErrNoCertChain           ErrorCode = 226
	ErrCertTooLarge          ErrorCode = 227
	ErrInvRecord             ErrorCode = 228
	ErrBadMAC                ErrorCode = 229
	ErrUnexpectedMsg         ErrorCode = 230
	ErrComprFailed           ErrorCode = 231
	ErrWouldWrap             ErrorCode = 232
	ErrFatalAlert            ErrorCode = 233
	ErrNoCipher              ErrorCode = 234
	ErrMissingClientCert     ErrorCode = 235
	ErrCloseNotify           ErrorCode = 236
	ErrTicketExpired         ErrorCode = 237
	ErrBadTicket             ErrorCode = 238
	ErrUnknownIdentity       ErrorCode = 239
	ErrBadHSCert             ErrorCode = 240
	ErrBadHSCertReq          ErrorCode = 241
	ErrBadHSCertVer          ErrorCode = 242
	ErrBadHSChangeCipher     ErrorCode = 243
	ErrBadHSClientHello      ErrorCode = 244
	ErrBadHSServerHello      ErrorCode = 245
	ErrBadHSServerHelloDone  ErrorCode = 246
	ErrBadHSFinished         ErrorCode = 247
	ErrBadHSServerKex        ErrorCode = 248
	ErrBadHSClientKex        ErrorCode = 249
	ErrBogusString           ErrorCode = 250
	ErrForbidden             ErrorCode = 251
	ErrKeyDisabled           ErrorCode = 252
	ErrKeyOnCard             ErrorCode = 253
	ErrInvLockObj            ErrorCode = 254
	ErrTrue                  ErrorCode = 255
	ErrFalse                 ErrorCode = 256
	ErrAssGeneral            ErrorCode = 257
	ErrAssAcceptFailed       ErrorCode = 258
	ErrAssConnectFailed      ErrorCode = 259
	ErrAssInvResponse        ErrorCode = 260
	ErrAssInvValue           ErrorCode = 261
	ErrAssIncompleteLine     ErrorCode = 262
	ErrAssLineTooLong        ErrorCode = 263
	ErrAssNestedCommands     ErrorCode = 264
	ErrAssNoDataCb           ErrorCode = 265
	ErrAssNoInquireCb        ErrorCode = 266
	ErrAssNotAServer         ErrorCode = 267
	ErrAssNotAClient         ErrorCode = 268
	ErrAssServerStart        ErrorCode = 269
	ErrAssReadError          ErrorCode = 270
	ErrAssWriteError         ErrorCode = 271
	ErrAssTooMuchData        ErrorCode = 273
	ErrAssUnexpectedCmd      ErrorCode = 274
	ErrAssUnknownCmd         ErrorCode = 275
	ErrAssSyntax             ErrorCode = 276
	ErrAssCanceled           ErrorCode = 277
	ErrAssNoInput            ErrorCode = 278
	ErrAssNoOutput           ErrorCode = 279
	ErrAssParameter          ErrorCode = 280
	ErrAssUnknownInquire     ErrorCode = 281
	ErrEngineTooOld          ErrorCode = 300
	ErrWindowTooSmall        ErrorCode = 301
	ErrWindowTooLarge        ErrorCode = 302
	ErrMissingEnvvar         ErrorCode = 303
	ErrUserIDExists          ErrorCode = 304
	ErrNameExists            ErrorCode = 305
	ErrDupName               ErrorCode = 306
	ErrTooYoung              ErrorCode = 307
	ErrTooOld                ErrorCode = 308
	ErrUnknownFlag           ErrorCode = 309
	ErrInvOrder              ErrorCode = 310
	ErrAlreadyFetched        ErrorCode = 311
	ErrTryLater              ErrorCode = 312
	ErrWrongName             ErrorCode = 313
	ErrSystemBug             ErrorCode = 666
	ErrDNSUnknown            ErrorCode = 711
	ErrDNSSection            ErrorCode = 712
	ErrDNSAddress            ErrorCode = 713
	ErrDNSNoQuery            ErrorCode = 714
	ErrDNSNoAnswer           ErrorCode = 715
	ErrDNSClosed             ErrorCode = 716
	ErrDNSVerify             ErrorCode = 717
	ErrDNSTimeout            ErrorCode = 718
	ErrLDAPGeneral           ErrorCode = 721
	ErrLDAPAttrGeneral       ErrorCode = 722
	ErrLDAPNameGeneral       ErrorCode = 723
	ErrLDAPSecurityGeneral   ErrorCode = 724
	ErrLDAPServiceGeneral    ErrorCode = 725
	ErrLDAPUpdateGeneral     ErrorCode = 726
	ErrLDAPEGeneral          ErrorCode = 727
	ErrLDAPXGeneral          ErrorCode = 728
	ErrLDAPOtherGeneral      ErrorCode = 729
	ErrLDAPXConnecting       ErrorCode = 750
	ErrLDAPReferralLimit     ErrorCode = 751
	ErrLDAPClientLoop        ErrorCode = 752
	ErrLDAPNoResults         ErrorCode = 754
	ErrLDAPControlNotFound   ErrorCode = 755
	ErrLDAPNotSupported      ErrorCode = 756
	ErrLDAPConnect           ErrorCode = 757
	ErrLDAPNoMemory          ErrorCode = 758
	ErrLDAPParam             ErrorCode = 759
	ErrLDAPUserCancelled     ErrorCode = 760
	ErrLDAPFilter            ErrorCode = 761
	ErrLDAPAuthUnknown       ErrorCode = 762
	ErrLDAPTimeout           ErrorCode = 763
	ErrLDAPDecoding          ErrorCode = 764
	ErrLDAPEncoding          ErrorCode = 765
	ErrLDAPLocal             ErrorCode = 766
	ErrLDAPServerDown        ErrorCode = 767
	ErrLDAPSuccess           ErrorCode = 768
	ErrLDAPOperations        ErrorCode = 769
	ErrLDAPProtocol          ErrorCode = 770
	ErrLDAPTimelimit         ErrorCode = 771
	ErrLDAPSizelimit         ErrorCode = 772
	ErrLDAPCompareFalse      ErrorCode = 773
	ErrLDAPCompareTrue       ErrorCode = 774
	ErrLDAPUnsupportedAuth   ErrorCode = 775
	ErrLDAPStrongAuthRqrd    ErrorCode = 776
	ErrLDAPPartialResults    ErrorCode = 777
	ErrLDAPReferral          ErrorCode = 778
	ErrLDAPAdminlimit        ErrorCode = 779
	ErrLDAPUnavailCritExtn   ErrorCode = 780
	ErrLDAPConfidentRqrd     ErrorCode = 781
	ErrLDAPSaslBindInprog    ErrorCode = 782
	ErrLDAPNoSuchAttribute   ErrorCode = 784
	ErrLDAPUndefinedType     ErrorCode = 785
	ErrLDAPBadMatching       ErrorCode = 786
	ErrLDAPConstViolation    ErrorCode = 787
	ErrLDAPTypeValueExists   ErrorCode = 788
	ErrLDAPInvSyntax         ErrorCode = 789
	ErrLDAPNoSuchObj         ErrorCode = 800
	ErrLDAPAliasProblem      ErrorCode = 801
	ErrLDAPInvDnSyntax       ErrorCode = 802
	ErrLDAPIsLeaf            ErrorCode = 803
	ErrLDAPAliasDeref        ErrorCode = 804
	ErrLDAPXProxyAuthFail    ErrorCode = 815
	ErrLDAPBadAuth           ErrorCode = 816
	ErrLDAPInvCredentials    ErrorCode = 817
	ErrLDAPInsufficientAcc   ErrorCode = 818
	ErrLDAPBusy              ErrorCode = 819
	ErrLDAPUnavailable       ErrorCode = 820
	ErrLDAPUnwillToPerform   ErrorCode = 821
	ErrLDAPLoopDetect        ErrorCode = 822
	ErrLDAPNamingViolation   ErrorCode = 832
	ErrLDAPObjClsViolation   ErrorCode = 833
	ErrLDAPNotAllowNonleaf   ErrorCode = 834
	ErrLDAPNotAllowOnRdn     ErrorCode = 835
	ErrLDAPAlreadyExists     ErrorCode = 836
	ErrLDAPNoObjClassMods    ErrorCode = 837
	ErrLDAPResultsTooLarge   ErrorCode = 838
	ErrLDAPAffectsMultDsas   ErrorCode = 839
	ErrLDAPVlv               ErrorCode = 844
	ErrLDAPOther             ErrorCode = 848
	ErrLDAPCupResourceLimit  ErrorCode = 881
	ErrLDAPCupSecViolation   ErrorCode = 882
	ErrLDAPCupInvData        ErrorCode = 883
	ErrLDAPCupUnsupScheme    ErrorCode = 884
	ErrLDAPCupReload         ErrorCode = 885
	ErrLDAPCancelled         ErrorCode = 886
	ErrLDAPNoSuchOperation   ErrorCode = 887
	ErrLDAPTooLate           ErrorCode = 888
	ErrLDAPCannotCancel      ErrorCode = 889
	ErrLDAPAssertionFailed   ErrorCode = 890
	ErrLDAPProxAuthDenied    ErrorCode = 891
	ErrUser1                 ErrorCode = 1024
	ErrUser2                 ErrorCode = 1025
	ErrUser3                 ErrorCode = 1026
	ErrUser4                 ErrorCode = 1027
	ErrUser5                 ErrorCode = 1028
	ErrUser6                 ErrorCode = 1029
	ErrUser7                 ErrorCode = 1030
	ErrUser8                 ErrorCode = 1031
	ErrUser9                 ErrorCode = 1032
	ErrUser10                ErrorCode = 1033
	ErrUser11                ErrorCode = 1034
	ErrUser12                ErrorCode = 1035
	ErrUser13                ErrorCode = 1036
	ErrUser14                ErrorCode = 1037
	ErrUser15                ErrorCode = 1038
	ErrUser16                ErrorCode = 1039
	ErrMissingErrno          ErrorCode = 16381
	ErrUnknownErrno          ErrorCode = 16382
	ErrEOF                   ErrorCode = 16383
)

Remaining GPG_ERR_* constants from gpg-error.h (error codes).

type ErrorSource

type ErrorSource uint8

ErrorSource - error source as defined by Assuan protocol.

const (
	ErrSrcUnknown  ErrorSource = 0
	ErrSrcGcrypt   ErrorSource = 1
	ErrSrcGPG      ErrorSource = 2
	ErrSrcGPGSM    ErrorSource = 3
	ErrSrcGPGagent ErrorSource = 4
	ErrSrcPinentry ErrorSource = 5
	ErrSrcSCD      ErrorSource = 6
	ErrSrcGPGME    ErrorSource = 7
	ErrSrcKeybox   ErrorSource = 8
	ErrSrcKSBA     ErrorSource = 9
	ErrSrcDirmngr  ErrorSource = 10
	ErrSrcGSTA     ErrorSource = 11
	ErrSrcGPA      ErrorSource = 21
	ErrSrcKleo     ErrorSource = 13
	ErrSrcG13      ErrorSource = 14
	ErrSrcAssuan   ErrorSource = 15
	ErrSrcTLS      ErrorSource = 17
	ErrSrcAny      ErrorSource = 31
	ErrSrcUser1    ErrorSource = 32
	ErrSrcUser2    ErrorSource = 33
	ErrSrcUser3    ErrorSource = 34
	ErrSrcUser4    ErrorSource = 35
)

GPG_ERR_SOURCE_* constants from gpg-error.h.

type Pipe

type Pipe struct {
	// contains filtered or unexported fields
}

Pipe is a wrapper for Assuan command stream.

func New

func New(stream io.ReadWriter) Pipe

New crreates and initializes Pipe using biderectional stream.

func NewPipe

func NewPipe(in io.Reader, out io.Writer) Pipe

NewPipe crreates and initializes Pipe using 2 streams.

func (*Pipe) Close

func (p *Pipe) Close() error

Close closes Pipe.

func (*Pipe) ReadData

func (p *Pipe) ReadData() (data []byte, err error)

ReadData reads sequence of D commands and joins data together.

func (*Pipe) ReadLine

func (p *Pipe) ReadLine() (cmd string, params string, err error)

ReadLine reads raw request/response in following format: command <parameters>

Empty lines and lines starting with # are ignored as specified by protocol. Additionally, status information is silently discarded for now.

func (*Pipe) RestrictInputLen

func (p *Pipe) RestrictInputLen(restrict bool)

RestrictInputLen controls how lines longer than MaxLineLen should be handled. By default they will be discarded and error will be returned. You can disable this behavior using RestrictInputLen(false) if implementation you are working with violates this restriction.

Note that even with b=false line length will be restricted to bufio.MaxScanTokenSize (64 KiB).

This function MUST be called before any I/O, otherwise it will panic.

func (*Pipe) WriteComment

func (p *Pipe) WriteComment(text string) error

WriteComment is special case of WriteLine. "Command" is # and text is parameter.

func (*Pipe) WriteData

func (p *Pipe) WriteData(input []byte) error

WriteData sends passed byte slice using one or more D commands. Note: Error may occur even after some data is written so it's better to just CAN transaction after WriteData error.

func (*Pipe) WriteDataReader

func (p *Pipe) WriteDataReader(input io.Reader) error

WriteDataReader is similar to WriteData but sends data from input Reader until EOF.

func (*Pipe) WriteError

func (p *Pipe) WriteError(err Error) error

WriteError is a special case of WriteLine. It writes command.

func (*Pipe) WriteLine

func (p *Pipe) WriteLine(cmd string, params string) error

WriteLine writes request/response to pipe. Contents of params is escaped according to requirements of Assuan protocol.

type ReadWriter

type ReadWriter struct {
	io.Reader
	io.Writer
}

ReadWriter ties arbitrary io.Reader and io.Writer to get a struct that satisfies io.ReadWriter requirements.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL