Skip to content
GitLab
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
808ddb58
Commit
808ddb58
authored
Aug 24, 2017
by
Sietse Ringers
Browse files
Make server and session request struct naming more consistent
parent
bd85535a
Changes
4
Hide whitespace changes
Inline
Side-by-side
protocol/protocol_test.go
View file @
808ddb58
...
...
@@ -21,8 +21,8 @@ func TestTimestamp(t *testing.T) {
require
.
Equal
(
t
,
time
.
Time
(
*
timestruct
.
Time
)
.
Unix
(),
int64
(
1500000000
))
}
func
TestServiceProvider
Request
(
t
*
testing
.
T
)
{
var
sp
reques
t
ServiceProvider
Reques
t
func
TestServiceProvider
(
t
*
testing
.
T
)
{
var
sp
jw
t
ServiceProvider
Jw
t
var
spjson
=
`{
"sprequest": {
...
...
@@ -39,16 +39,16 @@ func TestServiceProviderRequest(t *testing.T) {
}
}`
require
.
NoError
(
t
,
json
.
Unmarshal
([]
byte
(
spjson
),
&
sp
reques
t
))
require
.
NotNil
(
t
,
sp
reques
t
.
Request
.
Request
.
Content
)
require
.
NotEmpty
(
t
,
sp
reques
t
.
Request
.
Request
.
Content
)
require
.
NotNil
(
t
,
sp
reques
t
.
Request
.
Request
.
Content
[
0
])
require
.
NotEmpty
(
t
,
sp
reques
t
.
Request
.
Request
.
Content
[
0
])
require
.
NotNil
(
t
,
sp
reques
t
.
Request
.
Request
.
Content
[
0
]
.
Attributes
)
require
.
NotEmpty
(
t
,
sp
reques
t
.
Request
.
Request
.
Content
[
0
]
.
Attributes
)
require
.
Equal
(
t
,
sp
reques
t
.
Request
.
Request
.
Content
[
0
]
.
Attributes
[
0
]
.
Name
(),
"studentID"
)
require
.
NoError
(
t
,
json
.
Unmarshal
([]
byte
(
spjson
),
&
sp
jw
t
))
require
.
NotNil
(
t
,
sp
jw
t
.
Request
.
Request
.
Content
)
require
.
NotEmpty
(
t
,
sp
jw
t
.
Request
.
Request
.
Content
)
require
.
NotNil
(
t
,
sp
jw
t
.
Request
.
Request
.
Content
[
0
])
require
.
NotEmpty
(
t
,
sp
jw
t
.
Request
.
Request
.
Content
[
0
])
require
.
NotNil
(
t
,
sp
jw
t
.
Request
.
Request
.
Content
[
0
]
.
Attributes
)
require
.
NotEmpty
(
t
,
sp
jw
t
.
Request
.
Request
.
Content
[
0
]
.
Attributes
)
require
.
Equal
(
t
,
sp
jw
t
.
Request
.
Request
.
Content
[
0
]
.
Attributes
[
0
]
.
Name
(),
"studentID"
)
require
.
NotNil
(
t
,
sp
reques
t
.
Request
.
Request
.
Content
.
Find
(
irmago
.
NewAttributeTypeIdentifier
(
"irma-demo.RU.studentCard.studentID"
)))
require
.
NotNil
(
t
,
sp
jw
t
.
Request
.
Request
.
Content
.
Find
(
irmago
.
NewAttributeTypeIdentifier
(
"irma-demo.RU.studentCard.studentID"
)))
}
func
TestTransport
(
t
*
testing
.
T
)
{
...
...
protocol/requests.go
View file @
808ddb58
...
...
@@ -28,6 +28,12 @@ type SignatureRequest struct {
MessageType
string
`json:"messageType"`
}
type
IssuanceRequest
struct
{
SessionRequest
Credentials
[]
CredentialRequest
`json:"credentials"`
Disclose
irmago
.
AttributeDisjunctionList
`json:"disclose"`
}
type
CredentialRequest
struct
{
Validity
*
Timestamp
KeyCounter
int
...
...
@@ -35,55 +41,51 @@ type CredentialRequest struct {
Attributes
map
[
string
]
string
}
type
Server
Reques
t
struct
{
type
Server
Jw
t
struct
{
ServerName
string
`json:"iss"`
IssuedAt
*
Timestamp
`json:"iat"`
Type
string
`json:"sub"`
}
type
IssuanceRequest
struct
{
SessionRequest
Credentials
[]
CredentialRequest
`json:"credentials"`
Disclose
irmago
.
AttributeDisjunctionList
`json:"disclose"`
type
ServiceProviderRequest
struct
{
Request
DisclosureRequest
`json:"request"`
}
type
DisclosureRequestContainer
struct
{
Request
Disclos
ureRequest
`json:"request"`
type
SignatureServerRequest
struct
{
Request
Signat
ureRequest
`json:"request"`
}
type
ServiceProviderRequest
struct
{
ServerRequest
Request
DisclosureRequestContainer
`json:"sprequest"`
type
IdentityProviderRequest
struct
{
Request
IssuanceRequest
`json:"request"`
}
type
ServiceProviderJwt
struct
{
ServerJwt
Request
ServiceProviderRequest
`json:"sprequest"`
}
type
SignatureServerJwt
struct
{
ServerJwt
Request
SignatureServerRequest
`json:"sigrequest"`
}
type
IdentityProviderJwt
struct
{
ServerJwt
Request
IdentityProviderRequest
`json:"iprequest"`
}
func
NewServiceProvider
Reques
t
(
servername
string
,
dr
DisclosureRequest
)
*
ServiceProvider
Reques
t
{
func
NewServiceProvider
Jw
t
(
servername
string
,
dr
DisclosureRequest
)
*
ServiceProvider
Jw
t
{
now
:=
Timestamp
(
time
.
Now
())
return
&
ServiceProvider
Reques
t
{
Server
Reques
t
:
Server
Reques
t
{
return
&
ServiceProvider
Jw
t
{
Server
Jw
t
:
Server
Jw
t
{
ServerName
:
servername
,
IssuedAt
:
&
now
,
Type
:
"verification_request"
,
},
Request
:
DisclosureRequestContainer
{
Request
:
dr
,
},
Request
:
ServiceProviderRequest
{
Request
:
dr
},
}
}
type
SignatureServerRequest
struct
{
ServerRequest
Request
struct
{
Request
SignatureRequest
`json:"request"`
}
`json:"sigrequest"`
}
type
IdentityProviderRequest
struct
{
ServerRequest
Request
struct
{
Request
IssuanceRequest
`json:"request"`
}
`json:"iprequest"`
}
func
(
dr
*
DisclosureRequest
)
GetContext
()
*
big
.
Int
{
return
dr
.
Context
}
...
...
@@ -110,14 +112,14 @@ func (sr *SignatureRequest) GetNonce() *big.Int {
return
new
(
big
.
Int
)
.
SetBytes
(
asn1hash
[
:
])
}
func
(
spr
*
ServiceProvider
Reques
t
)
DisjunctionList
()
irmago
.
AttributeDisjunctionList
{
func
(
spr
*
ServiceProvider
Jw
t
)
DisjunctionList
()
irmago
.
AttributeDisjunctionList
{
return
spr
.
Request
.
Request
.
Content
}
func
(
ssr
*
SignatureServer
Reques
t
)
DisjunctionList
()
irmago
.
AttributeDisjunctionList
{
func
(
ssr
*
SignatureServer
Jw
t
)
DisjunctionList
()
irmago
.
AttributeDisjunctionList
{
return
ssr
.
Request
.
Request
.
Content
}
func
(
ipr
*
IdentityProvider
Reques
t
)
DisjunctionList
()
irmago
.
AttributeDisjunctionList
{
func
(
ipr
*
IdentityProvider
Jw
t
)
DisjunctionList
()
irmago
.
AttributeDisjunctionList
{
return
ipr
.
Request
.
Request
.
Disclose
}
protocol/session.go
View file @
808ddb58
...
...
@@ -33,9 +33,9 @@ type Session struct {
Handler
Handler
request
irmago
.
DisjunctionListContainer
spRequest
*
ServiceProvider
Reques
t
ipRequest
*
IdentityProvider
Reques
t
ssRequest
*
SignatureServer
Reques
t
spRequest
*
ServiceProvider
Jw
t
ipRequest
*
IdentityProvider
Jw
t
ssRequest
*
SignatureServer
Jw
t
transport
*
HTTPTransport
nonce
*
big
.
Int
...
...
@@ -106,13 +106,13 @@ func (session *Session) start() {
switch
session
.
Action
{
case
ActionDisclosing
:
session
.
spRequest
=
&
ServiceProvider
Reques
t
{}
session
.
spRequest
=
&
ServiceProvider
Jw
t
{}
session
.
request
=
session
.
spRequest
case
ActionSigning
:
session
.
ssRequest
=
&
SignatureServer
Reques
t
{}
session
.
ssRequest
=
&
SignatureServer
Jw
t
{}
session
.
request
=
session
.
ssRequest
case
ActionIssuing
:
session
.
ipRequest
=
&
IdentityProvider
Reques
t
{}
session
.
ipRequest
=
&
IdentityProvider
Jw
t
{}
session
.
request
=
session
.
ipRequest
default
:
panic
(
"Invalid session type"
)
// does not happen, session.Action has been checked earlier
...
...
@@ -120,7 +120,7 @@ func (session *Session) start() {
if
session
.
Action
==
ActionIssuing
{
// Store which public keys the server will use
for
_
,
credreq
:=
range
session
.
request
.
(
*
IdentityProvider
Reques
t
)
.
Request
.
Request
.
Credentials
{
for
_
,
credreq
:=
range
session
.
request
.
(
*
IdentityProvider
Jw
t
)
.
Request
.
Request
.
Credentials
{
credreq
.
KeyCounter
=
info
.
Keys
[
credreq
.
Credential
.
IssuerIdentifier
()]
}
}
...
...
protocol/session_test.go
View file @
808ddb58
...
...
@@ -48,7 +48,7 @@ func TestSession(t *testing.T) {
url
:=
"https://demo.irmacard.org/tomcat/irma_api_server/api/v2"
name
:=
"testsp"
spRequest
:=
NewServiceProvider
Reques
t
(
name
,
DisclosureRequest
{
spRequest
:=
NewServiceProvider
Jw
t
(
name
,
DisclosureRequest
{
Content
:
irmago
.
AttributeDisjunctionList
([]
*
irmago
.
AttributeDisjunction
{
&
irmago
.
AttributeDisjunction
{
Label
:
"foo"
,
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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