Skip to content

Commit c668eb8

Browse files
committed
Minor.
1 parent 26c60d9 commit c668eb8

File tree

1 file changed

+60
-41
lines changed

1 file changed

+60
-41
lines changed

keystore/admin_test.go

Lines changed: 60 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -212,57 +212,76 @@ func TestKeystore_ConcurrentCreateAndRead(t *testing.T) {
212212
}
213213

214214
func TestKeystore_ExportImport(t *testing.T) {
215-
t.Parallel()
216-
217215
ks1, err := keystore.LoadKeystore(t.Context(), keystore.NewMemoryStorage(), keystore.EncryptionParams{
218216
Password: "ks1",
219217
ScryptParams: keystore.FastScryptParams,
220218
})
221-
require.NoError(t, err)
222-
_, err = ks1.CreateKeys(t.Context(), keystore.CreateKeysRequest{
223-
Keys: []keystore.CreateKeyRequest{
224-
{KeyName: "key1", KeyType: keystore.Ed25519},
225-
},
226-
})
227-
require.NoError(t, err)
228-
exportParams := keystore.EncryptionParams{
229-
Password: "export-pass",
230-
ScryptParams: keystore.FastScryptParams,
231-
}
232-
exportResponse, err := ks1.ExportKeys(t.Context(), keystore.ExportKeysRequest{
233-
Keys: []keystore.ExportKeyParam{
234-
{KeyName: "key1", Enc: exportParams},
235-
},
236-
})
237-
require.Len(t, exportResponse.Keys, 1)
238219
ks2, err := keystore.LoadKeystore(t.Context(), keystore.NewMemoryStorage(), keystore.EncryptionParams{
239220
Password: "ks2",
240221
ScryptParams: keystore.FastScryptParams,
241222
})
242-
_, err = ks2.ImportKeys(t.Context(), keystore.ImportKeysRequest{
243-
Keys: []keystore.ImportKeyRequest{
244-
{KeyName: "key1", Enc: exportParams, Data: exportResponse.Keys[0].Data},
245-
},
246-
})
247-
require.NoError(t, err)
248223

249-
n1, err := ks1.GetKeys(t.Context(), keystore.GetKeysRequest{KeyNames: []string{"key1"}})
250-
require.NoError(t, err)
251-
n2, err := ks2.GetKeys(t.Context(), keystore.GetKeysRequest{KeyNames: []string{"key1"}})
252-
require.Equal(t, n1, n2)
224+
t.Run("export and import", func(t *testing.T) {
225+
exportParams := keystore.EncryptionParams{
226+
Password: "export-pass",
227+
ScryptParams: keystore.FastScryptParams,
228+
}
229+
_, err = ks1.CreateKeys(t.Context(), keystore.CreateKeysRequest{
230+
Keys: []keystore.CreateKeyRequest{
231+
{KeyName: "key1", KeyType: keystore.Ed25519},
232+
},
233+
})
234+
require.NoError(t, err)
235+
exportResponse, err := ks1.ExportKeys(t.Context(), keystore.ExportKeysRequest{
236+
Keys: []keystore.ExportKeyParam{
237+
{KeyName: "key1", Enc: exportParams},
238+
},
239+
})
240+
require.Len(t, exportResponse.Keys, 1)
241+
_, err = ks2.ImportKeys(t.Context(), keystore.ImportKeysRequest{
242+
Keys: []keystore.ImportKeyRequest{
243+
{KeyName: "key1", Enc: exportParams, Data: exportResponse.Keys[0].Data},
244+
},
245+
})
246+
require.NoError(t, err)
247+
key1ks1, err := ks1.GetKeys(t.Context(), keystore.GetKeysRequest{KeyNames: []string{"key1"}})
248+
require.NoError(t, err)
249+
key1ks2, err := ks2.GetKeys(t.Context(), keystore.GetKeysRequest{KeyNames: []string{"key1"}})
250+
require.Equal(t, key1ks1, key1ks2)
253251

254-
testData := []byte("hello world")
255-
signature, err := ks2.Sign(t.Context(), keystore.SignRequest{
256-
KeyName: "key1",
257-
Data: testData,
252+
// We cannot compare private keys directly, so we test that signing with key1 from ks1 and verifying
253+
// with key1 from ks2 works as if two keys are the same.
254+
testData := []byte("hello world")
255+
signature, err := ks2.Sign(t.Context(), keystore.SignRequest{
256+
KeyName: "key1",
257+
Data: testData,
258+
})
259+
require.NoError(t, err)
260+
verifyResp, err := ks1.Verify(t.Context(), keystore.VerifyRequest{
261+
KeyType: keystore.Ed25519,
262+
PublicKey: key1ks1.Keys[0].KeyInfo.PublicKey,
263+
Data: testData,
264+
Signature: signature.Signature,
265+
})
266+
require.NoError(t, err)
267+
require.True(t, verifyResp.Valid)
258268
})
259-
require.NoError(t, err)
260-
verifyResp, err := ks1.Verify(t.Context(), keystore.VerifyRequest{
261-
KeyType: keystore.Ed25519,
262-
PublicKey: n1.Keys[0].KeyInfo.PublicKey,
263-
Data: testData,
264-
Signature: signature.Signature,
269+
270+
t.Run("export non-existent key", func(t *testing.T) {
271+
_, err = ks1.ExportKeys(t.Context(), keystore.ExportKeysRequest{
272+
Keys: []keystore.ExportKeyParam{
273+
{KeyName: "key2", Enc: keystore.EncryptionParams{}},
274+
},
275+
})
276+
require.ErrorIs(t, err, keystore.ErrKeyNotFound)
277+
})
278+
279+
t.Run("import existing key", func(t *testing.T) {
280+
_, err = ks2.ImportKeys(t.Context(), keystore.ImportKeysRequest{
281+
Keys: []keystore.ImportKeyRequest{
282+
{KeyName: "key1", Enc: keystore.EncryptionParams{}, Data: []byte{}},
283+
},
284+
})
285+
require.ErrorIs(t, err, keystore.ErrKeyAlreadyExists)
265286
})
266-
require.NoError(t, err)
267-
require.True(t, verifyResp.Valid)
268287
}

0 commit comments

Comments
 (0)