summaryrefslogtreecommitdiff
path: root/cli/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ecdsa/error.go
diff options
context:
space:
mode:
Diffstat (limited to 'cli/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ecdsa/error.go')
-rw-r--r--cli/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ecdsa/error.go116
1 files changed, 116 insertions, 0 deletions
diff --git a/cli/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ecdsa/error.go b/cli/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ecdsa/error.go
new file mode 100644
index 0000000..45f8252
--- /dev/null
+++ b/cli/vendor/github.com/decred/dcrd/dcrec/secp256k1/v4/ecdsa/error.go
@@ -0,0 +1,116 @@
+// Copyright (c) 2020 The Decred developers
+// Use of this source code is governed by an ISC
+// license that can be found in the LICENSE file.
+
+package ecdsa
+
+// ErrorKind identifies a kind of error. It has full support for
+// errors.Is and errors.As, so the caller can directly check against
+// an error kind when determining the reason for an error.
+type ErrorKind string
+
+// These constants are used to identify a specific Error.
+const (
+ // ErrSigTooShort is returned when a signature that should be a DER
+ // signature is too short.
+ ErrSigTooShort = ErrorKind("ErrSigTooShort")
+
+ // ErrSigTooLong is returned when a signature that should be a DER signature
+ // is too long.
+ ErrSigTooLong = ErrorKind("ErrSigTooLong")
+
+ // ErrSigInvalidSeqID is returned when a signature that should be a DER
+ // signature does not have the expected ASN.1 sequence ID.
+ ErrSigInvalidSeqID = ErrorKind("ErrSigInvalidSeqID")
+
+ // ErrSigInvalidDataLen is returned when a signature that should be a DER
+ // signature does not specify the correct number of remaining bytes for the
+ // R and S portions.
+ ErrSigInvalidDataLen = ErrorKind("ErrSigInvalidDataLen")
+
+ // ErrSigMissingSTypeID is returned when a signature that should be a DER
+ // signature does not provide the ASN.1 type ID for S.
+ ErrSigMissingSTypeID = ErrorKind("ErrSigMissingSTypeID")
+
+ // ErrSigMissingSLen is returned when a signature that should be a DER
+ // signature does not provide the length of S.
+ ErrSigMissingSLen = ErrorKind("ErrSigMissingSLen")
+
+ // ErrSigInvalidSLen is returned when a signature that should be a DER
+ // signature does not specify the correct number of bytes for the S portion.
+ ErrSigInvalidSLen = ErrorKind("ErrSigInvalidSLen")
+
+ // ErrSigInvalidRIntID is returned when a signature that should be a DER
+ // signature does not have the expected ASN.1 integer ID for R.
+ ErrSigInvalidRIntID = ErrorKind("ErrSigInvalidRIntID")
+
+ // ErrSigZeroRLen is returned when a signature that should be a DER
+ // signature has an R length of zero.
+ ErrSigZeroRLen = ErrorKind("ErrSigZeroRLen")
+
+ // ErrSigNegativeR is returned when a signature that should be a DER
+ // signature has a negative value for R.
+ ErrSigNegativeR = ErrorKind("ErrSigNegativeR")
+
+ // ErrSigTooMuchRPadding is returned when a signature that should be a DER
+ // signature has too much padding for R.
+ ErrSigTooMuchRPadding = ErrorKind("ErrSigTooMuchRPadding")
+
+ // ErrSigRIsZero is returned when a signature has R set to the value zero.
+ ErrSigRIsZero = ErrorKind("ErrSigRIsZero")
+
+ // ErrSigRTooBig is returned when a signature has R with a value that is
+ // greater than or equal to the group order.
+ ErrSigRTooBig = ErrorKind("ErrSigRTooBig")
+
+ // ErrSigInvalidSIntID is returned when a signature that should be a DER
+ // signature does not have the expected ASN.1 integer ID for S.
+ ErrSigInvalidSIntID = ErrorKind("ErrSigInvalidSIntID")
+
+ // ErrSigZeroSLen is returned when a signature that should be a DER
+ // signature has an S length of zero.
+ ErrSigZeroSLen = ErrorKind("ErrSigZeroSLen")
+
+ // ErrSigNegativeS is returned when a signature that should be a DER
+ // signature has a negative value for S.
+ ErrSigNegativeS = ErrorKind("ErrSigNegativeS")
+
+ // ErrSigTooMuchSPadding is returned when a signature that should be a DER
+ // signature has too much padding for S.
+ ErrSigTooMuchSPadding = ErrorKind("ErrSigTooMuchSPadding")
+
+ // ErrSigSIsZero is returned when a signature has S set to the value zero.
+ ErrSigSIsZero = ErrorKind("ErrSigSIsZero")
+
+ // ErrSigSTooBig is returned when a signature has S with a value that is
+ // greater than or equal to the group order.
+ ErrSigSTooBig = ErrorKind("ErrSigSTooBig")
+)
+
+// Error satisfies the error interface and prints human-readable errors.
+func (e ErrorKind) Error() string {
+ return string(e)
+}
+
+// Error identifies an error related to an ECDSA signature. It has full
+// support for errors.Is and errors.As, so the caller can ascertain the
+// specific reason for the error by checking the underlying error.
+type Error struct {
+ Err error
+ Description string
+}
+
+// Error satisfies the error interface and prints human-readable errors.
+func (e Error) Error() string {
+ return e.Description
+}
+
+// Unwrap returns the underlying wrapped error.
+func (e Error) Unwrap() error {
+ return e.Err
+}
+
+// signatureError creates an Error given a set of arguments.
+func signatureError(kind ErrorKind, desc string) Error {
+ return Error{Err: kind, Description: desc}
+}