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
1e57e905
Commit
1e57e905
authored
Nov 16, 2017
by
Sietse Ringers
Browse files
Make erroneous scheme managers non-fatal
parent
7090bfd7
Changes
9
Hide whitespace changes
Inline
Side-by-side
credinfo.go
View file @
1e57e905
...
...
@@ -28,6 +28,9 @@ type CredentialInfoList []*CredentialInfo
func
NewCredentialInfo
(
ints
[]
*
big
.
Int
,
conf
*
Configuration
)
*
CredentialInfo
{
meta
:=
MetadataFromInt
(
ints
[
0
],
conf
)
credtype
:=
meta
.
CredentialType
()
if
credtype
==
nil
{
return
nil
}
attrs
:=
make
([]
TranslatedString
,
len
(
credtype
.
Attributes
))
for
i
:=
range
credtype
.
Attributes
{
...
...
identifiers.go
View file @
1e57e905
...
...
@@ -66,6 +66,10 @@ func (oi metaObjectIdentifier) String() string {
return
string
(
oi
)
}
func
(
oi
metaObjectIdentifier
)
Empty
()
bool
{
return
len
(
oi
)
==
0
}
func
(
oi
metaObjectIdentifier
)
Root
()
string
{
str
:=
string
(
oi
)
if
i
:=
strings
.
Index
(
str
,
"."
);
i
!=
-
1
{
...
...
internal/fs/fs.go
View file @
1e57e905
...
...
@@ -62,7 +62,8 @@ func EnsureDirectoryExists(path string) error {
}
func
Copy
(
src
,
dest
string
)
error
{
if
err
:=
AssertPathExists
(
src
);
err
!=
nil
{
exists
,
err
:=
PathExists
(
src
)
if
err
!=
nil
||
!
exists
{
return
err
}
bts
,
err
:=
ioutil
.
ReadFile
(
src
)
...
...
irmaclient/client.go
View file @
1e57e905
...
...
@@ -129,6 +129,9 @@ func New(
if
err
!=
nil
{
return
nil
,
err
}
if
err
=
cm
.
Configuration
.
ParseFolder
();
err
!=
nil
{
return
nil
,
err
}
// Ensure storage path exists, and populate it with necessary files
cm
.
storage
=
storage
{
storagePath
:
storagePath
,
Configuration
:
cm
.
Configuration
}
...
...
@@ -146,10 +149,6 @@ func New(
return
nil
,
err
}
if
err
=
cm
.
Configuration
.
ParseFolder
();
err
!=
nil
{
return
nil
,
err
}
// Load our stuff
if
cm
.
secretkey
,
err
=
cm
.
storage
.
LoadSecretKey
();
err
!=
nil
{
return
nil
,
err
...
...
@@ -182,6 +181,9 @@ func (client *Client) CredentialInfoList() irma.CredentialInfoList {
for
_
,
attrlistlist
:=
range
client
.
attributes
{
for
index
,
attrlist
:=
range
attrlistlist
{
info
:=
attrlist
.
Info
()
if
info
==
nil
{
continue
}
info
.
Index
=
index
list
=
append
(
list
,
info
)
}
...
...
@@ -194,7 +196,10 @@ func (client *Client) CredentialInfoList() irma.CredentialInfoList {
// addCredential adds the specified credential to the Client, saving its signature
// imediately, and optionally cm.attributes as well.
func
(
client
*
Client
)
addCredential
(
cred
*
credential
,
storeAttributes
bool
)
(
err
error
)
{
id
:=
cred
.
CredentialType
()
.
Identifier
()
id
:=
irma
.
NewCredentialTypeIdentifier
(
""
)
if
cred
.
CredentialType
()
!=
nil
{
id
=
cred
.
CredentialType
()
.
Identifier
()
}
// Don't add duplicate creds
for
_
,
attrlistlist
:=
range
client
.
attributes
{
...
...
@@ -206,17 +211,19 @@ func (client *Client) addCredential(cred *credential, storeAttributes bool) (err
}
// If this is a singleton credential type, ensure we have at most one by removing any previous instance
if
cred
.
CredentialType
()
.
IsSingleton
&&
len
(
client
.
creds
(
id
))
>
0
{
if
!
id
.
Empty
()
&&
cred
.
CredentialType
()
.
IsSingleton
&&
len
(
client
.
creds
(
id
))
>
0
{
client
.
remove
(
id
,
0
,
false
)
// Index is 0, because if we're here we have exactly one
}
// Append the new cred to our attributes and credentials
client
.
attributes
[
id
]
=
append
(
client
.
attrs
(
id
),
cred
.
AttributeList
())
if
_
,
exists
:=
client
.
credentials
[
id
];
!
exists
{
client
.
credentials
[
id
]
=
make
(
map
[
int
]
*
credential
)
if
!
id
.
Empty
()
{
if
_
,
exists
:=
client
.
credentials
[
id
];
!
exists
{
client
.
credentials
[
id
]
=
make
(
map
[
int
]
*
credential
)
}
counter
:=
len
(
client
.
attributes
[
id
])
-
1
client
.
credentials
[
id
][
counter
]
=
cred
}
counter
:=
len
(
client
.
attributes
[
id
])
-
1
client
.
credentials
[
id
][
counter
]
=
cred
if
err
=
client
.
storage
.
StoreSignature
(
cred
);
err
!=
nil
{
return
...
...
irmaclient/credential.go
View file @
1e57e905
...
...
@@ -19,6 +19,12 @@ func newCredential(gabicred *gabi.Credential, conf *irma.Configuration) (*creden
Credential
:
gabicred
,
MetadataAttribute
:
meta
,
}
if
cred
.
CredentialType
()
==
nil
{
// Unknown credtype, populate Pk field later
return
cred
,
nil
}
var
err
error
cred
.
Pk
,
err
=
conf
.
PublicKey
(
meta
.
CredentialType
()
.
IssuerIdentifier
(),
cred
.
KeyCounter
())
if
err
!=
nil
{
...
...
irmaclient/irmaclient_test.go
View file @
1e57e905
...
...
@@ -381,6 +381,21 @@ func TestCredentialRemoval(t *testing.T) {
teardown
(
t
)
}
func
TestWrongSchemeManager
(
t
*
testing
.
T
)
{
client
:=
parseStorage
(
t
)
irmademo
:=
irma
.
NewSchemeManagerIdentifier
(
"irma-demo"
)
require
.
Contains
(
t
,
client
.
Configuration
.
SchemeManagers
,
irmademo
)
require
.
NoError
(
t
,
os
.
Remove
(
"testdata/storage/test/irma_configuration/irma-demo/index"
))
err
:=
client
.
Configuration
.
ParseFolder
()
_
,
ok
:=
err
.
(
*
irma
.
SchemeManagerError
)
require
.
True
(
t
,
ok
)
require
.
Contains
(
t
,
client
.
Configuration
.
DisabledSchemeManagers
,
irmademo
)
teardown
(
t
)
}
// Test installing a new scheme manager from a qr, and do a(n issuance) session
// within this manager to test the autmatic downloading of credential definitions,
// issuers, and public keys.
...
...
@@ -390,7 +405,7 @@ func TestDownloadSchemeManager(t *testing.T) {
// Remove irma-demo scheme manager as we need to test adding it
irmademo
:=
irma
.
NewSchemeManagerIdentifier
(
"irma-demo"
)
require
.
Contains
(
t
,
client
.
Configuration
.
SchemeManagers
,
irmademo
)
require
.
NoError
(
t
,
client
.
Configuration
.
RemoveSchemeManager
(
irmademo
))
require
.
NoError
(
t
,
client
.
Configuration
.
RemoveSchemeManager
(
irmademo
,
true
))
require
.
NotContains
(
t
,
client
.
Configuration
.
SchemeManagers
,
irmademo
)
// Do an add-scheme-manager-session
...
...
irmaclient/updates.go
View file @
1e57e905
...
...
@@ -65,11 +65,18 @@ func (client *Client) update() error {
if
err
!=
nil
{
str
:=
err
.
Error
()
u
.
Error
=
&
str
}
// TODO: err is only stored but not passed on!
}
client
.
updates
=
append
(
client
.
updates
,
u
)
if
err
!=
nil
{
break
}
}
return
client
.
storage
.
StoreUpdates
(
client
.
updates
)
storeErr
:=
client
.
storage
.
StoreUpdates
(
client
.
updates
)
if
storeErr
!=
nil
{
return
storeErr
}
return
err
}
// ParseAndroidStorage parses an Android cardemu.xml shared preferences file
...
...
irmaconfig.go
View file @
1e57e905
...
...
@@ -38,6 +38,8 @@ type Configuration struct {
Issuers
map
[
IssuerIdentifier
]
*
Issuer
CredentialTypes
map
[
CredentialTypeIdentifier
]
*
CredentialType
DisabledSchemeManagers
map
[
SchemeManagerIdentifier
]
*
SchemeManager
publicKeys
map
[
IssuerIdentifier
]
map
[
int
]
*
gabi
.
PublicKey
reverseHashes
map
[
string
]
CredentialTypeIdentifier
initialized
bool
...
...
@@ -53,6 +55,15 @@ type ConfigurationFileHash []byte
// along with their SHA266 hash
type
SchemeManagerIndex
map
[
string
]
ConfigurationFileHash
type
SchemeManagerError
struct
{
Manager
SchemeManagerIdentifier
Err
error
}
func
(
sme
SchemeManagerError
)
Error
()
string
{
return
fmt
.
Sprintf
(
"Error parsing scheme manager %s: %s"
,
sme
.
Manager
.
Name
(),
sme
.
Err
.
Error
())
}
// NewConfiguration returns a new configuration. After this
// ParseFolder() should be called to parse the specified path.
func
NewConfiguration
(
path
string
,
assets
string
)
(
conf
*
Configuration
,
err
error
)
{
...
...
@@ -80,39 +91,74 @@ func (conf *Configuration) ParseFolder() error {
conf
.
SchemeManagers
=
make
(
map
[
SchemeManagerIdentifier
]
*
SchemeManager
)
conf
.
Issuers
=
make
(
map
[
IssuerIdentifier
]
*
Issuer
)
conf
.
CredentialTypes
=
make
(
map
[
CredentialTypeIdentifier
]
*
CredentialType
)
conf
.
publicKeys
=
make
(
map
[
IssuerIdentifier
]
map
[
int
]
*
gabi
.
PublicKey
)
conf
.
DisabledSchemeManagers
=
make
(
map
[
SchemeManagerIdentifier
]
*
SchemeManager
)
conf
.
publicKeys
=
make
(
map
[
IssuerIdentifier
]
map
[
int
]
*
gabi
.
PublicKey
)
conf
.
reverseHashes
=
make
(
map
[
string
]
CredentialTypeIdentifier
)
var
mgrerr
*
SchemeManagerError
err
:=
iterateSubfolders
(
conf
.
path
,
func
(
dir
string
)
error
{
manager
:=
&
SchemeManager
{}
if
err
:=
conf
.
ParseIndex
(
manager
);
err
!=
nil
{
return
err
}
exists
,
err
:=
conf
.
pathToDescription
(
manager
,
dir
+
"/description.xml"
,
manager
)
if
err
!=
nil
||
!
exists
{
return
err
}
if
manager
.
XMLVersion
<
7
{
return
errors
.
New
(
"Unsupported scheme manager description"
)
}
valid
,
err
:=
conf
.
VerifySignature
(
manager
.
Identifier
())
if
err
!=
nil
{
return
err
}
if
!
valid
{
return
errors
.
New
(
"Scheme manager signature was invalid"
)
err
:=
conf
.
parseSchemeManagerFolder
(
dir
)
if
err
==
nil
{
return
nil
// OK, do next scheme manager folder
}
// If there is an error, and it is of type SchemeManagerError, return nil
// so as to continue parsing other managers.
var
ok
bool
if
mgrerr
,
ok
=
err
.
(
*
SchemeManagerError
);
ok
{
return
nil
}
conf
.
SchemeManagers
[
manager
.
Identifier
()]
=
manager
return
conf
.
parseIssuerFolders
(
manager
,
dir
)
return
err
// Not a SchemeManagerError? return it & halt parsing now
})
if
err
!=
nil
{
return
err
}
conf
.
initialized
=
true
if
mgrerr
!=
nil
{
return
mgrerr
}
return
nil
}
func
(
conf
*
Configuration
)
parseSchemeManagerFolder
(
dir
string
)
(
err
error
)
{
exists
,
err
:=
fs
.
PathExists
(
dir
+
"/description.xml"
)
if
err
!=
nil
||
!
exists
{
return
err
}
// Put the directory name in the ID field in case we return early due to errors
manager
:=
&
SchemeManager
{
ID
:
filepath
.
Base
(
dir
)}
defer
func
()
{
if
err
!=
nil
{
conf
.
DisabledSchemeManagers
[
manager
.
Identifier
()]
=
manager
err
=
&
SchemeManagerError
{
Manager
:
manager
.
Identifier
(),
Err
:
err
}
_
=
conf
.
RemoveSchemeManager
(
manager
.
Identifier
(),
false
)
// does not return errors
}
}()
if
err
=
conf
.
parseIndex
(
filepath
.
Base
(
dir
),
manager
);
err
!=
nil
{
return
err
}
_
,
err
=
conf
.
pathToDescription
(
manager
,
dir
+
"/description.xml"
,
manager
)
if
err
!=
nil
||
!
exists
{
return
err
}
if
manager
.
XMLVersion
<
7
{
return
errors
.
New
(
"Unsupported scheme manager description"
)
}
valid
,
err
:=
conf
.
VerifySignature
(
manager
.
Identifier
())
if
err
!=
nil
{
return
err
}
if
!
valid
{
return
errors
.
New
(
"Scheme manager signature was invalid"
)
}
conf
.
SchemeManagers
[
manager
.
Identifier
()]
=
manager
err
=
conf
.
parseIssuerFolders
(
manager
,
dir
)
return
}
func
relativePath
(
absolute
string
,
relative
string
)
string
{
return
relative
[
len
(
absolute
)
+
1
:
]
}
...
...
@@ -339,7 +385,7 @@ func (conf *Configuration) DownloadSchemeManager(url string) (*SchemeManager, er
// RemoveSchemeManager removes the specified scheme manager and all associated issuers,
// public keys and credential types from this Configuration.
func
(
conf
*
Configuration
)
RemoveSchemeManager
(
id
SchemeManagerIdentifier
)
error
{
func
(
conf
*
Configuration
)
RemoveSchemeManager
(
id
SchemeManagerIdentifier
,
fromStorage
bool
)
error
{
// Remove everything falling under the manager's responsibility
for
credid
:=
range
conf
.
CredentialTypes
{
if
credid
.
IssuerIdentifier
()
.
SchemeManagerIdentifier
()
==
id
{
...
...
@@ -357,9 +403,11 @@ func (conf *Configuration) RemoveSchemeManager(id SchemeManagerIdentifier) error
}
}
delete
(
conf
.
SchemeManagers
,
id
)
// Remove from storage
return
os
.
RemoveAll
(
fmt
.
Sprintf
(
"%s/%s"
,
conf
.
path
,
id
.
String
()))
// or, remove above iterations and call .ParseFolder()?
if
fromStorage
{
return
os
.
RemoveAll
(
fmt
.
Sprintf
(
"%s/%s"
,
conf
.
path
,
id
.
String
()))
}
return
nil
}
// AddSchemeManager adds the specified scheme manager to this Configuration,
...
...
@@ -563,9 +611,9 @@ func (i SchemeManagerIndex) FromString(s string) error {
return
nil
}
//
P
arseIndex parses the index file of the specified manager.
func
(
conf
*
Configuration
)
P
arseIndex
(
manager
*
SchemeManager
)
error
{
path
:=
filepath
.
Join
(
conf
.
path
,
manager
.
ID
,
"index"
)
//
p
arseIndex parses the index file of the specified manager.
func
(
conf
*
Configuration
)
p
arseIndex
(
name
string
,
manager
*
SchemeManager
)
error
{
path
:=
filepath
.
Join
(
conf
.
path
,
name
,
"index"
)
if
err
:=
fs
.
AssertPathExists
(
path
);
err
!=
nil
{
return
errors
.
New
(
"Missing scheme manager index file"
)
}
...
...
testdata/oldstorage/shared_prefs/cardemu.xml
View file @
1e57e905
...
...
@@ -5,5 +5,5 @@
<string
name=
"KeyshareKeypairs"
>
[{
"
privateKey
"
:{
"
lambda
"
:13105831384828218876560609191189383845468459774975903717604163515386241495802150568081964987040584656142216443261218467199905843616264284055829505412960102329209002173148186420620500504858986845489948534342198615611818161542152957889040110812941118638951231633747249414646837250859544265493362941989058935616412420426887288399954686824856971402713552531155410782666248727292165743388787937137041599325971824628900100322779024857586721474036320187217412019204689610881581773125014731592865210590421717072349044304127053672666150142099179812051526213635630586112552985839971411737662299019137877699120171511254859730164,
"
preCalculatedDenominator
"
:14457175043970867415482864202144925492455189514261889829019837221373475922961532698087509388113348555917219818150888564425877887960039812301626028889905753439084324313884963867248924045095099875600061387168880466523954155339779490282034173927659447847503489301273075366512403194118684254876613087496838773003874146757417013864773712276484301281333085093670440601294131086228360118390208800171949963093232479261037074686763095365997465734818160576919422500361850265405516827193794151557746513679590064303202557683348550737040347000242465179752409243222947197749116418194597609990691197111528523135899412968516583651540},
"
publicKey
"
:{
"
bits
"
:2048,
"
g
"
:8862400561053796364289285723617693709207564671698972893812200927472011482035295371791426738073934848329302611254009067210559729810902663585454743512874760511368626382512193855688797707415822966598786461277217956206157765359954321269690961732537704558120157014666258193744608782162606605170876295968514024471141843787498493152932774279687347862057282945272215765332541474211830087002078271212103305702205788341726639534165102630283294218679557529017676396999598448180234664320818005422679066912462307632981889153339448429506228240657156076394029553819588111185770468406271931195208301167982327782614273877364721714452,
"
n
"
:26211662769656437753121218382378767690936919549951807435208327030772482991604301136163929974081169312284432886522436934399811687232528568111659010825920204658418004346296372841241001009717973690979897068684397231223636323084305915778080221625882237277902463267494498829293674501719088530986725883978117871233149085456111975665968312781373400475995717615211287938483521093329209078097893122125909937865512298951433144557040805559075433725322232688535699085082726523017873600524842344424677847217387575470418175712809701080214114825687537367951841103742141876774971583300722803037995253856843248026121191810752654274223,
"
nSquared
"
:687051265150193397388737817358354735135379425802161838393081206112180852406102336661977328151527128648923978763926029566847881395557111856108083268840036991848093085707643314278670899573615597557018701664652290094225326842794721518120098448299930012617134510178308002775842424437745795941590153105400326680047975875811954487334935179849168841000649942377984466861597973811131227952291501551344177628270089313938769943238235101730045101784480725891585983180996430688827273523156596705718421623185098892388555113844586624798206469811916847146153787351016427620772668531112567616601680420110669419300161427439750870446658944559518310012326431627406431000795002946018420635025636749454943511229471215249620266567874528383434474580509468753325765630060183187621977261956013577372439010654166096800514371315165138841327451799493798885006436386382563574252854758769432824547274991022772773828006940890171431402084684096553511231459009120400723388472707427084637869177106345365952491273341327831008562737754411280436203881971742872052502302361295444174230182249579289657685236067835020312586819531146275049884116649650194408736172295425155849973493156469880872191887812616518885817798547061730519474196414344767522035757131883766150882253729}},{
"
privateKey
"
:{
"
lambda
"
:6184562678528752436832164133724517995431954528494243017545500208614709651767377714257841240272720630359762916481185037603813113089603005910539770462609596751920347221069059975784159494591218550001024160513862718606573032998680237306637825698955423269983698373452564721617556472176888974747238372962166560567833010090783283721188389989840207700895671602581224918934678281299019936932720319707679785602244082105916618542821207646259753009399823471432247446390285302239068634383996988495890078585007302812815803503820187905484135946066391133081048259187375039757173695608214036865596366509171308574148200704309443764444,
"
preCalculatedDenominator
"
:3508628871837896788321309237803440469403117094910460515766494924999724519071930881339056474869035916234214465229551568332862196862718822303382740727624840200833947022860166041718986776724551892102489072337758081929573180080013954625914613005031361367111698086249519496273404229622162026090202929945849942880934660127600271409516420795724912767897223552791438362903310434967491401537026159986167469001871407547237981849744547292474794910841697822927754679818124348830555461024193016084711728120676214139902333529799071190420767988605828092412644423762072877030470209599099389367280815334114438378069068181181058736791},
"
publicKey
"
:{
"
bits
"
:2048,
"
g
"
:17767463921361790475850945292980865995244694782274600798889058583795448595655230498143301060554472153811191834580916447890535273201977466908601236575421197376061431343102813995580354991205876972725742105642561503947039149916280545883075499395400011378310529259383089175649963880461391018852256967958446507954986990641775442845408924114402473837987012378606297814034927688586777297474215574761420358612206306949782968177729624649508752129235873813995151659950110801680628985884778091328842752327266555079541007332946858463967181246818896616753694053118750508390518124287186980282171260678670643565737884142133288589401,
"
n
"
:24738250714115009747328656534898071981727818113976972070182000834458838607069510857031364961090882521439051665924740150415252452358412023642159081850438387007681388884276239903136637978364874200004096642055450874426292131994720949226551302795821693079934793493810258886470225888707555898988953491848666242271648010535263876690591371549184488285292852556108098831053527978343953516901065910077176311284006269611726703192096126019674012913721567460759964188566623332994691859022294190618205991695025767206922649752736913034517035271738376896936368149181012410794877117433051973100751732715850680205664609652609815182897,
"
nSquared
"
:611981048394411789723953421476186591657368245800249742964177783299044023934931312318209363119887594846270142110975561619889579465125478770329167364521552661288086851944334527163279902570126907655353897552949530794124306755920852822227231995239686092877904605802171681499531667168561357567906188391533682522788232235293791366572590318999881897615294278544337013827080331160473976235198377329447997236604195541220849972135512524975186344029683158152922443280323040459534037669949807801104726623840623446431521636219576592795456066162368515810186259357688010253221756253768239702790645617809312136608532141559952086293992485843555015680373737960019119996233405018158354285517204344155278771773875609002500622993066825638558032745648908015028177280986062730134423851791114197134874632127799901960254934852296501757346247901444214427309573353333305832305947576015980844106755930969830500694326327162385658584413941141105580111707185814694014255678459167853049859388198810341006124599479909199354188941922972516151208685042513959047394859264250891931562156900839282128434254591808713990424035399307841847608314031458201734146013479981075481175837621027322959784838064477702593822887882257219197124070665470650004125120857600979701561312609}},{
"
privateKey
"
:{
"
lambda
"
:6028452352425011549574554689599013957304376567620389108914889309228356380068768736448966207018145406730900090971639880691225550403987461474965370832235144360059862408691802022992076863036759202505119231885754235889782776029256321349414327482888097914099554837553709457886050735655494927090190765223160674355651062439996244049353775540339080670889141528244222884195409094547781615289755663286309917416217035663165531657176973219486023262309807433629786250843572701879934485104088125299145658970125343979170033308524357589807406620682949863271575020368877325335218820280128557493456704092938888335602385161423779096304,
"
preCalculatedDenominator
"
:3111015575808257214670518772849525204347870840158004578696072738298150482248965871739918934218250629792218371362177825593750743110954487007029304470087322461414783573597792822377377423880615389546120263865938012674278853168380322586873515694928469042276233644696817323724605476354007511642267958517478270526145703900692512897264401804623322219889957709078242891956994461492105106273132156096571227213889667952488051138257863582658418999333168957588828154879830515612381503660218818488614774284879432878376926141945314369836270073009299481905490109127401864665903144801039019000377686874436629209724202627596930080910},
"
publicKey
"
:{
"
bits
"
:2048,
"
g
"
:25203586278496337500506037071786988254712368567661125696011348877989440853448499869317337936318942695308886944041024556799277668205445062643855354256855520700517210407765865214248232179503855682691045593895406168112836809590100517023702607999489077052605922778848157674018090064708560658821231622355276053276937628353434808939614883997170419500565941916685408731330720822232008822225148820344504920517262362983268301619949286214234326975080326972806811587474074751841924523127220545356559404043441261683915720957116156670855991432763507861121251204729277534389509491952694073592082976983869193848169368886504777167543,
"
n
"
:24113809409700046198298218758396055829217506270481556435659557236913425520275074945795864828072581626923600363886559522764902201615949845899861483328940577440239449634767208091968307452147036810020476927543016943559131104117025285397657309931552391656398219350214837831544202942621979708360763060892642697422915751281710581081623369284366151700951012391659673733039515566976420407336974182888646229967918140018678743366854814391316663891385431677656987687495177684293959235462165870906774333308976445541972903603467802680013422533783174122094147196936065715636382935758285029139504968030589078315813054153083156003909,
"
nSquared
"
:581475804247338490488006599248054006626212612976047499356860085147863424328471353817888582048179247652829104006631784465561374923253921265898280459759713808221382918585343558683822468412955134269326608954404008740596489342584451051332963879525566466104631311795594116713746971595658702416152057761216038556229912985015420280677350587257225478435800892298669785494933249479568802951226727955368321803664357645478714252258863288660785400020670185081841142677355955562132095964404351725369088923591102195985188378900133311613738899080830313804105125349940281703868886788457933005100509719731353654310662356640505306354978715848703540364865193532698108383842705254353161156795087969766467669425373796885766152693869110040976302615013464052872815087804986693351139490163877481346915693528053014055280605567258803619880459875779172043771920215323112027680816016961399520435655139291392766279161805529108554823248369627250170542824840801418859756582748372368177568771136838253631221701741119818398556689379982174249981391710099750980453213732658428729858876372531883875959585650375352885213298810434291065509301991961092541282567050346631173852937324752665107296399544140064631759104304928530309602320212301715462344327108289140113623280281}}]
</string>
<boolean
name=
"launchedFromBrowser"
value=
"false"
/>
<string
name=
"keyshare"
>
{
"
test
"
:{
"
keyPair
"
:{
"
privateKey
"
:{
"
lambda
"
:12214112870199665290166556555451340495138794790533984967474826561841734549247382320577621541124900832056180911717383006575684684255545258176922372415102323074166739282896689214839294170531488548059756434611327763007910269187483468329718308923481447857151377019647187366640382025011216709887043927923969429000009043691025735700620957989360200766120074560814438642487651452384431551993840116049346685321285785716966985200427756907404837132069368739277146792600578085694607772088567648223321660604893897374788877302677252247276379317622140094627977015392418514260317281875734732187418396525233216445864514276743417185848,
"
preCalculatedDenominator
"
:19912746068205519364851327179815201082238009565234331045064495080230734476194817479124641743750883796254209246954649623190126403707736555175678388568054172353853041132321654071614367658185715154859106748471838564244810007905965315523998739353754803887245565422499729346591647088945407013226930182535705057075784239580728927331869546685952864393885796413660031420857632579613800450229774588518338215899036306413114356802331906233164336727792565281154474230263297371124137775615041515224573003818467270459709845839627351863248461718283936177402786467332492170107114657485498105659804873302946202504386142981739540069310},
"
publicKey
"
:{
"
bits
"
:2048,
"
g
"
:17948470935821729188106091421709655906001732927602280604374877188502926412173732300250736064220436586121644432565867771993761974358949417374879427109114746839901074083831506941188486018803901725486624170545520797943374384178772090444259028702531962880614697282738685021298955994020851975625300141657255060207178035443078641230729905182801310741253760431199512540950387260880637093634480127770357299622052007681045829349269144636555636560022574641155735732745698662647396619247466755278755885560424714760594726764152680178405250922344992316157163182728147747687910564755889459196648180088397022867342119114131262716803,
"
n
"
:24428225740399330580333113110902680990277589581067969934949653123683469098494764641155243082249801664112361823434766013151369368511090516353844744830204646148333478565793378429678588341062977096119512869222655526015820538374966936659436617846962895714302754039294374733280764050022433419774087855847938858000332409285415750647466867279610626860664320265681649418469417127726923376741037448704723897078434301858791634189635797437813209386891133527791081093395862543868043852447762291145615589316942332322356214230772589251174590398678888311562947723531989408178115197127709706626583351333795141029721896901485453680319,
"
nSquared
"
:596738212823908422722684447852557873707091115290261109970619471214678688342663922610410225887969624669528632850269713940927164243946500395632609808709015431150143363018916552402305647705542105198182591241256704640058830256989985731530407093712739321579360275605383025599284152574935758439945013820180868488849586876077265724009673310418503195732728223826931331883694710955296016136427784335719332993384794598188249575083799908524468396099680094784562607747368568764227244378367311828084637807486262977349835646107424857193160577841257746953292275449202680334406981680553910026247464478737898189519886148000530227289008009559577110542216066310896228763339224181840338326046626159368526555117143093509692471618025882574619710623665103358362539924521797298689972262499613191997151181825621274686799114758647167482972918231380049134953711377395205821468850062066750831955543485615342319331993871223164126914743303237376899916098170292785384814958681609873987207017471155787970444329874030299436374891262395778674915034144917802416680050500567825951443996313677157331224391722261090993848466707100532265478585766510876455411260719566093960241080627471763474427127437884993041475493613536790376888114934702629672232540326858573261847941761}},
"
nonce
"
:
"
Xb2E0rMzIlLzGRF72zpnIa3OQuQa+PtQf5+Lw6uXFTY\u003d
"
,
"
url
"
:
"
http://
192.168.2.20
:8080/irma_keyshare_server/api/v1
"
,
"
username
"
:
"
testusername
"
}}
</string>
<string
name=
"keyshare"
>
{
"
test
"
:{
"
keyPair
"
:{
"
privateKey
"
:{
"
lambda
"
:12214112870199665290166556555451340495138794790533984967474826561841734549247382320577621541124900832056180911717383006575684684255545258176922372415102323074166739282896689214839294170531488548059756434611327763007910269187483468329718308923481447857151377019647187366640382025011216709887043927923969429000009043691025735700620957989360200766120074560814438642487651452384431551993840116049346685321285785716966985200427756907404837132069368739277146792600578085694607772088567648223321660604893897374788877302677252247276379317622140094627977015392418514260317281875734732187418396525233216445864514276743417185848,
"
preCalculatedDenominator
"
:19912746068205519364851327179815201082238009565234331045064495080230734476194817479124641743750883796254209246954649623190126403707736555175678388568054172353853041132321654071614367658185715154859106748471838564244810007905965315523998739353754803887245565422499729346591647088945407013226930182535705057075784239580728927331869546685952864393885796413660031420857632579613800450229774588518338215899036306413114356802331906233164336727792565281154474230263297371124137775615041515224573003818467270459709845839627351863248461718283936177402786467332492170107114657485498105659804873302946202504386142981739540069310},
"
publicKey
"
:{
"
bits
"
:2048,
"
g
"
:17948470935821729188106091421709655906001732927602280604374877188502926412173732300250736064220436586121644432565867771993761974358949417374879427109114746839901074083831506941188486018803901725486624170545520797943374384178772090444259028702531962880614697282738685021298955994020851975625300141657255060207178035443078641230729905182801310741253760431199512540950387260880637093634480127770357299622052007681045829349269144636555636560022574641155735732745698662647396619247466755278755885560424714760594726764152680178405250922344992316157163182728147747687910564755889459196648180088397022867342119114131262716803,
"
n
"
:24428225740399330580333113110902680990277589581067969934949653123683469098494764641155243082249801664112361823434766013151369368511090516353844744830204646148333478565793378429678588341062977096119512869222655526015820538374966936659436617846962895714302754039294374733280764050022433419774087855847938858000332409285415750647466867279610626860664320265681649418469417127726923376741037448704723897078434301858791634189635797437813209386891133527791081093395862543868043852447762291145615589316942332322356214230772589251174590398678888311562947723531989408178115197127709706626583351333795141029721896901485453680319,
"
nSquared
"
:596738212823908422722684447852557873707091115290261109970619471214678688342663922610410225887969624669528632850269713940927164243946500395632609808709015431150143363018916552402305647705542105198182591241256704640058830256989985731530407093712739321579360275605383025599284152574935758439945013820180868488849586876077265724009673310418503195732728223826931331883694710955296016136427784335719332993384794598188249575083799908524468396099680094784562607747368568764227244378367311828084637807486262977349835646107424857193160577841257746953292275449202680334406981680553910026247464478737898189519886148000530227289008009559577110542216066310896228763339224181840338326046626159368526555117143093509692471618025882574619710623665103358362539924521797298689972262499613191997151181825621274686799114758647167482972918231380049134953711377395205821468850062066750831955543485615342319331993871223164126914743303237376899916098170292785384814958681609873987207017471155787970444329874030299436374891262395778674915034144917802416680050500567825951443996313677157331224391722261090993848466707100532265478585766510876455411260719566093960241080627471763474427127437884993041475493613536790376888114934702629672232540326858573261847941761}},
"
nonce
"
:
"
Xb2E0rMzIlLzGRF72zpnIa3OQuQa+PtQf5+Lw6uXFTY\u003d
"
,
"
url
"
:
"
http://
localhost
:8080/irma_keyshare_server/api/v1
"
,
"
username
"
:
"
testusername
"
}}
</string>
</map>
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