Skip to content

Commit 6b1d135

Browse files
authoredSep 1, 2021
feat(key-manager): move private key storage to kms-local (#661)
BREAKING CHANGE: `keyManagetGet` no longer returns private key data BREAKING CHANGE: `KeyStore` no longer requires a `SecretBox` BREAKING CHANGE: `KeyManagementSystem` needs a `PrivateKeyStore` BREAKING CHANGE: @veramo/cli configuration version update to 3.0 If you're already working with Veramo and wish to upgrade existing agents to veramo 3.0, you'll have to make some changes to your configuration, depending on how you're using the framework. It boils down to these 3 steps: 1. Update your database connection to use migrations 2. Remove the `SecretBox` parameter from `KeyManager` 3. Add a `PrivateKeyStore` parameter to `KeyManagementSystem` with a `SecretBox` that you were using before with `KeyManager` (and keep the same encryption key) * feat(key-manager): move private key storage to kms-local fixes #539 fixes #540 fixes #680 * feat(data-store): add migration of key stores * fix(data-store): fix usage of where clause for queries * refactor(kms-local): simplify constructor for KeyManagementSystem * style: remove scar tissue and unused code
1 parent 32406d4 commit 6b1d135

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+992
-280
lines changed
 
Binary file not shown.

‎__tests__/initial.migration.test.ts

+25-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createAgent, TAgent, IDIDManager, IResolver, IKeyManager, IDataStore } from '@veramo/core/src'
1+
import { createAgent, TAgent, IDIDManager, IResolver, IKeyManager, IDataStore } from '../packages/core/src'
22
import { DIDResolverPlugin } from '../packages/did-resolver/src'
33
import { EthrDIDProvider } from '../packages/did-provider-ethr/src'
44
import { WebDIDProvider } from '../packages/did-provider-web/src'
@@ -13,13 +13,14 @@ import {
1313
KeyStore,
1414
DIDStore,
1515
migrations,
16+
PrivateKeyStore,
1617
} from '../packages/data-store/src'
17-
import { createConnection, Connection } from 'typeorm'
1818
import { getDidKeyResolver } from '../packages/did-provider-key/src'
1919
import { KeyManager } from '../packages/key-manager/src'
2020
import { DIDManager } from '../packages/did-manager/src'
2121
import { FakeDidProvider, FakeDidResolver } from './utils/fake-did'
2222

23+
import { createConnection, Connection } from 'typeorm'
2324
import { Resolver } from 'did-resolver'
2425
import { getResolver as ethrDidResolver } from 'ethr-did-resolver'
2526
import { getResolver as webDidResolver } from 'web-did-resolver'
@@ -32,7 +33,7 @@ const databaseFile = __dirname + '/migrated1.database.sqlite'
3233
const infuraProjectId = '5ffc47f65c4042ce847ef66a3fa70d4c'
3334
const secretKey = '29739248cad1bd1a0fc4d9b75cd4d2990de535baf5caadfdf8d8f86664aa830c'
3435

35-
describe('database migration tests', () => {
36+
describe('database initial migration tests', () => {
3637
describe('using pre-migration database fixture', () => {
3738
type TestingAgentPlugins = IDIDManager & IKeyManager & IDataStore & IDataStoreORM & IResolver & IDIDComm
3839
let agent: TAgent<TestingAgentPlugins>
@@ -58,9 +59,9 @@ describe('database migration tests', () => {
5859
},
5960
plugins: [
6061
new KeyManager({
61-
store: new KeyStore(dbConnection, new SecretBox(secretKey)),
62+
store: new KeyStore(dbConnection),
6263
kms: {
63-
local: new KeyManagementSystem(),
64+
local: new KeyManagementSystem(new PrivateKeyStore(dbConnection, new SecretBox(secretKey))),
6465
},
6566
}),
6667
new DIDManager({
@@ -102,6 +103,7 @@ describe('database migration tests', () => {
102103
})
103104

104105
it('signs using a migrated key', async () => {
106+
expect.assertions(2)
105107
// output of agent.keyManagerGet() before migration
106108
const key = {
107109
kid: '048bb0844ebbcf434048862008991b01cdebb564207f0cea08e5c8d925cec3542bb4c8c1630f38a6b05528ec7460139fe0978bf34a1e4ff32ec210bbaed98dddda',
@@ -128,12 +130,16 @@ describe('database migration tests', () => {
128130
})
129131

130132
it('reads a credential by hash', async () => {
131-
const cred = await agent.dataStoreGetVerifiableCredential({hash: '133b9636e2fe2b7a77b88ca5d81998773b8bc3ebe0b1f3f80dc419dfa0bb797bea779ba0946d603c3ea8611fee5148395894f327661531929294a61589d4d0e7'})
133+
const cred = await agent.dataStoreGetVerifiableCredential({
134+
hash: '133b9636e2fe2b7a77b88ca5d81998773b8bc3ebe0b1f3f80dc419dfa0bb797bea779ba0946d603c3ea8611fee5148395894f327661531929294a61589d4d0e7',
135+
})
132136
expect(cred.credentialSubject.name).toEqual('Alice')
133137
})
134138

135139
it('reads a presentation by hash', async () => {
136-
const cred = await agent.dataStoreGetVerifiablePresentation({hash: '4cfe965596a0d343ff2cc02afd32068bced34caa2b1e7e3f253b23e420de106b58a613f06f55d9d9cbbdbe0b0f051a45d44404020b123c58f0ee48bdaeafdc90'})
140+
const cred = await agent.dataStoreGetVerifiablePresentation({
141+
hash: '4cfe965596a0d343ff2cc02afd32068bced34caa2b1e7e3f253b23e420de106b58a613f06f55d9d9cbbdbe0b0f051a45d44404020b123c58f0ee48bdaeafdc90',
142+
})
137143
expect(cred?.verifiableCredential?.[0]?.credentialSubject?.name).toEqual('Alice')
138144
})
139145

@@ -144,15 +150,25 @@ describe('database migration tests', () => {
144150

145151
it('reads existing message with attachments', async () => {
146152
const msgs = await agent.dataStoreORMGetMessages({
147-
where: [{column: 'id', value: ['13065b8bb97cd37410f4f43cfa878f396aa906701e70c7e2bb86c5de1fe1351a41fb05f445cb68b1ba2805858db619ddd26c71e30a0079c200843d52276213d8']}]
153+
where: [
154+
{
155+
column: 'id',
156+
value: [
157+
'13065b8bb97cd37410f4f43cfa878f396aa906701e70c7e2bb86c5de1fe1351a41fb05f445cb68b1ba2805858db619ddd26c71e30a0079c200843d52276213d8',
158+
],
159+
},
160+
],
148161
})
149162
expect(msgs[0]?.presentations?.length).toEqual(1)
150163
expect(msgs[0]?.credentials?.length).toEqual(1)
151164
})
152165

153166
it('reads a credential by claim', async () => {
154167
const creds = await agent.dataStoreORMGetVerifiableCredentialsByClaims({
155-
where: [{ column: 'type', value: ['name'] }, { column: 'value', value: ['Alice']}]
168+
where: [
169+
{ column: 'type', value: ['name'] },
170+
{ column: 'value', value: ['Alice'] },
171+
],
156172
})
157173
expect(creds.length).toEqual(1)
158174
})

0 commit comments

Comments
 (0)
Please sign in to comment.