Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
IRMA
Github mirrors
irmago
Commits
9c527942
Commit
9c527942
authored
Oct 02, 2017
by
Tomas
Browse files
ErrorCode -> ErrorType
parent
58a6c98c
Changes
4
Hide whitespace changes
Inline
Side-by-side
messages.go
View file @
9c527942
...
...
@@ -19,13 +19,13 @@ type Version string
// Action encodes the session type of an IRMA session (e.g., disclosing).
type
Action
string
// Error
Cod
e are session errors.
type
Error
Cod
e
string
// Error
Typ
e are session errors.
type
Error
Typ
e
string
// SessionError is a protocol error.
type
SessionError
struct
{
Err
error
Error
Cod
e
Error
Typ
e
*
ApiError
Info
string
Status
int
...
...
@@ -77,34 +77,34 @@ const (
// Protocol errors
const
(
// Protocol version not supported
ErrorProtocolVersionNotSupported
=
Error
Cod
e
(
"protocolVersionNotSupported"
)
ErrorProtocolVersionNotSupported
=
Error
Typ
e
(
"protocolVersionNotSupported"
)
// Error in HTTP communication
ErrorTransport
=
Error
Cod
e
(
"transport"
)
ErrorTransport
=
Error
Typ
e
(
"transport"
)
// Invalid client JWT in first IRMA message
ErrorInvalidJWT
=
Error
Cod
e
(
"invalidJwt"
)
ErrorInvalidJWT
=
Error
Typ
e
(
"invalidJwt"
)
// Unkown session type (not disclosing, signing, or issuing)
ErrorUnknownAction
=
Error
Cod
e
(
"unknownAction"
)
ErrorUnknownAction
=
Error
Typ
e
(
"unknownAction"
)
// Crypto error during calculation of our response (second IRMA message)
ErrorCrypto
=
Error
Cod
e
(
"crypto"
)
ErrorCrypto
=
Error
Typ
e
(
"crypto"
)
// Server rejected our response (second IRMA message)
ErrorRejected
=
Error
Cod
e
(
"rejected"
)
ErrorRejected
=
Error
Typ
e
(
"rejected"
)
// (De)serializing of a message failed
ErrorSerialization
=
Error
Cod
e
(
"serialization"
)
ErrorSerialization
=
Error
Typ
e
(
"serialization"
)
// Error in keyshare protocol
ErrorKeyshare
=
Error
Cod
e
(
"keyshare"
)
ErrorKeyshare
=
Error
Typ
e
(
"keyshare"
)
// Keyshare server has blocked us
ErrorKeyshareBlocked
=
Error
Cod
e
(
"keyshareBlocked"
)
ErrorKeyshareBlocked
=
Error
Typ
e
(
"keyshareBlocked"
)
// API server error
ErrorApi
=
Error
Cod
e
(
"api"
)
ErrorApi
=
Error
Typ
e
(
"api"
)
// Server returned unexpected or malformed response
ErrorServerResponse
=
Error
Cod
e
(
"serverResponse"
)
ErrorServerResponse
=
Error
Typ
e
(
"serverResponse"
)
)
func
(
e
*
SessionError
)
Error
()
string
{
if
e
.
Err
!=
nil
{
return
fmt
.
Sprintf
(
"%s: %s"
,
string
(
e
.
Error
Cod
e
),
e
.
Err
.
Error
())
return
fmt
.
Sprintf
(
"%s: %s"
,
string
(
e
.
Error
Typ
e
),
e
.
Err
.
Error
())
}
return
string
(
e
.
Error
Cod
e
)
return
string
(
e
.
Error
Typ
e
)
}
func
jwtDecode
(
jwt
string
,
body
interface
{})
(
string
,
error
)
{
...
...
session.go
View file @
9c527942
...
...
@@ -95,7 +95,7 @@ func NewSession(credManager *CredentialManager, qr *Qr, handler Handler) {
}
version
,
err
:=
calcVersion
(
qr
)
if
err
!=
nil
{
session
.
fail
(
&
SessionError
{
Error
Cod
e
:
ErrorProtocolVersionNotSupported
,
Err
:
err
})
session
.
fail
(
&
SessionError
{
Error
Typ
e
:
ErrorProtocolVersionNotSupported
,
Err
:
err
})
return
}
session
.
Version
=
Version
(
version
)
...
...
@@ -108,7 +108,7 @@ func NewSession(credManager *CredentialManager, qr *Qr, handler Handler) {
case
ActionUnknown
:
fallthrough
default
:
session
.
fail
(
&
SessionError
{
Error
Cod
e
:
ErrorUnknownAction
,
Info
:
string
(
session
.
Action
)})
session
.
fail
(
&
SessionError
{
Error
Typ
e
:
ErrorUnknownAction
,
Info
:
string
(
session
.
Action
)})
return
}
...
...
@@ -144,7 +144,7 @@ func (session *session) start() {
var
err
error
session
.
jwt
,
server
,
err
=
parseRequestorJwt
(
session
.
Action
,
session
.
info
.
Jwt
)
if
err
!=
nil
{
session
.
fail
(
&
SessionError
{
Error
Cod
e
:
ErrorInvalidJWT
,
Err
:
err
})
session
.
fail
(
&
SessionError
{
Error
Typ
e
:
ErrorInvalidJWT
,
Err
:
err
})
return
}
session
.
irmaSession
=
session
.
jwt
.
IrmaSession
()
...
...
@@ -203,7 +203,7 @@ func (session *session) do(proceed bool) {
message
,
err
=
session
.
credManager
.
IssueCommitments
(
session
.
irmaSession
.
(
*
IssuanceRequest
))
}
if
err
!=
nil
{
session
.
fail
(
&
SessionError
{
Error
Cod
e
:
ErrorCrypto
,
Err
:
err
})
session
.
fail
(
&
SessionError
{
Error
Typ
e
:
ErrorCrypto
,
Err
:
err
})
return
}
session
.
sendResponse
(
message
)
...
...
@@ -219,7 +219,7 @@ func (session *session) do(proceed bool) {
builders
,
err
=
session
.
credManager
.
IssuanceProofBuilders
(
session
.
irmaSession
.
(
*
IssuanceRequest
))
}
if
err
!=
nil
{
session
.
fail
(
&
SessionError
{
Error
Cod
e
:
ErrorCrypto
,
Err
:
err
})
session
.
fail
(
&
SessionError
{
Error
Typ
e
:
ErrorCrypto
,
Err
:
err
})
}
startKeyshareSession
(
session
.
credManager
,
session
.
irmaSession
,
builders
,
session
,
session
.
Handler
)
...
...
@@ -236,11 +236,11 @@ func (session *session) KeyshareCancelled() {
}
func
(
session
*
session
)
KeyshareBlocked
(
duration
int
)
{
session
.
fail
(
&
SessionError
{
Error
Cod
e
:
ErrorKeyshareBlocked
,
Info
:
strconv
.
Itoa
(
duration
)})
session
.
fail
(
&
SessionError
{
Error
Typ
e
:
ErrorKeyshareBlocked
,
Info
:
strconv
.
Itoa
(
duration
)})
}
func
(
session
*
session
)
KeyshareError
(
err
error
)
{
session
.
fail
(
&
SessionError
{
Error
Cod
e
:
ErrorKeyshare
,
Err
:
err
})
session
.
fail
(
&
SessionError
{
Error
Typ
e
:
ErrorKeyshare
,
Err
:
err
})
}
type
disclosureResponse
string
...
...
@@ -259,7 +259,7 @@ func (session *session) sendResponse(message interface{}) {
return
}
if
response
!=
"VALID"
{
session
.
fail
(
&
SessionError
{
Error
Cod
e
:
ErrorRejected
,
Info
:
string
(
response
)})
session
.
fail
(
&
SessionError
{
Error
Typ
e
:
ErrorRejected
,
Info
:
string
(
response
)})
return
}
log
,
_
=
session
.
createLogEntry
(
message
.
(
gabi
.
ProofList
))
// TODO err
...
...
@@ -270,7 +270,7 @@ func (session *session) sendResponse(message interface{}) {
return
}
if
err
=
session
.
credManager
.
ConstructCredentials
(
response
,
session
.
irmaSession
.
(
*
IssuanceRequest
));
err
!=
nil
{
session
.
fail
(
&
SessionError
{
Error
Cod
e
:
ErrorCrypto
,
Err
:
err
})
session
.
fail
(
&
SessionError
{
Error
Typ
e
:
ErrorCrypto
,
Err
:
err
})
return
}
log
,
_
=
session
.
createLogEntry
(
message
)
// TODO err
...
...
session_test.go
View file @
9c527942
...
...
@@ -35,7 +35,7 @@ func (th TestHandler) Failure(action Action, err *SessionError) {
}
func
(
th
TestHandler
)
UnsatisfiableRequest
(
action
Action
,
missing
AttributeDisjunctionList
)
{
th
.
c
<-
&
SessionError
{
Error
Cod
e
:
Error
Cod
e
(
"UnsatisfiableRequest"
),
Error
Typ
e
:
Error
Typ
e
(
"UnsatisfiableRequest"
),
}
}
func
(
th
TestHandler
)
AskVerificationPermission
(
request
DisclosureRequest
,
ServerName
string
,
callback
PermissionHandler
)
{
...
...
transport.go
View file @
9c527942
...
...
@@ -57,7 +57,7 @@ func (transport *HTTPTransport) request(url string, method string, result interf
}
else
{
marshaled
,
err
:=
json
.
Marshal
(
object
)
if
err
!=
nil
{
return
&
SessionError
{
Error
Cod
e
:
ErrorSerialization
,
Err
:
err
}
return
&
SessionError
{
Error
Typ
e
:
ErrorSerialization
,
Err
:
err
}
}
if
verbose
{
fmt
.
Printf
(
"%s %s: %s
\n
"
,
method
,
url
,
string
(
marshaled
))
...
...
@@ -72,7 +72,7 @@ func (transport *HTTPTransport) request(url string, method string, result interf
req
,
err
:=
http
.
NewRequest
(
method
,
transport
.
Server
+
url
,
reader
)
if
err
!=
nil
{
return
&
SessionError
{
Error
Cod
e
:
ErrorTransport
,
Err
:
err
}
return
&
SessionError
{
Error
Typ
e
:
ErrorTransport
,
Err
:
err
}
}
req
.
Header
.
Set
(
"User-Agent"
,
"irmago"
)
...
...
@@ -89,7 +89,7 @@ func (transport *HTTPTransport) request(url string, method string, result interf
res
,
err
:=
transport
.
client
.
Do
(
req
)
if
err
!=
nil
{
return
&
SessionError
{
Error
Cod
e
:
ErrorTransport
,
Err
:
err
}
return
&
SessionError
{
Error
Typ
e
:
ErrorTransport
,
Err
:
err
}
}
if
method
==
http
.
MethodDelete
{
...
...
@@ -98,18 +98,18 @@ func (transport *HTTPTransport) request(url string, method string, result interf
body
,
err
:=
ioutil
.
ReadAll
(
res
.
Body
)
if
err
!=
nil
{
return
&
SessionError
{
Error
Cod
e
:
ErrorServerResponse
,
Err
:
err
,
Status
:
res
.
StatusCode
}
return
&
SessionError
{
Error
Typ
e
:
ErrorServerResponse
,
Err
:
err
,
Status
:
res
.
StatusCode
}
}
if
res
.
StatusCode
!=
200
{
apierr
:=
&
ApiError
{}
json
.
Unmarshal
(
body
,
apierr
)
if
apierr
.
ErrorName
==
""
{
// Not an ApiErrorMessage
return
&
SessionError
{
Error
Cod
e
:
ErrorServerResponse
,
Status
:
res
.
StatusCode
}
return
&
SessionError
{
Error
Typ
e
:
ErrorServerResponse
,
Status
:
res
.
StatusCode
}
}
if
verbose
{
fmt
.
Printf
(
"ERROR: %+v
\n
"
,
apierr
)
}
return
&
SessionError
{
Error
Cod
e
:
ErrorApi
,
Status
:
res
.
StatusCode
,
ApiError
:
apierr
}
return
&
SessionError
{
Error
Typ
e
:
ErrorApi
,
Status
:
res
.
StatusCode
,
ApiError
:
apierr
}
}
if
verbose
{
...
...
@@ -120,7 +120,7 @@ func (transport *HTTPTransport) request(url string, method string, result interf
}
else
{
err
=
json
.
Unmarshal
(
body
,
result
)
if
err
!=
nil
{
return
&
SessionError
{
Error
Cod
e
:
ErrorServerResponse
,
Err
:
err
,
Status
:
res
.
StatusCode
}
return
&
SessionError
{
Error
Typ
e
:
ErrorServerResponse
,
Err
:
err
,
Status
:
res
.
StatusCode
}
}
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment