Skip to content

Commit b813e7c

Browse files
authored
fix: bump @KILTprotocol jcs dependencies (#872)
* Bump @KILTprotocol jcs dependencies * Replace logic for decoding multikeys with our suite * Add TODO
1 parent 0ff63cd commit b813e7c

File tree

6 files changed

+79
-61
lines changed

6 files changed

+79
-61
lines changed

packages/credentials/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@
4141
"@kiltprotocol/chain-helpers": "workspace:*",
4242
"@kiltprotocol/config": "workspace:*",
4343
"@kiltprotocol/did": "workspace:*",
44-
"@kiltprotocol/eddsa-jcs-2022": "0.1.0-rc.2",
45-
"@kiltprotocol/es256k-jcs-2023": "0.1.0-rc.2",
46-
"@kiltprotocol/jcs-data-integrity-proofs-common": "0.1.0-rc.2",
47-
"@kiltprotocol/sr25519-jcs-2023": "0.1.0-rc.2",
44+
"@kiltprotocol/eddsa-jcs-2022": "0.1.0-rc.3",
45+
"@kiltprotocol/es256k-jcs-2023": "0.1.0-rc.3",
46+
"@kiltprotocol/jcs-data-integrity-proofs-common": "0.1.0-rc.3",
47+
"@kiltprotocol/sr25519-jcs-2023": "0.1.0-rc.3",
4848
"@kiltprotocol/types": "workspace:*",
4949
"@kiltprotocol/utils": "workspace:*",
5050
"@polkadot/api": "^12.0.0",

packages/did/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,15 @@
4040
"@digitalbazaar/multikey-context": "^2.0.1",
4141
"@digitalbazaar/security-context": "^1.0.1",
4242
"@kiltprotocol/config": "workspace:*",
43+
"@kiltprotocol/jcs-data-integrity-proofs-common": "0.1.0-rc.3",
4344
"@kiltprotocol/types": "workspace:*",
4445
"@kiltprotocol/utils": "workspace:*",
4546
"@polkadot/api": "^12.0.0",
4647
"@polkadot/keyring": "^13.0.0",
4748
"@polkadot/types": "^12.0.0",
4849
"@polkadot/util": "^13.0.0",
49-
"@polkadot/util-crypto": "^13.0.0"
50+
"@polkadot/util-crypto": "^13.0.0",
51+
"varint": "^6.0.0"
5052
},
5153
"peerDependenciesMeta": {
5254
"@kiltprotocol/augment-api": {

packages/did/src/Did.utils.ts

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,10 @@
55
* found in the LICENSE file in the root directory of this source tree.
66
*/
77

8-
import {
9-
blake2AsU8a,
10-
encodeAddress,
11-
base58Decode,
12-
base58Encode,
13-
} from '@polkadot/util-crypto'
8+
import { blake2AsU8a, encodeAddress, base58Encode } from '@polkadot/util-crypto'
9+
import { u8aConcat } from '@polkadot/util'
1410
import type {
11+
Base58BtcMultibaseString,
1512
Did,
1613
DidUrl,
1714
KeyringPair,
@@ -20,6 +17,9 @@ import type {
2017
VerificationMethod,
2118
} from '@kiltprotocol/types'
2219
import { DataUtils, SDKErrors, ss58Format } from '@kiltprotocol/utils'
20+
// @ts-expect-error Not a typescript module
21+
import * as varint from 'varint'
22+
import { decodeBase58BtcMultikey } from '@kiltprotocol/jcs-data-integrity-proofs-common'
2323

2424
import type { DidVerificationMethodType } from './DidDetails/DidDetails.js'
2525
import { parseDocumentFromLightDid } from './DidDetails/LightDidDetails.js'
@@ -161,31 +161,36 @@ const multicodecReversePrefixes: Record<DidVerificationMethodType, number> = {
161161
export function multibaseKeyToDidKey(
162162
publicKeyMultibase: VerificationMethod['publicKeyMultibase']
163163
): DecodedVerificationMethod {
164-
if (!publicKeyMultibase.startsWith('z')) {
165-
throw new SDKErrors.DidError(`invalid format for '${publicKeyMultibase}'`)
166-
}
167-
const decodedMulticodecPublicKey = base58Decode(publicKeyMultibase.slice(1))
168-
const [keyTypeFlag, publicKey] = [
169-
decodedMulticodecPublicKey.subarray(0, 1)[0],
170-
decodedMulticodecPublicKey.subarray(1),
171-
]
172-
const [keyType, expectedPublicKeyLength] = multicodecPrefixes[keyTypeFlag]
164+
const { keyBytes, prefix } = decodeBase58BtcMultikey(publicKeyMultibase)
165+
166+
const [keyType, expectedPublicKeyLength] = multicodecPrefixes[prefix]
173167
if (keyType === undefined) {
174168
throw new SDKErrors.DidError(
175169
`Cannot decode key type for multibase key "${publicKeyMultibase}".`
176170
)
177171
}
178-
if (publicKey.length !== expectedPublicKeyLength) {
172+
if (keyBytes.length !== expectedPublicKeyLength) {
179173
throw new SDKErrors.DidError(
180-
`Key of type "${keyType}" is expected to be ${expectedPublicKeyLength} bytes long. Provided key is ${publicKey.length} bytes long instead.`
174+
`Key of type "${keyType}" is expected to be ${expectedPublicKeyLength} bytes long. Provided key is ${keyBytes.length} bytes long instead.`
181175
)
182176
}
183177
return {
184178
keyType,
185-
publicKey,
179+
publicKey: keyBytes,
186180
}
187181
}
188182

183+
// TODO: This could also be exposed in a new release candidate of the `@kiltprotocol/jcs-data-integrity-proofs-common` package.
184+
function multibase58BtcKeyBytesEncoding(
185+
key: Uint8Array,
186+
keyPrefix: number
187+
): Base58BtcMultibaseString {
188+
const varintEncodedPrefix = varint.encode(keyPrefix)
189+
const prefixedKey = u8aConcat(varintEncodedPrefix, key)
190+
const base58BtcEncodedKey = base58Encode(prefixedKey)
191+
return `z${base58BtcEncodedKey}`
192+
}
193+
189194
/**
190195
* Calculate the Multikey representation of a keypair given its type and public key.
191196
*
@@ -212,11 +217,12 @@ export function keypairToMultibaseKey({
212217
`Key of type "${type}" is expected to be ${expectedPublicKeySize} bytes long. Provided key is ${publicKey.length} bytes long instead.`
213218
)
214219
}
215-
const multiCodecPublicKey = [multiCodecPublicKeyPrefix, ...publicKey]
216-
217-
const encodedPublicKey = base58Encode(Uint8Array.from(multiCodecPublicKey))
220+
const prefixedEncodedPublicKey = multibase58BtcKeyBytesEncoding(
221+
publicKey,
222+
multiCodecPublicKeyPrefix
223+
)
218224

219-
return `z${encodedPublicKey}`
225+
return prefixedEncodedPublicKey
220226
}
221227

222228
/**
@@ -246,10 +252,10 @@ export function didKeyToVerificationMethod<IdType extends DidUrl | UriFragment>(
246252
`Key of type "${keyType}" is expected to be ${expectedPublicKeySize} bytes long. Provided key is ${publicKey.length} bytes long instead.`
247253
)
248254
}
249-
const multiCodecPublicKey = [multiCodecPublicKeyPrefix, ...publicKey]
250-
251-
const encodedPublicKey = base58Encode(Uint8Array.from(multiCodecPublicKey))
252-
const prefixedEncodedPublicKey = `z${encodedPublicKey}` as const
255+
const prefixedEncodedPublicKey = multibase58BtcKeyBytesEncoding(
256+
publicKey,
257+
multiCodecPublicKeyPrefix
258+
)
253259

254260
return {
255261
controller,

packages/types/src/Did.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export type DidSignature = {
4747
signature: string
4848
}
4949

50-
type Base58BtcMultibaseString = `z${string}`
50+
export type Base58BtcMultibaseString = `z${string}`
5151

5252
/**
5353
* The verification method of a DID.

packages/utils/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@
3535
"typescript": "^4.8.3"
3636
},
3737
"dependencies": {
38-
"@kiltprotocol/eddsa-jcs-2022": "0.1.0-rc.2",
39-
"@kiltprotocol/es256k-jcs-2023": "0.1.0-rc.2",
40-
"@kiltprotocol/sr25519-jcs-2023": "0.1.0-rc.2",
38+
"@kiltprotocol/eddsa-jcs-2022": "0.1.0-rc.3",
39+
"@kiltprotocol/es256k-jcs-2023": "0.1.0-rc.3",
40+
"@kiltprotocol/sr25519-jcs-2023": "0.1.0-rc.3",
4141
"@kiltprotocol/types": "workspace:*",
4242
"@polkadot/api": "^12.0.0",
4343
"@polkadot/keyring": "^13.0.0",

yarn.lock

Lines changed: 36 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2072,10 +2072,10 @@ __metadata:
20722072
"@kiltprotocol/chain-helpers": "workspace:*"
20732073
"@kiltprotocol/config": "workspace:*"
20742074
"@kiltprotocol/did": "workspace:*"
2075-
"@kiltprotocol/eddsa-jcs-2022": "npm:0.1.0-rc.2"
2076-
"@kiltprotocol/es256k-jcs-2023": "npm:0.1.0-rc.2"
2077-
"@kiltprotocol/jcs-data-integrity-proofs-common": "npm:0.1.0-rc.2"
2078-
"@kiltprotocol/sr25519-jcs-2023": "npm:0.1.0-rc.2"
2075+
"@kiltprotocol/eddsa-jcs-2022": "npm:0.1.0-rc.3"
2076+
"@kiltprotocol/es256k-jcs-2023": "npm:0.1.0-rc.3"
2077+
"@kiltprotocol/jcs-data-integrity-proofs-common": "npm:0.1.0-rc.3"
2078+
"@kiltprotocol/sr25519-jcs-2023": "npm:0.1.0-rc.3"
20792079
"@kiltprotocol/types": "workspace:*"
20802080
"@kiltprotocol/utils": "workspace:*"
20812081
"@polkadot/api": "npm:^12.0.0"
@@ -2102,6 +2102,7 @@ __metadata:
21022102
"@digitalbazaar/multikey-context": "npm:^2.0.1"
21032103
"@digitalbazaar/security-context": "npm:^1.0.1"
21042104
"@kiltprotocol/config": "workspace:*"
2105+
"@kiltprotocol/jcs-data-integrity-proofs-common": "npm:0.1.0-rc.3"
21052106
"@kiltprotocol/types": "workspace:*"
21062107
"@kiltprotocol/utils": "workspace:*"
21072108
"@polkadot/api": "npm:^12.0.0"
@@ -2111,6 +2112,7 @@ __metadata:
21112112
"@polkadot/util-crypto": "npm:^13.0.0"
21122113
rimraf: "npm:^3.0.2"
21132114
typescript: "npm:^4.8.3"
2115+
varint: "npm:^6.0.0"
21142116
peerDependencies:
21152117
"@kiltprotocol/augment-api": "*"
21162118
peerDependenciesMeta:
@@ -2119,37 +2121,38 @@ __metadata:
21192121
languageName: unknown
21202122
linkType: soft
21212123

2122-
"@kiltprotocol/eddsa-jcs-2022@npm:0.1.0-rc.2":
2123-
version: 0.1.0-rc.2
2124-
resolution: "@kiltprotocol/eddsa-jcs-2022@npm:0.1.0-rc.2"
2124+
"@kiltprotocol/eddsa-jcs-2022@npm:0.1.0-rc.3":
2125+
version: 0.1.0-rc.3
2126+
resolution: "@kiltprotocol/eddsa-jcs-2022@npm:0.1.0-rc.3"
21252127
dependencies:
2126-
"@kiltprotocol/jcs-data-integrity-proofs-common": "npm:^0.1.0-rc.2"
2128+
"@kiltprotocol/jcs-data-integrity-proofs-common": "npm:^0.1.0-rc.3"
21272129
"@noble/curves": "npm:^1.0.0"
21282130
"@scure/base": "npm:^1.1.1"
2129-
checksum: 10c0/b97ba7c517dec33a670d5f7f906f8f49e7734aeec411c7d15c1560f5d89d70fc77553ec5ee188e9734b827016889d1bac0e2982de403c30356cc8b3bd286f9b5
2131+
checksum: 10c0/b29228114faf0322bf21a372c2c4c99379d9d9006bb9a94a7029211bce47321f185ea2fe8182499ac4bcdaa5dd4aad0eafccea1e22cfbcb16058be17a0c3c164
21302132
languageName: node
21312133
linkType: hard
21322134

2133-
"@kiltprotocol/es256k-jcs-2023@npm:0.1.0-rc.2":
2134-
version: 0.1.0-rc.2
2135-
resolution: "@kiltprotocol/es256k-jcs-2023@npm:0.1.0-rc.2"
2135+
"@kiltprotocol/es256k-jcs-2023@npm:0.1.0-rc.3":
2136+
version: 0.1.0-rc.3
2137+
resolution: "@kiltprotocol/es256k-jcs-2023@npm:0.1.0-rc.3"
21362138
dependencies:
2137-
"@kiltprotocol/jcs-data-integrity-proofs-common": "npm:^0.1.0-rc.2"
2139+
"@kiltprotocol/jcs-data-integrity-proofs-common": "npm:^0.1.0-rc.3"
21382140
"@noble/curves": "npm:^1.0.0"
21392141
"@scure/base": "npm:^1.1.1"
2140-
checksum: 10c0/e8575863eac40d87636184a9889665cd651e2754535097243a4524fb483ea5cd75e471a7b376c112d16ecac33413a99f8b32dd147a677e37336f910d253a6b20
2142+
checksum: 10c0/02347bc7f199833b35995f89f4c13b02211ada54707f086896f841dd64bee1edf332c4e5139343d3d89b990c21fafd27de633e2c5a9c7106b6d5b91901e3d53e
21412143
languageName: node
21422144
linkType: hard
21432145

2144-
"@kiltprotocol/jcs-data-integrity-proofs-common@npm:0.1.0-rc.2, @kiltprotocol/jcs-data-integrity-proofs-common@npm:^0.1.0-rc.2":
2145-
version: 0.1.0-rc.2
2146-
resolution: "@kiltprotocol/jcs-data-integrity-proofs-common@npm:0.1.0-rc.2"
2146+
"@kiltprotocol/jcs-data-integrity-proofs-common@npm:0.1.0-rc.3, @kiltprotocol/jcs-data-integrity-proofs-common@npm:^0.1.0-rc.3":
2147+
version: 0.1.0-rc.3
2148+
resolution: "@kiltprotocol/jcs-data-integrity-proofs-common@npm:0.1.0-rc.3"
21472149
dependencies:
21482150
"@noble/hashes": "npm:^1.3.0"
21492151
canonicalize: "npm:^2.0.0"
2152+
varint: "npm:^6.0.0"
21502153
peerDependencies:
21512154
"@scure/base": ^1.1.0
2152-
checksum: 10c0/3e65a51695eb80be81c392c3851fccacb5beb880bc093744bcdaf73c3e9b70c363701a0d10d1050bd5b411856979cddb2e65ac7fed8db4cb47cf2d55a7307a21
2155+
checksum: 10c0/0006f1d429bf34b4a1619f344cd194556906d9988cebf6f6d28a730689ca4e7c24e0dcff25f5f03150210f6fcb97b87d014af7cd80a55200baecbc3abcd1491e
21532156
languageName: node
21542157
linkType: hard
21552158

@@ -2213,14 +2216,14 @@ __metadata:
22132216
languageName: unknown
22142217
linkType: soft
22152218

2216-
"@kiltprotocol/sr25519-jcs-2023@npm:0.1.0-rc.2":
2217-
version: 0.1.0-rc.2
2218-
resolution: "@kiltprotocol/sr25519-jcs-2023@npm:0.1.0-rc.2"
2219+
"@kiltprotocol/sr25519-jcs-2023@npm:0.1.0-rc.3":
2220+
version: 0.1.0-rc.3
2221+
resolution: "@kiltprotocol/sr25519-jcs-2023@npm:0.1.0-rc.3"
22192222
dependencies:
2220-
"@kiltprotocol/jcs-data-integrity-proofs-common": "npm:^0.1.0-rc.2"
2223+
"@kiltprotocol/jcs-data-integrity-proofs-common": "npm:^0.1.0-rc.3"
22212224
"@polkadot/util-crypto": "npm:^12.0.1"
22222225
"@scure/base": "npm:^1.1.1"
2223-
checksum: 10c0/fd56ad4815df46b9fae904f4a638df7db8e2d81a6ea18e16b41a5471cd7334beed9727e019e26b2d2c7abea213da4e585181788cc2918a8975c844646e8a6297
2226+
checksum: 10c0/789d06939bed32e41f4543427f3eb32773fd39385ff1f09ff9df345f620c1fe67a1e249e1afef29f4b054e2a79388ff1fea59dd26136565d95f7bf7bda248c0f
22242227
languageName: node
22252228
linkType: hard
22262229

@@ -2249,9 +2252,9 @@ __metadata:
22492252
version: 0.0.0-use.local
22502253
resolution: "@kiltprotocol/utils@workspace:packages/utils"
22512254
dependencies:
2252-
"@kiltprotocol/eddsa-jcs-2022": "npm:0.1.0-rc.2"
2253-
"@kiltprotocol/es256k-jcs-2023": "npm:0.1.0-rc.2"
2254-
"@kiltprotocol/sr25519-jcs-2023": "npm:0.1.0-rc.2"
2255+
"@kiltprotocol/eddsa-jcs-2022": "npm:0.1.0-rc.3"
2256+
"@kiltprotocol/es256k-jcs-2023": "npm:0.1.0-rc.3"
2257+
"@kiltprotocol/sr25519-jcs-2023": "npm:0.1.0-rc.3"
22552258
"@kiltprotocol/types": "workspace:*"
22562259
"@polkadot/api": "npm:^12.0.0"
22572260
"@polkadot/keyring": "npm:^13.0.0"
@@ -9998,6 +10001,13 @@ __metadata:
999810001
languageName: node
999910002
linkType: hard
1000010003

10004+
"varint@npm:^6.0.0":
10005+
version: 6.0.0
10006+
resolution: "varint@npm:6.0.0"
10007+
checksum: 10c0/737fc37088a62ed3bd21466e318d21ca7ac4991d0f25546f518f017703be4ed0f9df1c5559f1dd533dddba4435a1b758fd9230e4772c1a930ef72b42f5c750fd
10008+
languageName: node
10009+
linkType: hard
10010+
1000110011
"vscode-oniguruma@npm:^1.7.0":
1000210012
version: 1.7.0
1000310013
resolution: "vscode-oniguruma@npm:1.7.0"

0 commit comments

Comments
 (0)