@@ -20,23 +20,20 @@ contract EthereumDIDRegistry {
20
20
21
21
event DIDDelegateChanged (
22
22
address indexed identity ,
23
- string delegateType ,
23
+ bytes32 delegateType ,
24
24
address delegate ,
25
25
uint validTo ,
26
26
uint previousChange
27
27
);
28
28
29
29
event DIDAttributeChanged (
30
30
address indexed identity ,
31
- string name ,
31
+ bytes32 name ,
32
32
bytes value ,
33
33
uint validTo ,
34
34
uint previousChange
35
35
);
36
36
37
- function EthereumDIDRegistry () public {
38
- }
39
-
40
37
function identityOwner (address identity ) public view returns (address ) {
41
38
address owner = owners[identity];
42
39
if (owner != 0x0 ) {
@@ -52,21 +49,14 @@ contract EthereumDIDRegistry {
52
49
return signer;
53
50
}
54
51
55
- function validDelegate (address identity , string delegateType , address delegate ) public view returns (bool ) {
52
+ function validDelegate (address identity , bytes32 delegateType , address delegate ) public view returns (bool ) {
56
53
uint validity = delegates[identity][keccak256 (delegateType)][delegate];
57
- return (validity >= block .timestamp );
58
- }
59
-
60
- function validDelegateSignature (address identity , string delegateType , uint8 sigV , bytes32 sigR , bytes32 sigS , bytes32 hash ) public returns (address ) {
61
- address signer = ecrecover (hash, sigV, sigR, sigS);
62
- require (validDelegate (identity, delegateType, signer));
63
- nonce[signer]++ ;
64
- return signer;
54
+ return (validity > now );
65
55
}
66
56
67
57
function changeOwner (address identity , address actor , address newOwner ) internal onlyOwner (identity, actor) {
68
58
owners[identity] = newOwner;
69
- DIDOwnerChanged (identity, newOwner, changed[identity]);
59
+ emit DIDOwnerChanged (identity, newOwner, changed[identity]);
70
60
changed[identity] = block .number ;
71
61
}
72
62
@@ -75,64 +65,64 @@ contract EthereumDIDRegistry {
75
65
}
76
66
77
67
function changeOwnerSigned (address identity , uint8 sigV , bytes32 sigR , bytes32 sigS , address newOwner ) public {
78
- bytes32 hash = keccak256 (byte (0x19 ), byte (0 ), this , nonce[identityOwner (identity)], identity, "changeOwner " , newOwner);
68
+ bytes32 hash = keccak256 (byte (0x19 ), byte (0 ), this , nonce[identityOwner (identity)], identity, "changeOwner " , newOwner);
79
69
changeOwner (identity, checkSignature (identity, sigV, sigR, sigS, hash), newOwner);
80
70
}
81
71
82
- function addDelegate (address identity , address actor , string delegateType , address delegate , uint validity ) internal onlyOwner (identity, actor) {
83
- delegates[identity][keccak256 (delegateType)][delegate] = block . timestamp + validity;
84
- DIDDelegateChanged (identity, delegateType, delegate, block . timestamp + validity, changed[identity]);
72
+ function addDelegate (address identity , address actor , bytes32 delegateType , address delegate , uint validity ) internal onlyOwner (identity, actor) {
73
+ delegates[identity][keccak256 (delegateType)][delegate] = now + validity;
74
+ emit DIDDelegateChanged (identity, delegateType, delegate, now + validity, changed[identity]);
85
75
changed[identity] = block .number ;
86
76
}
87
77
88
- function addDelegate (address identity , string delegateType , address delegate , uint validity ) public {
78
+ function addDelegate (address identity , bytes32 delegateType , address delegate , uint validity ) public {
89
79
addDelegate (identity, msg .sender , delegateType, delegate, validity);
90
80
}
91
81
92
- function addDelegateSigned (address identity , uint8 sigV , bytes32 sigR , bytes32 sigS , string delegateType , address delegate , uint validity ) public {
93
- bytes32 hash = keccak256 (byte (0x19 ), byte (0 ), this , nonce[identityOwner (identity)], identity, "addDelegate " , delegateType, delegate, validity);
82
+ function addDelegateSigned (address identity , uint8 sigV , bytes32 sigR , bytes32 sigS , bytes32 delegateType , address delegate , uint validity ) public {
83
+ bytes32 hash = keccak256 (byte (0x19 ), byte (0 ), this , nonce[identityOwner (identity)], identity, "addDelegate " , delegateType, delegate, validity);
94
84
addDelegate (identity, checkSignature (identity, sigV, sigR, sigS, hash), delegateType, delegate, validity);
95
85
}
96
86
97
- function revokeDelegate (address identity , address actor , string delegateType , address delegate ) internal onlyOwner (identity, actor) {
98
- delegates[identity][keccak256 (delegateType)][delegate] = 0 ;
99
- DIDDelegateChanged (identity, delegateType, delegate, 0 , changed[identity]);
87
+ function revokeDelegate (address identity , address actor , bytes32 delegateType , address delegate ) internal onlyOwner (identity, actor) {
88
+ delegates[identity][keccak256 (delegateType)][delegate] = now ;
89
+ emit DIDDelegateChanged (identity, delegateType, delegate, now , changed[identity]);
100
90
changed[identity] = block .number ;
101
91
}
102
92
103
- function revokeDelegate (address identity , string delegateType , address delegate ) public {
93
+ function revokeDelegate (address identity , bytes32 delegateType , address delegate ) public {
104
94
revokeDelegate (identity, msg .sender , delegateType, delegate);
105
95
}
106
96
107
- function revokeDelegateSigned (address identity , uint8 sigV , bytes32 sigR , bytes32 sigS , string delegateType , address delegate ) public {
108
- bytes32 hash = keccak256 (byte (0x19 ), byte (0 ), this , nonce[identityOwner (identity)], identity, "revokeDelegate " , delegateType, delegate);
97
+ function revokeDelegateSigned (address identity , uint8 sigV , bytes32 sigR , bytes32 sigS , bytes32 delegateType , address delegate ) public {
98
+ bytes32 hash = keccak256 (byte (0x19 ), byte (0 ), this , nonce[identityOwner (identity)], identity, "revokeDelegate " , delegateType, delegate);
109
99
revokeDelegate (identity, checkSignature (identity, sigV, sigR, sigS, hash), delegateType, delegate);
110
100
}
111
101
112
- function setAttribute (address identity , address actor , string name , bytes value , uint validity ) internal onlyOwner (identity, actor) {
113
- DIDAttributeChanged (identity, name, value, block . timestamp + validity, changed[identity]);
102
+ function setAttribute (address identity , address actor , bytes32 name , bytes value , uint validity ) internal onlyOwner (identity, actor) {
103
+ emit DIDAttributeChanged (identity, name, value, now + validity, changed[identity]);
114
104
changed[identity] = block .number ;
115
105
}
116
106
117
- function setAttribute (address identity , string name , bytes value , uint validity ) public {
107
+ function setAttribute (address identity , bytes32 name , bytes value , uint validity ) public {
118
108
setAttribute (identity, msg .sender , name, value, validity);
119
109
}
120
110
121
- function setAttributeSigned (address identity , uint8 sigV , bytes32 sigR , bytes32 sigS , string name , bytes value , uint validity ) public {
122
- bytes32 hash = keccak256 (byte (0x19 ), byte (0 ), this , nonce[identity], identity, "setAttribute " , name, value, validity);
111
+ function setAttributeSigned (address identity , uint8 sigV , bytes32 sigR , bytes32 sigS , bytes32 name , bytes value , uint validity ) public {
112
+ bytes32 hash = keccak256 (byte (0x19 ), byte (0 ), this , nonce[identity], identity, "setAttribute " , name, value, validity);
123
113
setAttribute (identity, checkSignature (identity, sigV, sigR, sigS, hash), name, value, validity);
124
114
}
125
115
126
- function revokeAttribute (address identity , address actor , string name , bytes value ) internal onlyOwner (identity, actor) {
127
- DIDAttributeChanged (identity, name, value, 0 , changed[identity]);
116
+ function revokeAttribute (address identity , address actor , bytes32 name , bytes value ) internal onlyOwner (identity, actor) {
117
+ emit DIDAttributeChanged (identity, name, value, 0 , changed[identity]);
128
118
changed[identity] = block .number ;
129
119
}
130
120
131
- function revokeAttribute (address identity , string name , bytes value ) public {
121
+ function revokeAttribute (address identity , bytes32 name , bytes value ) public {
132
122
revokeAttribute (identity, msg .sender , name, value);
133
123
}
134
124
135
- function revokeAttributeSigned (address identity , uint8 sigV , bytes32 sigR , bytes32 sigS , string name , bytes value ) public {
125
+ function revokeAttributeSigned (address identity , uint8 sigV , bytes32 sigR , bytes32 sigS , bytes32 name , bytes value ) public {
136
126
bytes32 hash = keccak256 (byte (0x19 ), byte (0 ), this , nonce[identity], identity, "revokeAttribute " , name, value);
137
127
revokeAttribute (identity, checkSignature (identity, sigV, sigR, sigS, hash), name, value);
138
128
}
0 commit comments