forked from mautrix/go
/
error.go
60 lines (55 loc) · 2.56 KB
/
error.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package olm
import (
"errors"
"fmt"
)
// Error codes from go-olm
var (
EmptyInput = errors.New("empty input")
NoKeyProvided = errors.New("no pickle key provided")
NotEnoughGoRandom = errors.New("couldn't get enough randomness from crypto/rand")
SignatureNotFound = errors.New("input JSON doesn't contain signature from specified device")
InputNotJSONString = errors.New("input doesn't look like a JSON string")
)
// Error codes from olm code
var (
NotEnoughRandom = errors.New("not enough entropy was supplied")
OutputBufferTooSmall = errors.New("supplied output buffer is too small")
BadMessageVersion = errors.New("the message version is unsupported")
BadMessageFormat = errors.New("the message couldn't be decoded")
BadMessageMAC = errors.New("the message couldn't be decrypted")
BadMessageKeyID = errors.New("the message references an unknown key ID")
InvalidBase64 = errors.New("the input base64 was invalid")
BadAccountKey = errors.New("the supplied account key is invalid")
UnknownPickleVersion = errors.New("the pickled object is too new")
CorruptedPickle = errors.New("the pickled object couldn't be decoded")
BadSessionKey = errors.New("attempt to initialise an inbound group session from an invalid session key")
UnknownMessageIndex = errors.New("attempt to decode a message whose index is earlier than our earliest known session key")
BadLegacyAccountPickle = errors.New("attempt to unpickle an account which uses pickle version 1")
BadSignature = errors.New("received message had a bad signature")
InputBufferTooSmall = errors.New("the input data was too small to be valid")
)
var errorMap = map[string]error{
"NOT_ENOUGH_RANDOM": NotEnoughRandom,
"OUTPUT_BUFFER_TOO_SMALL": OutputBufferTooSmall,
"BAD_MESSAGE_VERSION": BadMessageVersion,
"BAD_MESSAGE_FORMAT": BadMessageFormat,
"BAD_MESSAGE_MAC": BadMessageMAC,
"BAD_MESSAGE_KEY_ID": BadMessageKeyID,
"INVALID_BASE64": InvalidBase64,
"BAD_ACCOUNT_KEY": BadAccountKey,
"UNKNOWN_PICKLE_VERSION": UnknownPickleVersion,
"CORRUPTED_PICKLE": CorruptedPickle,
"BAD_SESSION_KEY": BadSessionKey,
"UNKNOWN_MESSAGE_INDEX": UnknownMessageIndex,
"BAD_LEGACY_ACCOUNT_PICKLE": BadLegacyAccountPickle,
"BAD_SIGNATURE": BadSignature,
"INPUT_BUFFER_TOO_SMALL": InputBufferTooSmall,
}
func convertError(errCode string) error {
err, ok := errorMap[errCode]
if ok {
return err
}
return fmt.Errorf("unknown error: %s", errCode)
}