core-crypto
core-crypto copied to clipboard
refactor: improve keystore [WPB-3374]
What's new in this PR
Optimizing save() method on may entities.
PR Submission Checklist for internal contributors
- The PR Title
- [x] conforms to the style of semantic commits messages¹ supported in Wire's Github Workflow²
- [x] contains a reference JIRA issue number like
SQPIT-764 - [x] answers the question: If merged, this PR will: ... ³
- https://sparkbox.com/foundry/semantic_commit_messages
- https://github.com/wireapp/.github#usage
- E.g.
feat(conversation-list): Sort conversations by most emojis in the title #SQPIT-764.
Bencher
| Report | Wed, August 21, 2024 at 08:30:38 UTC |
| Project | core-crypto |
| Branch | simon/refactor/improve-keystore |
| Testbed | ubuntu-latest |
Click to view all benchmark results
| Benchmark | Latency | Latency Results nanoseconds (ns) | (Δ%) |
|---|---|---|
| Commit add f(group size)/cs1/mem/1002 | ✅ (view plot) | 14,070,000.00 |
| Commit add f(group size)/cs1/mem/2 | ✅ (view plot) | 765,690.00 |
| Commit add f(group size)/cs1/mem/202 | ✅ (view plot) | 3,435,900.00 |
| Commit add f(group size)/cs1/mem/402 | ✅ (view plot) | 6,357,700.00 |
| Commit add f(group size)/cs1/mem/602 | ✅ (view plot) | 9,565,000.00 |
| Commit add f(group size)/cs1/mem/802 | ✅ (view plot) | 11,656,000.00 |
| Commit add f(number clients)/cs1/mem/1002 | ✅ (view plot) | 999,600,000.00 |
| Commit add f(number clients)/cs1/mem/2 | ✅ (view plot) | 776,830.00 |
| Commit add f(number clients)/cs1/mem/202 | ✅ (view plot) | 79,234,000.00 |
| Commit add f(number clients)/cs1/mem/402 | ✅ (view plot) | 217,580,000.00 |
| Commit add f(number clients)/cs1/mem/602 | ✅ (view plot) | 430,200,000.00 |
| Commit add f(number clients)/cs1/mem/802 | ✅ (view plot) | 685,280,000.00 |
| Commit pending proposals f(group size)/cs1/mem/1002 | ✅ (view plot) | 113,840,000.00 |
| Commit pending proposals f(group size)/cs1/mem/2 | ✅ (view plot) | 22,430,000.00 |
| Commit pending proposals f(group size)/cs1/mem/202 | ✅ (view plot) | 40,866,000.00 |
| Commit pending proposals f(group size)/cs1/mem/402 | ✅ (view plot) | 55,771,000.00 |
| Commit pending proposals f(group size)/cs1/mem/602 | ✅ (view plot) | 75,320,000.00 |
| Commit pending proposals f(group size)/cs1/mem/802 | ✅ (view plot) | 90,537,000.00 |
| Commit pending proposals f(pending size)/cs1/mem/1 | ✅ (view plot) | 13,730,000.00 |
| Commit pending proposals f(pending size)/cs1/mem/101 | ✅ (view plot) | 116,250,000.00 |
| Commit pending proposals f(pending size)/cs1/mem/21 | ✅ (view plot) | 30,715,000.00 |
| Commit pending proposals f(pending size)/cs1/mem/41 | ✅ (view plot) | 52,652,000.00 |
| Commit pending proposals f(pending size)/cs1/mem/61 | ✅ (view plot) | 72,525,000.00 |
| Commit pending proposals f(pending size)/cs1/mem/81 | ✅ (view plot) | 92,055,000.00 |
| Commit remove f(group size)/cs1/mem/1002 | ✅ (view plot) | 19,263,000.00 |
| Commit remove f(group size)/cs1/mem/2 | ✅ (view plot) | 546,910.00 |
| Commit remove f(group size)/cs1/mem/202 | ✅ (view plot) | 2,171,700.00 |
| Commit remove f(group size)/cs1/mem/402 | ✅ (view plot) | 4,987,500.00 |
| Commit remove f(group size)/cs1/mem/602 | ✅ (view plot) | 9,769,000.00 |
| Commit remove f(group size)/cs1/mem/802 | ✅ (view plot) | 13,669,000.00 |
| Commit remove f(number clients)/cs1/mem/1002 | ✅ (view plot) | 22,142,000.00 |
| Commit remove f(number clients)/cs1/mem/2 | ✅ (view plot) | 130,830,000.00 |
| Commit remove f(number clients)/cs1/mem/202 | ✅ (view plot) | 108,700,000.00 |
| Commit remove f(number clients)/cs1/mem/402 | ✅ (view plot) | 86,174,000.00 |
| Commit remove f(number clients)/cs1/mem/602 | ✅ (view plot) | 64,348,000.00 |
| Commit remove f(number clients)/cs1/mem/802 | ✅ (view plot) | 44,170,000.00 |
| Commit update f(group size)/cs1/mem/1002 | ✅ (view plot) | 130,220,000.00 |
| Commit update f(group size)/cs1/mem/2 | ✅ (view plot) | 703,140.00 |
| Commit update f(group size)/cs1/mem/202 | ✅ (view plot) | 26,978,000.00 |
| Commit update f(group size)/cs1/mem/402 | ✅ (view plot) | 53,006,000.00 |
| Commit update f(group size)/cs1/mem/602 | ✅ (view plot) | 79,868,000.00 |
| Commit update f(group size)/cs1/mem/802 | ✅ (view plot) | 105,080,000.00 |
| Count KeyPackage/cs1/mem/1002 | ✅ (view plot) | 3,822,900.00 |
| Count KeyPackage/cs1/mem/2 | ✅ (view plot) | 441,020.00 |
| Count KeyPackage/cs1/mem/202 | ✅ (view plot) | 815,480.00 |
| Count KeyPackage/cs1/mem/402 | ✅ (view plot) | 1,565,600.00 |
| Count KeyPackage/cs1/mem/602 | ✅ (view plot) | 2,312,600.00 |
| Count KeyPackage/cs1/mem/802 | ✅ (view plot) | 3,057,400.00 |
| Create group/cs1/mem | ✅ (view plot) | 295,130.00 |
| Decrypt f(msg size)/cs1/mem/10 | ✅ (view plot) | 246,020.00 |
| Decrypt f(msg size)/cs1/mem/10010 | ✅ (view plot) | 287,300.00 |
| Decrypt f(msg size)/cs1/mem/2010 | ✅ (view plot) | 248,940.00 |
| Decrypt f(msg size)/cs1/mem/4010 | ✅ (view plot) | 258,540.00 |
| Decrypt f(msg size)/cs1/mem/6010 | ✅ (view plot) | 264,230.00 |
| Decrypt f(msg size)/cs1/mem/8010 | ✅ (view plot) | 276,030.00 |
| Encrypt f(group size)/cs1/mem/1002 | ✅ (view plot) | 1,044,100.00 |
| Encrypt f(group size)/cs1/mem/2 | ✅ (view plot) | 267,900.00 |
| Encrypt f(group size)/cs1/mem/202 | ✅ (view plot) | 448,560.00 |
| Encrypt f(group size)/cs1/mem/402 | ✅ (view plot) | 658,350.00 |
| Encrypt f(group size)/cs1/mem/602 | ✅ (view plot) | 747,160.00 |
| Encrypt f(group size)/cs1/mem/802 | ✅ (view plot) | 881,700.00 |
| Encrypt f(msg size)/cs1/mem/10 | ✅ (view plot) | 1,068,600.00 |
| Encrypt f(msg size)/cs1/mem/10010 | ✅ (view plot) | 1,086,700.00 |
| Encrypt f(msg size)/cs1/mem/2010 | ✅ (view plot) | 1,081,200.00 |
| Encrypt f(msg size)/cs1/mem/4010 | ✅ (view plot) | 1,028,600.00 |
| Encrypt f(msg size)/cs1/mem/6010 | ✅ (view plot) | 1,019,900.00 |
| Encrypt f(msg size)/cs1/mem/8010 | ✅ (view plot) | 1,356,600.00 |
| Generate KeyPackage f(group size)/cs1/mem/1002 | ✅ (view plot) | 195,640,000.00 |
| Generate KeyPackage f(group size)/cs1/mem/2 | ✅ (view plot) | 514,660.00 |
| Generate KeyPackage f(group size)/cs1/mem/202 | ✅ (view plot) | 22,627,000.00 |
| Generate KeyPackage f(group size)/cs1/mem/402 | ✅ (view plot) | 65,041,000.00 |
| Generate KeyPackage f(group size)/cs1/mem/602 | ✅ (view plot) | 108,280,000.00 |
| Generate KeyPackage f(group size)/cs1/mem/802 | ✅ (view plot) | 151,980,000.00 |
| Join from external commit f(group size)/cs1/mem/1002 | ✅ (view plot) | 234,680,000.00 |
| Join from external commit f(group size)/cs1/mem/2 | ✅ (view plot) | 1,466,700.00 |
| Join from external commit f(group size)/cs1/mem/202 | ✅ (view plot) | 48,443,000.00 |
| Join from external commit f(group size)/cs1/mem/402 | ✅ (view plot) | 95,262,000.00 |
| Join from external commit f(group size)/cs1/mem/602 | ✅ (view plot) | 143,330,000.00 |
| Join from external commit f(group size)/cs1/mem/802 | ✅ (view plot) | 188,490,000.00 |
| Join from welcome f(group size)/cs1/mem/1002 | ✅ (view plot) | 105,900,000.00 |
| Join from welcome f(group size)/cs1/mem/2 | ✅ (view plot) | 912,440.00 |
| Join from welcome f(group size)/cs1/mem/202 | ✅ (view plot) | 21,943,000.00 |
| Join from welcome f(group size)/cs1/mem/402 | ✅ (view plot) | 42,987,000.00 |
| Join from welcome f(group size)/cs1/mem/602 | ✅ (view plot) | 64,335,000.00 |
| Join from welcome f(group size)/cs1/mem/802 | ✅ (view plot) | 85,418,000.00 |
| Mls vs Proteus: add/MLS/mem/1 | ✅ (view plot) | 784,420.00 |
| Mls vs Proteus: add/MLS/mem/101 | ✅ (view plot) | 2,155,100.00 |
| Mls vs Proteus: add/MLS/mem/21 | ✅ (view plot) | 1,063,600.00 |
| Mls vs Proteus: add/MLS/mem/41 | ✅ (view plot) | 1,363,100.00 |
| Mls vs Proteus: add/MLS/mem/61 | ✅ (view plot) | 1,602,900.00 |
| Mls vs Proteus: add/MLS/mem/81 | ✅ (view plot) | 1,953,200.00 |
| Mls vs Proteus: add/Proteus/mem/1 | ✅ (view plot) | 428,810.00 |
| Mls vs Proteus: add/Proteus/mem/101 | ✅ (view plot) | 34,897,000.00 |
| Mls vs Proteus: add/Proteus/mem/21 | ✅ (view plot) | 7,238,800.00 |
| Mls vs Proteus: add/Proteus/mem/41 | ✅ (view plot) | 14,058,000.00 |
| Mls vs Proteus: add/Proteus/mem/61 | ✅ (view plot) | 20,801,000.00 |
| Mls vs Proteus: add/Proteus/mem/81 | ✅ (view plot) | 27,614,000.00 |
| Mls vs Proteus: encrypt/MLS/mem/1 | ✅ (view plot) | 273,340.00 |
| Mls vs Proteus: encrypt/MLS/mem/101 | ✅ (view plot) | 371,990.00 |
| Mls vs Proteus: encrypt/MLS/mem/21 | ✅ (view plot) | 292,190.00 |
| Mls vs Proteus: encrypt/MLS/mem/41 | ✅ (view plot) | 303,200.00 |
| Mls vs Proteus: encrypt/MLS/mem/61 | ✅ (view plot) | 309,780.00 |
| Mls vs Proteus: encrypt/MLS/mem/81 | ✅ (view plot) | 341,380.00 |
| Mls vs Proteus: encrypt/Proteus/mem/1 | ✅ (view plot) | 174,910.00 |
| Mls vs Proteus: encrypt/Proteus/mem/101 | ✅ (view plot) | 8,274,100.00 |
| Mls vs Proteus: encrypt/Proteus/mem/21 | ✅ (view plot) | 1,922,200.00 |
| Mls vs Proteus: encrypt/Proteus/mem/41 | ✅ (view plot) | 3,436,000.00 |
| Mls vs Proteus: encrypt/Proteus/mem/61 | ✅ (view plot) | 5,026,500.00 |
| Mls vs Proteus: encrypt/Proteus/mem/81 | ✅ (view plot) | 6,720,900.00 |
| Mls vs Proteus: remove/MLS/mem/1 | ✅ (view plot) | 13,887,000.00 |
| Mls vs Proteus: remove/MLS/mem/101 | ✅ (view plot) | 1,795,900.00 |
| Mls vs Proteus: remove/MLS/mem/21 | ✅ (view plot) | 11,444,000.00 |
| Mls vs Proteus: remove/MLS/mem/41 | ✅ (view plot) | 8,996,100.00 |
| Mls vs Proteus: remove/MLS/mem/61 | ✅ (view plot) | 6,657,300.00 |
| Mls vs Proteus: remove/MLS/mem/81 | ✅ (view plot) | 4,215,500.00 |
| Mls vs Proteus: remove/Proteus/mem/1 | ✅ (view plot) | 80,922.00 |
| Mls vs Proteus: remove/Proteus/mem/101 | ✅ (view plot) | 606,380.00 |
| Mls vs Proteus: remove/Proteus/mem/21 | ✅ (view plot) | 250,380.00 |
| Mls vs Proteus: remove/Proteus/mem/41 | ✅ (view plot) | 301,280.00 |
| Mls vs Proteus: remove/Proteus/mem/61 | ✅ (view plot) | 390,120.00 |
| Mls vs Proteus: remove/Proteus/mem/81 | ✅ (view plot) | 600,610.00 |
| Mls vs Proteus: update/MLS/mem/1 | ✅ (view plot) | 695,960.00 |
| Mls vs Proteus: update/MLS/mem/101 | ✅ (view plot) | 13,898,000.00 |
| Mls vs Proteus: update/MLS/mem/21 | ✅ (view plot) | 3,480,400.00 |
| Mls vs Proteus: update/MLS/mem/41 | ✅ (view plot) | 6,141,800.00 |
| Mls vs Proteus: update/MLS/mem/61 | ✅ (view plot) | 8,680,800.00 |
| Mls vs Proteus: update/MLS/mem/81 | ✅ (view plot) | 11,426,000.00 |
| Mls vs Proteus: update/Proteus/mem/1 | ✅ (view plot) | 441,690.00 |
| Mls vs Proteus: update/Proteus/mem/101 | ✅ (view plot) | 35,175,000.00 |
| Mls vs Proteus: update/Proteus/mem/21 | ✅ (view plot) | 7,358,600.00 |
| Mls vs Proteus: update/Proteus/mem/41 | ✅ (view plot) | 14,367,000.00 |
| Mls vs Proteus: update/Proteus/mem/61 | ✅ (view plot) | 21,176,000.00 |
| Mls vs Proteus: update/Proteus/mem/81 | ✅ (view plot) | 28,068,000.00 |
Bencher - Continuous Benchmarking
View Public Perf Page
Docs | Repo | Chat | Help
Codecov Report
Attention: Patch coverage is 99.20635% with 2 lines in your changes missing coverage. Please review.
Project coverage is 79.03%. Comparing base (
a6fe3de) to head (9c4f5b4). Report is 22 commits behind head on develop.
| Files | Patch % | Lines |
|---|---|---|
| keystore/src/connection/platform/generic/mod.rs | 50.00% | 2 Missing :warning: |
Additional details and impacted files
@@ Coverage Diff @@
## develop #649 +/- ##
===========================================
+ Coverage 78.90% 79.03% +0.13%
===========================================
Files 99 99
Lines 20132 19885 -247
===========================================
- Hits 15885 15716 -169
+ Misses 4247 4169 -78
| Files | Coverage Δ | |
|---|---|---|
| keystore/src/entities/mod.rs | 87.87% <100.00%> (+11.95%) |
:arrow_up: |
| ...tore/src/entities/platform/generic/mls/e2ei_crl.rs | 94.59% <100.00%> (-0.65%) |
:arrow_down: |
| ...ies/platform/generic/mls/e2ei_intermediate_cert.rs | 95.41% <100.00%> (-0.50%) |
:arrow_down: |
| ...ntities/platform/generic/mls/encryption_keypair.rs | 98.08% <100.00%> (-0.11%) |
:arrow_down: |
| ...re/src/entities/platform/generic/mls/enrollment.rs | 97.36% <100.00%> (+24.56%) |
:arrow_up: |
| ...s/platform/generic/mls/epoch_encryption_keypair.rs | 100.00% <100.00%> (+26.74%) |
:arrow_up: |
| ...eystore/src/entities/platform/generic/mls/group.rs | 76.59% <100.00%> (-5.69%) |
:arrow_down: |
| .../entities/platform/generic/mls/hpke_private_key.rs | 100.00% <100.00%> (ø) |
|
| ...re/src/entities/platform/generic/mls/keypackage.rs | 100.00% <100.00%> (ø) |
|
| ...re/src/entities/platform/generic/mls/psk_bundle.rs | 100.00% <100.00%> (ø) |
|
| ... and 5 more |
Continue to review full report in Codecov by Sentry.
Legend - Click here to learn more
Δ = absolute <relative> (impact),ø = not affected,? = missing dataPowered by Codecov. Last update a6fe3de...9c4f5b4. Read the comment docs.
Commit 45022a30473fb4298ab2963630428e73bb774026 references mls_epoch_encryption_keypair table in its message, however the table is called mls_epoch_encryption_keypairs (note the s at the end).