• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

KarpelesLab / libwallet / 27535646822
24%

Build:
DEFAULT BRANCH: master
Ran 15 Jun 2026 09:07AM UTC
Jobs 1
Files 128
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

15 Jun 2026 09:04AM UTC coverage: 23.618% (+0.2%) from 23.459%
27535646822

push

github

MagicalTux
wltwallet: fix dkls23 RemoteKey wrapper mismatch + activate real-infra tests + bump 0.4.61

Two findings surfaced when we wired the test ClientID
(com.ellipx.walletapp) via TestMain and removed the hard t.Skip
on TestRemoteWallet / TestEdDSALocalToRemoteReshare:

1. dkls23 RemoteKey shares were uploaded in the wrong wire shape.
   libwallet wraps the dklstss.Save() bytes in dklsKeyWrapper{Data:
   bytes} so they round-trip through the local JSON encrypt path
   (the wrapper exists because dklstss.Save() is binary and doesn't
   marshal as JSON on its own). But the SAME wrapper is what gets
   uploaded to Crypto/WalletSign:setGeneratedKey, and wdrone's
   loadShare unmarshals the decrypted bottle into a `[]byte` target:

       case "dkls23":
           var raw []byte
           if _, err = op.UnmarshalCbor(dat, &raw); err != nil { ... }

   The cryptutil opener reads the bottle's `ct` header ("json"
   because libwallet uses MarshalJson) and runs json.Unmarshal(buf,
   *[]byte). A bare []byte JSON-marshals to a base64 string and
   round-trips straight back into []byte; the wrapper object
   ({"data":"..."}) fails with `cannot unmarshal object into Go
   value of type []uint8` — which is exactly the wdrone error
   TestRemoteWallet caught against the live fleet.

   RemoteKey shares are never decrypted client-side (they live on
   wdrone), so the wrapper is purely local-convenience for that
   type. encrypt() now keeps the wrapper for StoreKey / Password
   (decryptDkls23 still expects it) and ships raw Save() bytes for
   RemoteKey. Verified by running TestRemoteWallet 3× against the
   live backend: 2/3 PASS (15s and 108s), 1/3 SKIP on peer-ping
   flake — full create → upload → reshare → re-upload succeeds.

2. TestRemoteWallet was passing all 3 wallet keys as the reshare
   old committee. ReshareDkls's guard `requires exactly T+1=2 old
   signers in the active subset, got 3` rejected this. Now picks
   one Plain + the RemoteKey, the same shape an ... (continued)

19 of 19 new or added lines in 1 file covered. (100.0%)

3 existing lines in 1 file now uncovered.

4427 of 18744 relevant lines covered (23.62%)

100.55 hits per line

Coverage Regressions

Lines Coverage ∆ File
3
70.0
43.33% wltwallet/clientid.go
Jobs
ID Job ID Ran Files Coverage
1 27535646822.1 15 Jun 2026 09:07AM UTC 128
23.62
GitHub Action Run
Source Files on build 27535646822
  • Tree
  • List 128
  • Changed 3
  • Source Changed 1
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #27535646822
  • 3ae8fb9c on github
  • Prev Build on master (#27532682092)
  • Next Build on master (#27538228859)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc