Commit 29b7b3a2 authored by Sietse Ringers's avatar Sietse Ringers

feat: disclosure of revocation aware credentials is now backwards compatible...

feat: disclosure of revocation aware credentials is now backwards compatible with pre-revocation verifiers
parent 42788b20
......@@ -48,14 +48,19 @@ type AttributeList struct {
attrMap map[AttributeTypeIdentifier]TranslatedString
info *CredentialInfo
h string
RevocationIndex int `json:"-"`
}
// NewAttributeListFromInts initializes a new AttributeList from a list of bigints.
func NewAttributeListFromInts(ints []*big.Int, conf *Configuration) *AttributeList {
return &AttributeList{
al := &AttributeList{
Ints: ints,
MetadataAttribute: MetadataFromInt(ints[0], conf),
}
if al.CredentialType().RevocationSupported() {
al.RevocationIndex = al.CredentialType().RevocationIndex
}
return al
}
func (al *AttributeList) Info() *CredentialInfo {
......
......@@ -69,6 +69,7 @@ type CredentialType struct {
RevocationServers []string `xml:"RevocationServers>RevocationServer"`
RevocationUpdateCount uint64
RevocationUpdateSpeed uint64
RevocationIndex int `xml:"-"`
XMLVersion int `xml:"version,attr"`
XMLName xml.Name `xml:"IssueSpecification"`
IssueURL TranslatedString `xml:"IssueURL"`
......@@ -86,6 +87,8 @@ type AttributeType struct {
Index int `xml:"-"`
DisplayIndex *int `xml:"displayIndex,attr" json:",omitempty"`
RevocationAttribute bool `xml:"revocation,attr" json:",omitempty"`
// Taken from containing CredentialType
CredentialTypeID string `xml:"-"`
IssuerID string `xml:"-"`
......
......@@ -81,7 +81,8 @@ func (session *session) issuanceHandleRevocation(
cred *irma.CredentialRequest, attributes *irma.AttributeList, sk *gabi.PrivateKey,
) (*revocation.Witness, error) {
id := cred.CredentialTypeID
if !session.conf.IrmaConfiguration.CredentialTypes[id].RevocationSupported() {
credtyp := session.conf.IrmaConfiguration.CredentialTypes[id]
if !credtyp.RevocationSupported() || !session.request.Base().RevocationSupported() {
return nil, nil
}
......@@ -118,6 +119,8 @@ func (session *session) issuanceHandleRevocation(
}
witness.SignedAccumulator = sig // attach previously selected reocation record to the witness for the client
attributes.Ints[credtyp.RevocationIndex+1] = witness.E
issrecord := &irma.IssuanceRecord{
CredType: id,
PKCounter: &sk.Counter,
......@@ -208,11 +211,15 @@ func (session *session) getProofP(commitments *irma.IssueCommitmentMessage, sche
// Other
func (session *session) chooseProtocolVersion(minClient, maxClient *irma.ProtocolVersion) (*irma.ProtocolVersion, error) {
// Set our minimum supported version to 2.5 if condiscon compatibility is required
// Set minimum supported version to 2.5 if condiscon compatibility is required
minServer := minProtocolVersion
if !session.legacyCompatible {
minServer = &irma.ProtocolVersion{2, 5}
}
// Set minimum to 2.6 if nonrevocation is required
if len(session.request.Base().Revocation) > 0 {
minServer = &irma.ProtocolVersion{2, 6}
}
if minClient.AboveVersion(maxProtocolVersion) || maxClient.BelowVersion(minServer) || maxClient.BelowVersion(minClient) {
return nil, server.LogWarning(errors.Errorf("Protocol version negotiation failed, min=%s max=%s minServer=%s maxServer=%s", minClient.String(), maxClient.String(), minServer.String(), maxProtocolVersion.String()))
......
......@@ -164,7 +164,7 @@ func TestRevocationAll(t *testing.T) {
client, _ := parseStorage(t)
defer test.ClearTestStorage(t)
j := `{"@context":"https://irma.app/ld/signature/v2","signature":[{"c":"e2nKrqit2VU+dSMrgZeUzVTuf8NQ0MPWrjCSW9ZmJYk=","A":"b2/DBvaqnmd346EEvSKu8zDqSDukEHutZdE14HnmljLsVy8DI93gjH0Udsc+p4Sj2AO8x6vjtrXSVptncMsE4tz+7m8euDfH6tdggAd07p5wRxXJCOg/EQpC750QJU3Z30rNkjDv5ajA4stLaKtGs92TFJ0S676PlbYfUHS0QHg=","e_response":"Sfwy53PSeEmBiJJxMU3qqm/z+8klQoRhHYhRqs6gJeGlUUMeQFxzdNC/P9PmzK8wOvpGwTjw7MgY","v_response":"Dj36QVCjaZACzUGckLJWNSJibCGN6xtgt5gDrFQw2yuQmxNm+SFpfK9Pe/REozkHOV5raqynEZG+CX7zGmjEp2M8AoKdgoDc3hsDpyUfOmRVcszJikljWB+gd1HCiJYDruzif1Ar2XElP1Z0ehHjZl504wVabVR3VfuRawRel/jvuhHbnxEgmRrj7AseQdwgUU9t/Qnq1538Uaa0crjJbO8YpEE6zcs/UP1uRZJ93rBhlMo9ui2idPCtaiUYlELAsLEHK2Kjw19F2t2ffa2Iv0NRR5MlDXNjFOLJEbLovrylSs/kihC9eOzF+JopUh6qtcZ7NDgaVSDN2giZA8J+","a_responses":{"0":"JRsR9U7nyK6vjEJ1IbIc3tObCXVksaoqDbmLkTKXLMgysTw3CSQLWWiPLu6mK2/czfY2JtT/c09jhxsvWt4lqVs72WoPKpNhVMQ="},"nonrev_response":"B0M4FYrv3jergGlsiFQqXJ7VCfdM8gJG2q5bydFfs9Raw8FCuHDKjgFWaAn+OF7T7gdZ5tlBs6CgT6HdhLIucadOSbbQE+J87Q==","nonrev_proof":{"C_r":"G0A1Tz6jB1mEJJJp5/4Vk8B4JFWHztqspKa8Mn7IkzaJPBi6xKqIcvEj6JupoZOTgqrIOoZLKE2FzOt9zmgqWyEy+mZPchAEXDka5LB02o2Yals+zu4tDoINgOIjiSOXpByEJogGTkTUJxwv4Ug494nBf669QpeUKXiqFSD4hog=","C_u":"FknWq3GdaetxuMiC+hcgf/tb9MRy9lYR+ha4RwHdOOtzDwkGio4vSDV9WB4KcrRrdMfwMQ82doiAKlAKhMd4KCIx4g2S3lC8zuODx+SbgtbJKA+6UZ8n1jRqYFvGH9+BZWQbegVu8QZlbJUUsFciEszHjwkv0ac0QmkZajTybjU=","responses":{"beta":"ATdypWmAGl9U/JHtBupMcukq6J4641TDkUkGnLdphd/t5cVp6suEC7MXAoi+a+gZxKPuRyCqz/MB6rURmRR3l4oCuEbGVEcGqPxbCEWGx7vA3DTm1AVjohNEbLRu/xHGzW8kNEt/fzf0reU65eYneoEvFIYLxOd46hsK0ppfZn8hU5+umn8NiyMRr7GfH8/qmKrv7Ul62qVlvXJDKNhVbwBQToohT2xvPikLRVI4ZWWKuoUHqatenRzBfZyhyv14TG7ybVDA4X3+","delta":"ASQwxh5OZbSDunGm5HPVW8494idgYikMyC8400NT1Z+IIEWO3u8lS6rWO7rNF9SazLV9luP0Mw2qKmjP2eMHmdN5W9v5LnPAWHut0iAAnQhAymyYUFbQtka1Q2jAx3MnET9BqgE0AUZ3RmDmysv4BckkY8pyvY/rYD/rlG5KgtkZap5tniadWQu8w7ulsMJDbjc7YudlOw1hXaY64TZP34vX6EHSaa3vYy6+sA6RYD0OeshO6wQO9i87+Z1QIEiZBU2aeNdlEknK","epsilon":"Gmw3aqtwbEZrJ/ej9YdD1IE08DG8KjrIP7nmYZKVfwTexAb3mqrlrue7rXR3gfMeufIUmTZeIAkKTw4UcUBKaposc3NaOo8e+kmK0kZ9biLMC53bHZ36KZWrT5h20hwtcmMq4FG8NDh/o8lb2Ibbv8mf71opJyyVUUoEqIatZh1pVYvLVdi9Vxwc1P7tHrJQ8e9ppDqVHkVFYGNfVNGW3RXLKHr/tMsLbUIP9DjVY7M=","zeta":"BKdrESBubE/eKZ1m0eVY5VT5tYrbKA6ArB1o68PV1sMu8IhhOw745zv5KbIH56k/5+JJXv5Hyx3lY3qgI1w+h+w+/G+So7EzhXw4pqFkZy29Seq0xQM/Su6FMMC97auV3hRYX2VAaf+Qc2mb02cDMbKeX92p6+R6wj0KN/1Wel1IHb1GgMOvIURHddROJCpQI23MEU+uxJOb8TZQY/ICM2QFax/rd7FIawdGXnwYXY4="},"sacc":{"data":"omNNc2dYxaRiTnVYgFrKyTR/bZDCSwK1Kg9nNIdIkxX+/PkQAK6FaOT9YFAcEcG+rYqhdfVRWohl2KeBV8Fa1o8AfZ/MbvXcPiTh91p6PNX5OVBFHIGC5GDkLo9MMot6rJ/UZrtmhrhGHzX8c5Gf7xa01XB5MCZGjLKq6AbxTabyWedkhZpdnDN5Y5nSZUluZGV4AWRUaW1lGl4guwxpRXZlbnRIYXNoWCISIOeNpEe8g6DBBYWG1BJ4uA2tJGSt9etirxuxm+/R5W27Y1NpZ1hHMEUCIBNGB6X96tm/zyF9IaHiGt4WqISi+WK0DEEaq0iIEbRgAiEAxg/WLqsO8Aeis/B2embcwy5dBNNShLcMC2CKzIz9w6U=","pk":2}},"a_disclosed":{"1":"AwAKMwAaAAIIuOcAMwFiUVy4Y5PtnTFG","2":"ZHJybnJkaGpx"}}],"indices":[[{"cred":0,"attr":2}]],"nonce":"aXxcuAXX4c0qlD7rsgfsCw==","context":"AQ==","message":"message","timestamp":{"Time":1579203344,"ServerUrl":"https://keyshare.privacybydesign.foundation/atumd","Sig":{"Alg":"ed25519","Data":"6+RHBJ8SUjQu8UNVvVRntUnW7dPCWTbv5N5lC9lGsbcKj4NYMTiyKkD8Vp3c1170ZcWVDH4yIuabIaOJNDAFAw==","PublicKey":"MKdXxJxEWPRIwNP7SuvP0J/M/NV51VZvqCyO+7eDwJ8="}}}`
j := `{"@context":"https://irma.app/ld/signature/v2","signature":[{"c":"It0yT9OjFotXN0tUMZKaEo43WOugqv6GVlG0/WP03jE=","A":"WkB+1nj1vT5kdq7Q9hjoNlndvGtKoaLB/Ugs0rvjqMYBhCgXq19h/5ThesxLysVH15yPbVh+rlaZRYWfqKRvXs1z4aBhcHi+1hBB1JXENAnBpdfEQvZtzfz5I1fOIqEFkY+5kU6t7wkGj4QM7OhjHsquihoCnTT/vp6VIpYZnfI=","e_response":"wL+gwLa/myLy8HdilGKor4/Kfake1PvY0ZYfZyY4LZiO41hLC17MD6vYSTrsblkzuWO6ai3WsCIW","v_response":"DI3bQp04GNAIF7ylUqElTTwh4aLuytQOzFYVSGwtzlX8YGxsUZzOaLo0iCc2MKtqCiYBJp1LsQNW9f1lKub31ML2Xu53wYw99tGuqngl1wJaqHI6rQCSLlxTgyXzj0CJ6SXNkWEIBFpPcauMLnRG4eD20WtQ8oyFHQjfRrm0hZKMNlqb8CQOdDZNL8POnUHlap9FhFrM7IVCjUuOf8XHtgXo5PaFh7Gzj1dkyZKdofvM51hVvLi4T+qf4b9F5XZV4b1fVmmU70Sm/BA3eaonXv67vk5XBb8XW7cbLGtUqtg8tO/T5Cpdnw/fGGn0g61CJ11RmuEqbFa0uwp/rhIs","a_responses":{"0":"dBDhQmFfrCLFwIUL92UudSsk4TdtCj/bfpl6wBNjV4fD1upB8ViXSn8mQMMCm7SoOM8/9qf/aWw0vzuv4JAWe03N6gqdMTlNbtI=","3":"ZqbH95Dc56+9LzG9AJi7jZX1rEzv5AKtbrom+DVuF6k59dAahz77huVos/SYSSSGsQl6yh8oUinaGhyel9hgPYZXOREA8OfG"},"a_disclosed":{"1":"AwAKOQAaAAIIuOcAMwFiUVy4Y5PtnTFG","2":"ZHJybnJkaGpx"},"nonrev_proof":{"C_r":"bi6ByaP46KtZaJEril4vMky1sbQr3/tBIo/yra1KTNV7vWIPc7IEusYLaTWRIfgdASYFgZg7MWgPPqcvzzrx8M0tjUEEayQeeWKwuKm0pL3lHOaZY+IuCzQXdh2lEZxGPlTM0gFlWE7JOywvt4rC6b8CThVgropZBgc8PJBPjWs=","C_u":"udtOV/dALqU2ab5GRzy7Ps6F10g6XyU7aj0ij4D7G55UQu/9Dxy562VLcmJQWGVhW63EuyHYKpEWEcQsi81UJV+eYXI7obiKJ0UJE8L5dLiEjR5+Nbwm+RsyJ+75daOpkerf/gpyECroiTsYtIl6u5Yz5uP9DgfyzKqjpSYzSY4=","responses":{"alpha":"ZqbH95Dc56+9LzG9AJi7jZX1rEzv5AKtbrom+DVuF6k59dAahz77huVos/SYSSSGsQl6yh8oUinaGhyel9hgPYZXOREA8OfG","beta":"68eyUujDJDUv8P3ooM2yMLuHqTcAJERyVW7bQGF4MCfKRF7iIQz1bNr4bXWWw9QPBcKbryQjAQpUzPfIsWd0c9sjXvE6AdRj9KHWTo6WPbGB59vemK2hHf/WI88mysy+/zskEj1TZVJSBjqaGXcRLvV5HsAvgI3IlYAfdB2F+EE6ZSLuH3nkYVhFOlw15lI0mU3FnKwaeT9Tm+SbW2Zzy1VoFdaK+wkxACmYD/6hFhFH5rP7SvRMZ2aqjDa1I0I8GUxTnv7HZdo=","delta":"AQgE6fY7pFpC8iRrI9PhmfBNf0dQAYWNf5Jlm3Q7QhAm4BA9v7EzM0c8nUCcLTA39yWKw3ZOaLnXnRNmdRzRDPauWi9brvHmgaMVdABhoE3d6r84tLg1GHgnPPWh30W6C5PZAsPy+65CUQzcdZZo138agebi2OiYGv5t07E7KaGwHR/SuQAOQl0oDZ3p74Uc/tY7/Ocz5DHHoG7hYEmoa7jaNBFarlDItLs4OoLvMpOijQNelu2f3qn8MVEfwb/B5ucpWWDzwUka","epsilon":"dJ/RNAi6XLKUupglYfbnYEXGBcblVLwjcGhh/TTGFIdnBrENirg+33XAq8+Hl1DPYEA6PAj7ictCO9rq9Zf8HIohTcqwOx0aV7m9nXZgilQuu+v3WrVhuk06HnVPNHAP7C7VdoWkg6J6J4EXpJj1bb/uZx/gWmWhneUIalfZP44K8YrzGnJ6eSfu3xjk0XYbAlQDrIRC2cZ+pq/LpPKNDZtSBSyTJOlPTIvkD2zljA==","zeta":"K7zPNUe2rNH2mFhGUA0o5JH/cbb88/URksO0Bq2ASUiqIs3t4UaNqcEDizbkoC+l2OJ2LzvObr5z3qcI/qhXAmiLWg/ifExRLHF9jGIjwQbjptftjlF3hGmhhDsHAsP8WGfACFNfvwSdsMPgCGIAZQDSWhgXyoIJzafS9xZx82/LwwNYX8E27FeKZzlh62/ZTC/3sU/mLcsL1TIk4ysmXGMLLDJUCbXN4EIWE14vsnA="},"sacc":{"data":"omNNc2dYxaRiTnVYgCmYtZDXoWoh9Do70RmLdeiIAWimmG4pJAMK/3kHKqJy+U8ePnzh/5qKo8JTj++RUOkPN2vBwqRMRrNsn4rd4Aa0xHmx17/d2YnjhEWwk2M4kPvIoNoM3202fLQRpwPh2vofp7JwYEaz+/DkmK3Gz8f/kv5fLqP/Q5X5Be2jZFiKZUluZGV4AGRUaW1lGl5X3AtpRXZlbnRIYXNoWCISIMiMqOJlUpd1DIx4UEkjTRF0he/yjjM3TQ6I8x7ShWF7Y1NpZ1hHMEUCIAqH0UaPkqeEp6dmEk1sdf/SOVYUjJvU2Hb05LlBJ5mrAiEA0jDFc5fQhOl8rgcJdSlDCY169UksNQQKgtPKNoWhX0k=","pk":2}}}],"indices":[[{"cred":0,"attr":2}]],"nonce":"OkdD8pg642lA3m7uCjW7Xw==","context":"AQ==","message":"message","timestamp":{"Time":1582816270,"ServerUrl":"https://keyshare.privacybydesign.foundation/atumd/","Sig":{"Alg":"ed25519","Data":"8E/Nj/acMLe8Xbn5IKWAoivS9xVRf7oPr0HmxmhGQ8TqurjIWyEuMdSTRZNORKjDATLjDrTHA6bL5UK2roxCCQ==","PublicKey":"MKdXxJxEWPRIwNP7SuvP0J/M/NV51VZvqCyO+7eDwJ8="}}}`
sig := &irma.SignedMessage{}
require.NoError(t, json.Unmarshal([]byte(j), sig))
......
......@@ -27,7 +27,7 @@ var (
)
func init() {
logger.Level = logrus.TraceLevel
logger.Level = logrus.FatalLevel
logger.Formatter = &prefixed.TextFormatter{
ForceFormatting: true,
ForceColors: true,
......@@ -110,9 +110,8 @@ var JwtServerConfiguration = &requestorserver.Configuration{
SchemesPath: filepath.Join(testdata, "irma_configuration"),
IssuerPrivateKeysPath: filepath.Join(testdata, "privatekeys"),
RevocationSettings: irma.RevocationSettings{
irma.NewCredentialTypeIdentifier("irma-demo.MijnOverheid.root"): {
RevocationServerURL: "http://localhost:48683/",
},
revocationTestCred: {RevocationServerURL: "http://localhost:48683/"},
revKeyshareTestCred: {RevocationServerURL: "http://localhost:48683/"},
},
JwtPrivateKeyFile: filepath.Join(testdata, "jwtkeys", "sk.pem"),
StaticSessions: map[string]interface{}{
......
......@@ -561,10 +561,6 @@ func (client *Client) credCandidates(base *irma.BaseRequest, con irma.AttributeC
if err != nil {
return nil, err
}
if !base.SupportsRevocation() && cred.NonRevocationWitness != nil {
// can't disclose from revocation-aware credentials to not-revocation-aware requestors
continue
}
if base.RequestsRevocation(credtype) && cred.NonRevocationWitness == nil {
// can't disclose from non-revocation aware credentials if nonrevocation proof is required
continue
......@@ -919,7 +915,7 @@ func (client *Client) ConstructCredentials(msg []*gabi.IssueSignatureMessage, re
if err != nil {
return err
}
cred, err := credbuilder.ConstructCredential(sig, attrs.Ints)
cred, err := credbuilder.ConstructCredential(sig, attrs.Ints, attrs.RevocationIndex+2)
if err != nil {
return err
}
......
......@@ -63,7 +63,7 @@ func verifyClientIsUnmarshaled(t *testing.T, client *Client) {
pk, err := cred.PublicKey()
require.NoError(t, err)
require.True(t,
cred.Signature.Verify(pk, cred.Attributes, nil),
cred.Signature.Verify(pk, cred.Attributes),
"Credential should be valid",
)
}
......@@ -77,7 +77,7 @@ func verifyCredentials(t *testing.T, client *Client) {
pk, err = cred.PublicKey()
require.NoError(t, err)
require.True(t,
cred.Credential.Signature.Verify(pk, cred.Attributes, nil),
cred.Credential.Signature.Verify(pk, cred.Attributes),
"Credential %s-%d was invalid", credtype.String(), index,
)
require.Equal(t, cred.Attributes[0], client.secretkey.Key,
......
......@@ -939,7 +939,7 @@ func (conf *Configuration) checkCredentialTypes(session SessionRequest, missing
// Check if all attributes from the configuration are present, unless they are marked as optional
for _, attrtype := range typ.AttributeTypes {
_, present := credreq.Attributes[attrtype.ID]
if !present && !attrtype.IsOptional() {
if !present && !attrtype.RevocationAttribute && !attrtype.IsOptional() {
requiredMissing.AttributeTypes[attrtype.GetAttributeTypeIdentifier()] = struct{}{}
}
}
......@@ -1408,12 +1408,15 @@ func (conf *Configuration) validateCredentialType(manager *SchemeManager, issuer
func (conf *Configuration) validateAttributes(cred *CredentialType) error {
name := cred.Identifier().String()
indices := make(map[int]struct{})
revocation := false
count := len(cred.AttributeTypes)
if count == 0 {
return errors.Errorf("Credenial type %s has no attributes", name)
}
for i, attr := range cred.AttributeTypes {
conf.validateTranslations(fmt.Sprintf("Attribute %s of credential type %s", attr.ID, cred.Identifier().String()), attr)
if !attr.RevocationAttribute {
conf.validateTranslations(fmt.Sprintf("Attribute %s of credential type %s", attr.ID, cred.Identifier().String()), attr)
}
index := i
if attr.DisplayIndex != nil {
index = *attr.DisplayIndex
......@@ -1422,10 +1425,20 @@ func (conf *Configuration) validateAttributes(cred *CredentialType) error {
conf.Warnings = append(conf.Warnings, fmt.Sprintf("Credential type %s has invalid attribute displayIndex at attribute %d", name, i))
}
indices[index] = struct{}{}
if attr.RevocationAttribute {
cred.RevocationIndex = i
revocation = true
}
}
if len(indices) != count {
conf.Warnings = append(conf.Warnings, fmt.Sprintf("Credential type %s has invalid attribute ordering, check the displayIndex tags", name))
}
if revocation && !cred.RevocationSupported() {
return errors.New("revocation attribute found but no RevocationServers configured")
}
if !revocation && cred.RevocationSupported() {
return errors.New("RevocationServers configured but no revocation attribute found")
}
return nil
}
......
......@@ -262,7 +262,7 @@ func (b *BaseRequest) RequestsRevocation(id CredentialTypeIdentifier) bool {
return len(b.Revocation) > 0 && b.Revocation[id] != nil && len(b.Revocation[id].Updates) > 0
}
func (b *BaseRequest) SupportsRevocation() bool {
func (b *BaseRequest) RevocationSupported() bool {
return !b.ProtocolVersion.Below(2, 6)
}
......@@ -569,9 +569,13 @@ func (cr *CredentialRequest) Validate(conf *Configuration) error {
}
for _, attrtype := range credtype.AttributeTypes {
if _, present := cr.Attributes[attrtype.ID]; !present && attrtype.Optional != "true" {
_, present := cr.Attributes[attrtype.ID]
if !present && !attrtype.RevocationAttribute && attrtype.Optional != "true" {
return errors.New("Required attribute not present in credential request")
}
if present && attrtype.RevocationAttribute {
return errors.New("revocation attribute cannot be set in credential request")
}
}
return nil
......
......@@ -31,6 +31,7 @@
<nl>Uw BSN-nummer</nl>
</Description>
</Attribute>
<Attribute id="revocation" revocation="true" />
</Attributes>
</IssueSpecification>
1eeaa044eb9bc9177986762311d169016dfbe782688f668ddf4cfd804b4beeba irma-demo/MijnOverheid/Issues/fullName/description.xml
61a1fc7f161e43f8fc5b0c6ac2997cfe6bc0da7d27009b9914a04dca79ec6718 irma-demo/MijnOverheid/Issues/fullName/logo.png
e732e3ffc6735631ca83f258d92cfbe71103f726385e7fa174588c154b887f87 irma-demo/MijnOverheid/Issues/root/description.xml
a8579d876b10c1cd972b42d72b548db3791e622f024cb52a8c64dab76e12c15b irma-demo/MijnOverheid/Issues/root/description.xml
61a1fc7f161e43f8fc5b0c6ac2997cfe6bc0da7d27009b9914a04dca79ec6718 irma-demo/MijnOverheid/Issues/root/logo.png
e48bae60a29b31743c46db52552683cd5ef14a181ebd20c360b5fa7dc732a876 irma-demo/MijnOverheid/Issues/singleton/description.xml
61a1fc7f161e43f8fc5b0c6ac2997cfe6bc0da7d27009b9914a04dca79ec6718 irma-demo/MijnOverheid/Issues/singleton/logo.png
......@@ -17,4 +17,4 @@ dbd465d9cdb1c64206443e425fb1f8950605aee35e77f1e8bcf6cca8c34b8b65 irma-demo/RU/Pu
a4f6cc35cace3e9dc9388b29a8756ea83e5884f799d75cadd4efa60e1a12d855 irma-demo/RU/description.xml
35697bb7ffb19518a0ac6739ac3eef6b0272cd322c4619b075328b88c06ac43d irma-demo/RU/logo.png
f576663c26c8d980edc03e81f60df2c8328980d1c94490950d6f32e0b7ee0d78 irma-demo/description.xml
a3f89697ef229190b5ae7c41d49b28a6dc76546aa0a8d35ba03e24c84d6a9a45 irma-demo/timestamp
ff4939f50c835e57d62b613e262be1081ac8099c401158d70e2d82730b904d8f irma-demo/timestamp
b32d0751b4246ef2272fb7181cd69c00fa564c56d9ef2cd95820be48b13eaee0 test/description.xml
64b84af1784434e9cab367a208f8b750fffd8505c76084a296ec5eaaad0c47f2 test/kss-0.pem
2e7f1e8eb148623fbf67087ab8b95be8b4fe9ad77cd725a2a9434037f6b93fb3 test/test/Issues/email/description.xml
65dc6e5112062122b9376d5177e253137b7afd6e61058f58db39748cbcab65a5 test/test/Issues/email/description.xml
61a1fc7f161e43f8fc5b0c6ac2997cfe6bc0da7d27009b9914a04dca79ec6718 test/test/Issues/email/logo.png
c5262df4723863f87bc263eb0f50e8c85053dce93e52afbc2cf34035b30d2df9 test/test/Issues/mijnirma/description.xml
61a1fc7f161e43f8fc5b0c6ac2997cfe6bc0da7d27009b9914a04dca79ec6718 test/test/Issues/mijnirma/logo.png
......@@ -10,4 +10,4 @@ db0fdbe65ee9519290b756198a0d10b47c2af417e37843a2e790f5cc0e82d282 test/test/Publi
dcad6d3512286ff18555c7b4d6429b188b5fee79c56adfecefd450e4db1486f1 test/test/PublicKeys/3.xml
adc18a59954caeb907b999ab09b710c652665a0b150e5e4a7aff55199a4908dd test/test/description.xml
48f04181af6874a2f63f97d0a1a79b95f274da3e4d0efd9e5936b0ec0858b1cc test/test/logo.png
d86f27ada01e32af4cd5efb6e11197e050c23d5ec70a92a5161254935fd41254 test/timestamp
69908b424eb707e71dad303aee61cc97c7c69aae13e6f5a84082f67db416bf34 test/timestamp
......@@ -31,5 +31,6 @@
<nl>Uw geverifiëerde e-mailadres</nl>
</Description>
</Attribute>
<Attribute id="revocation" revocation="true" />
</Attributes>
</IssueSpecification>
......@@ -31,6 +31,7 @@
<nl>Uw BSN-nummer</nl>
</Description>
</Attribute>
<Attribute id="revocation" revocation="true" />
</Attributes>
</IssueSpecification>
1eeaa044eb9bc9177986762311d169016dfbe782688f668ddf4cfd804b4beeba irma-demo/MijnOverheid/Issues/fullName/description.xml
61a1fc7f161e43f8fc5b0c6ac2997cfe6bc0da7d27009b9914a04dca79ec6718 irma-demo/MijnOverheid/Issues/fullName/logo.png
e732e3ffc6735631ca83f258d92cfbe71103f726385e7fa174588c154b887f87 irma-demo/MijnOverheid/Issues/root/description.xml
a8579d876b10c1cd972b42d72b548db3791e622f024cb52a8c64dab76e12c15b irma-demo/MijnOverheid/Issues/root/description.xml
61a1fc7f161e43f8fc5b0c6ac2997cfe6bc0da7d27009b9914a04dca79ec6718 irma-demo/MijnOverheid/Issues/root/logo.png
e48bae60a29b31743c46db52552683cd5ef14a181ebd20c360b5fa7dc732a876 irma-demo/MijnOverheid/Issues/singleton/description.xml
61a1fc7f161e43f8fc5b0c6ac2997cfe6bc0da7d27009b9914a04dca79ec6718 irma-demo/MijnOverheid/Issues/singleton/logo.png
......@@ -17,4 +17,4 @@ dbd465d9cdb1c64206443e425fb1f8950605aee35e77f1e8bcf6cca8c34b8b65 irma-demo/RU/Pu
a4f6cc35cace3e9dc9388b29a8756ea83e5884f799d75cadd4efa60e1a12d855 irma-demo/RU/description.xml
35697bb7ffb19518a0ac6739ac3eef6b0272cd322c4619b075328b88c06ac43d irma-demo/RU/logo.png
f576663c26c8d980edc03e81f60df2c8328980d1c94490950d6f32e0b7ee0d78 irma-demo/description.xml
bd9a37d64a919085fc518053b6f378428ccbb358e46dcf6af243044989705734 irma-demo/timestamp
5e092f5f1f7840680309ca8071a9ad80d04afae46cc787eadc6447c150d1a021 irma-demo/timestamp
......@@ -31,6 +31,7 @@
<nl>Uw BSN-nummer</nl>
</Description>
</Attribute>
<Attribute id="revocation" revocation="true" />
</Attributes>
</IssueSpecification>
1eeaa044eb9bc9177986762311d169016dfbe782688f668ddf4cfd804b4beeba irma-demo/MijnOverheid/Issues/fullName/description.xml
61a1fc7f161e43f8fc5b0c6ac2997cfe6bc0da7d27009b9914a04dca79ec6718 irma-demo/MijnOverheid/Issues/fullName/logo.png
e732e3ffc6735631ca83f258d92cfbe71103f726385e7fa174588c154b887f87 irma-demo/MijnOverheid/Issues/root/description.xml
a8579d876b10c1cd972b42d72b548db3791e622f024cb52a8c64dab76e12c15b irma-demo/MijnOverheid/Issues/root/description.xml
61a1fc7f161e43f8fc5b0c6ac2997cfe6bc0da7d27009b9914a04dca79ec6718 irma-demo/MijnOverheid/Issues/root/logo.png
e48bae60a29b31743c46db52552683cd5ef14a181ebd20c360b5fa7dc732a876 irma-demo/MijnOverheid/Issues/singleton/description.xml
61a1fc7f161e43f8fc5b0c6ac2997cfe6bc0da7d27009b9914a04dca79ec6718 irma-demo/MijnOverheid/Issues/singleton/logo.png
......@@ -17,4 +17,4 @@ dbd465d9cdb1c64206443e425fb1f8950605aee35e77f1e8bcf6cca8c34b8b65 irma-demo/RU/Pu
a4f6cc35cace3e9dc9388b29a8756ea83e5884f799d75cadd4efa60e1a12d855 irma-demo/RU/description.xml
35697bb7ffb19518a0ac6739ac3eef6b0272cd322c4619b075328b88c06ac43d irma-demo/RU/logo.png
f576663c26c8d980edc03e81f60df2c8328980d1c94490950d6f32e0b7ee0d78 irma-demo/description.xml
bd9a37d64a919085fc518053b6f378428ccbb358e46dcf6af243044989705734 irma-demo/timestamp
5e092f5f1f7840680309ca8071a9ad80d04afae46cc787eadc6447c150d1a021 irma-demo/timestamp
......@@ -62,7 +62,7 @@ func TimestampRequest(message string, sigs []*big.Int, disclosed [][]*big.Int, n
if err != nil {
return nil, "", err
}
r, err := gabi.RepresentToPublicKey(pk, disclosed[i], nil)
r, err := gabi.RepresentToPublicKey(pk, disclosed[i])
if err != nil {
return nil, "", err
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment