({fingerprint, keyringId})
| 146 | } |
| 147 | |
| 148 | async getKeyServerSync({fingerprint, keyringId}) { |
| 149 | const result = { |
| 150 | status: false, |
| 151 | userIds: {} |
| 152 | }; |
| 153 | try { |
| 154 | const keyring = await keyringById(keyringId); |
| 155 | const localKey = keyring.getPrivateKeyByFpr(fingerprint).toPublic(); |
| 156 | const remote = await mveloKeyServer.fetch({fingerprint}); |
| 157 | if (!remote) { |
| 158 | return result; |
| 159 | } |
| 160 | // found key on server |
| 161 | for (const userId of remote.userIds) { |
| 162 | // get remote user IDs |
| 163 | result.userIds[userId.email] = userId.verified; |
| 164 | } |
| 165 | // filter local user IDs to match remote userIDs |
| 166 | localKey.users = localKey.users.filter(({userID: {email}}) => Object.keys(result.userIds).includes(email) && result.userIds[email]); |
| 167 | const remoteKey = await readKey({armoredKey: remote.publicKeyArmored}); |
| 168 | const remoteKeyModTime = new Date(getLastModifiedDate(remoteKey)).getTime(); |
| 169 | const localKeyModTime = new Date(getLastModifiedDate(localKey)).getTime(); |
| 170 | if (remoteKeyModTime !== localKeyModTime) { |
| 171 | result.status = 'mod'; |
| 172 | } else { |
| 173 | result.status = 'sync'; |
| 174 | } |
| 175 | } catch (e) {} |
| 176 | return result; |
| 177 | } |
| 178 | |
| 179 | async syncKeyServer({emails, fingerprint, keyringId, sync}) { |
| 180 | let result; |
nothing calls this directly
no test coverage detected