@atproto/repo 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/dist/sync/consumer.d.ts +4 -4
- package/dist/sync/consumer.d.ts.map +1 -1
- package/dist/sync/consumer.js +2 -4
- package/dist/sync/consumer.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/sync/consumer.ts +12 -9
- package/src/types.ts +6 -0
- package/tests/_util.ts +0 -15
- package/tests/proofs.test.ts +35 -19
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @atproto/repo
|
|
2
2
|
|
|
3
|
+
## 0.5.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#2752](https://github.com/bluesky-social/atproto/pull/2752) [`b15dec2f4`](https://github.com/bluesky-social/atproto/commit/b15dec2f4feb25ac91b169c83ccff1adbb5a9442) Thanks [@dholms](https://github.com/dholms)! - Updated verifyProofs consumer method to verify Cid claims rather than record claims
|
|
8
|
+
|
|
9
|
+
## 0.4.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [[`ebb318325`](https://github.com/bluesky-social/atproto/commit/ebb318325b6e80c4ea1a93a617569da2698afe31)]:
|
|
14
|
+
- @atproto/crypto@0.4.1
|
|
15
|
+
|
|
3
16
|
## 0.4.2
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/dist/sync/consumer.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CID } from 'multiformats/cid';
|
|
2
2
|
import ReadableRepo from '../readable-repo';
|
|
3
|
-
import { RecordClaim, VerifiedDiff, VerifiedRepo } from '../types';
|
|
3
|
+
import { RecordClaim, RecordCidClaim, VerifiedDiff, VerifiedRepo } from '../types';
|
|
4
4
|
import BlockMap from '../block-map';
|
|
5
5
|
export declare const verifyRepoCar: (carBytes: Uint8Array, did?: string, signingKey?: string) => Promise<VerifiedRepo>;
|
|
6
6
|
export declare const verifyRepo: (blocks: BlockMap, head: CID, did?: string, signingKey?: string, opts?: {
|
|
@@ -12,9 +12,9 @@ export declare const verifyDiffCar: (repo: ReadableRepo | null, carBytes: Uint8A
|
|
|
12
12
|
export declare const verifyDiff: (repo: ReadableRepo | null, updateBlocks: BlockMap, updateRoot: CID, did?: string, signingKey?: string, opts?: {
|
|
13
13
|
ensureLeaves?: boolean;
|
|
14
14
|
}) => Promise<VerifiedDiff>;
|
|
15
|
-
export declare const verifyProofs: (proofs: Uint8Array, claims:
|
|
16
|
-
verified:
|
|
17
|
-
unverified:
|
|
15
|
+
export declare const verifyProofs: (proofs: Uint8Array, claims: RecordCidClaim[], did: string, didKey: string) => Promise<{
|
|
16
|
+
verified: RecordCidClaim[];
|
|
17
|
+
unverified: RecordCidClaim[];
|
|
18
18
|
}>;
|
|
19
19
|
export declare const verifyRecords: (proofs: Uint8Array, did: string, signingKey: string) => Promise<RecordClaim[]>;
|
|
20
20
|
export declare class RepoVerificationError extends Error {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../../src/sync/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAGtC,OAAO,YAAY,MAAM,kBAAkB,CAAA;AAE3C,OAAO,
|
|
1
|
+
{"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../../src/sync/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAGtC,OAAO,YAAY,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EACL,WAAW,EACX,cAAc,EACd,YAAY,EACZ,YAAY,EACb,MAAM,UAAU,CAAA;AAGjB,OAAO,QAAQ,MAAM,cAAc,CAAA;AAEnC,eAAO,MAAM,aAAa,aACd,UAAU,QACd,MAAM,eACC,MAAM,KAClB,QAAQ,YAAY,CAGtB,CAAA;AAED,eAAO,MAAM,UAAU,WACb,QAAQ,QACV,GAAG,QACH,MAAM,eACC,MAAM,SACZ;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,KAChC,QAAQ,YAAY,CAOtB,CAAA;AAED,eAAO,MAAM,aAAa,SAClB,YAAY,GAAG,IAAI,YACf,UAAU,QACd,MAAM,eACC,MAAM,SACZ;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,KAChC,QAAQ,YAAY,CAGtB,CAAA;AAED,eAAO,MAAM,UAAU,SACf,YAAY,GAAG,IAAI,gBACX,QAAQ,cACV,GAAG,QACT,MAAM,eACC,MAAM,SACZ;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,KAChC,QAAQ,YAAY,CAyCtB,CAAA;AAwBD,eAAO,MAAM,YAAY,WACf,UAAU,UACV,cAAc,EAAE,OACnB,MAAM,UACH,MAAM,KACb,QAAQ;IAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IAAC,UAAU,EAAE,cAAc,EAAE,CAAA;CAAE,CAoCtE,CAAA;AAED,eAAO,MAAM,aAAa,WAChB,UAAU,OACb,MAAM,cACC,MAAM,KACjB,QAAQ,WAAW,EAAE,CA6BvB,CAAA;AAED,qBAAa,qBAAsB,SAAQ,KAAK;CAAG"}
|
package/dist/sync/consumer.js
CHANGED
|
@@ -33,7 +33,6 @@ const readable_repo_1 = __importDefault(require("../readable-repo"));
|
|
|
33
33
|
const util = __importStar(require("../util"));
|
|
34
34
|
const types_1 = require("../types");
|
|
35
35
|
const mst_1 = require("../mst");
|
|
36
|
-
const common_1 = require("@atproto/common");
|
|
37
36
|
const verifyRepoCar = async (carBytes, did, signingKey) => {
|
|
38
37
|
const car = await util.readCarWithRoot(carBytes);
|
|
39
38
|
return (0, exports.verifyRepo)(car.blocks, car.root, did, signingKey);
|
|
@@ -123,7 +122,7 @@ const verifyProofs = async (proofs, claims, did, didKey) => {
|
|
|
123
122
|
for (const claim of claims) {
|
|
124
123
|
const found = await mst.get(util.formatDataKey(claim.collection, claim.rkey));
|
|
125
124
|
const record = found ? await blockstore.readObj(found, types_1.def.map) : null;
|
|
126
|
-
if (claim.
|
|
125
|
+
if (claim.cid === null) {
|
|
127
126
|
if (record === null) {
|
|
128
127
|
verified.push(claim);
|
|
129
128
|
}
|
|
@@ -132,8 +131,7 @@ const verifyProofs = async (proofs, claims, did, didKey) => {
|
|
|
132
131
|
}
|
|
133
132
|
}
|
|
134
133
|
else {
|
|
135
|
-
|
|
136
|
-
if (expected.equals(found)) {
|
|
134
|
+
if (claim.cid.equals(found)) {
|
|
137
135
|
verified.push(claim);
|
|
138
136
|
}
|
|
139
137
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../../src/sync/consumer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,wCAA8E;AAC9E,6DAAmC;AACnC,qEAA2C;AAC3C,8CAA+B;
|
|
1
|
+
{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../../src/sync/consumer.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -356,6 +356,11 @@ export type RecordPath = {
|
|
|
356
356
|
collection: string;
|
|
357
357
|
rkey: string;
|
|
358
358
|
};
|
|
359
|
+
export type RecordCidClaim = {
|
|
360
|
+
collection: string;
|
|
361
|
+
rkey: string;
|
|
362
|
+
cid: CID | null;
|
|
363
|
+
};
|
|
359
364
|
export type RecordClaim = {
|
|
360
365
|
collection: string;
|
|
361
366
|
rkey: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atproto/repo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "atproto repo and MST implementation",
|
|
6
6
|
"keywords": [
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"uint8arrays": "3.0.0",
|
|
23
23
|
"zod": "^3.23.8",
|
|
24
24
|
"@atproto/common": "^0.4.1",
|
|
25
|
-
"@atproto/crypto": "^0.4.0",
|
|
26
25
|
"@atproto/common-web": "^0.3.0",
|
|
26
|
+
"@atproto/crypto": "^0.4.1",
|
|
27
27
|
"@atproto/lexicon": "^0.4.1"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
package/src/sync/consumer.ts
CHANGED
|
@@ -3,10 +3,14 @@ import { MemoryBlockstore, ReadableBlockstore, SyncStorage } from '../storage'
|
|
|
3
3
|
import DataDiff from '../data-diff'
|
|
4
4
|
import ReadableRepo from '../readable-repo'
|
|
5
5
|
import * as util from '../util'
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
RecordClaim,
|
|
8
|
+
RecordCidClaim,
|
|
9
|
+
VerifiedDiff,
|
|
10
|
+
VerifiedRepo,
|
|
11
|
+
} from '../types'
|
|
7
12
|
import { def } from '../types'
|
|
8
13
|
import { MST } from '../mst'
|
|
9
|
-
import { cidForCbor } from '@atproto/common'
|
|
10
14
|
import BlockMap from '../block-map'
|
|
11
15
|
|
|
12
16
|
export const verifyRepoCar = async (
|
|
@@ -118,10 +122,10 @@ const verifyRepoRoot = async (
|
|
|
118
122
|
|
|
119
123
|
export const verifyProofs = async (
|
|
120
124
|
proofs: Uint8Array,
|
|
121
|
-
claims:
|
|
125
|
+
claims: RecordCidClaim[],
|
|
122
126
|
did: string,
|
|
123
127
|
didKey: string,
|
|
124
|
-
): Promise<{ verified:
|
|
128
|
+
): Promise<{ verified: RecordCidClaim[]; unverified: RecordCidClaim[] }> => {
|
|
125
129
|
const car = await util.readCarWithRoot(proofs)
|
|
126
130
|
const blockstore = new MemoryBlockstore(car.blocks)
|
|
127
131
|
const commit = await blockstore.readObj(car.root, def.commit)
|
|
@@ -135,22 +139,21 @@ export const verifyProofs = async (
|
|
|
135
139
|
)
|
|
136
140
|
}
|
|
137
141
|
const mst = MST.load(blockstore, commit.data)
|
|
138
|
-
const verified:
|
|
139
|
-
const unverified:
|
|
142
|
+
const verified: RecordCidClaim[] = []
|
|
143
|
+
const unverified: RecordCidClaim[] = []
|
|
140
144
|
for (const claim of claims) {
|
|
141
145
|
const found = await mst.get(
|
|
142
146
|
util.formatDataKey(claim.collection, claim.rkey),
|
|
143
147
|
)
|
|
144
148
|
const record = found ? await blockstore.readObj(found, def.map) : null
|
|
145
|
-
if (claim.
|
|
149
|
+
if (claim.cid === null) {
|
|
146
150
|
if (record === null) {
|
|
147
151
|
verified.push(claim)
|
|
148
152
|
} else {
|
|
149
153
|
unverified.push(claim)
|
|
150
154
|
}
|
|
151
155
|
} else {
|
|
152
|
-
|
|
153
|
-
if (expected.equals(found)) {
|
|
156
|
+
if (claim.cid.equals(found)) {
|
|
154
157
|
verified.push(claim)
|
|
155
158
|
} else {
|
|
156
159
|
unverified.push(claim)
|
package/src/types.ts
CHANGED
package/tests/_util.ts
CHANGED
|
@@ -12,7 +12,6 @@ import {
|
|
|
12
12
|
RepoContents,
|
|
13
13
|
RecordPath,
|
|
14
14
|
WriteOpAction,
|
|
15
|
-
RecordClaim,
|
|
16
15
|
Commit,
|
|
17
16
|
DataDiff,
|
|
18
17
|
CommitData,
|
|
@@ -171,20 +170,6 @@ export const formatEdit = async (
|
|
|
171
170
|
}
|
|
172
171
|
}
|
|
173
172
|
|
|
174
|
-
export const contentsToClaims = (contents: RepoContents): RecordClaim[] => {
|
|
175
|
-
const claims: RecordClaim[] = []
|
|
176
|
-
for (const coll of Object.keys(contents)) {
|
|
177
|
-
for (const rkey of Object.keys(contents[coll])) {
|
|
178
|
-
claims.push({
|
|
179
|
-
collection: coll,
|
|
180
|
-
rkey: rkey,
|
|
181
|
-
record: contents[coll][rkey],
|
|
182
|
-
})
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
return claims
|
|
186
|
-
}
|
|
187
|
-
|
|
188
173
|
export const pathsForOps = (ops: RecordWriteOp[]): RecordPath[] =>
|
|
189
174
|
ops.map((op) => ({ collection: op.collection, rkey: op.rkey }))
|
|
190
175
|
|
package/tests/proofs.test.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { TID, streamToBuffer } from '@atproto/common'
|
|
1
|
+
import { TID, cidForCbor, streamToBuffer } from '@atproto/common'
|
|
2
2
|
import * as crypto from '@atproto/crypto'
|
|
3
|
-
import {
|
|
3
|
+
import { RecordCidClaim, RecordPath, Repo, RepoContents } from '../src'
|
|
4
4
|
import { MemoryBlockstore } from '../src/storage'
|
|
5
5
|
import * as sync from '../src/sync'
|
|
6
6
|
|
|
@@ -23,16 +23,32 @@ describe('Repo Proofs', () => {
|
|
|
23
23
|
repoData = filled.data
|
|
24
24
|
})
|
|
25
25
|
|
|
26
|
-
const getProofs = async (claims:
|
|
26
|
+
const getProofs = async (claims: RecordPath[]) => {
|
|
27
27
|
return streamToBuffer(sync.getRecords(storage, repo.cid, claims))
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
const doVerify = (proofs: Uint8Array, claims:
|
|
30
|
+
const doVerify = (proofs: Uint8Array, claims: RecordCidClaim[]) => {
|
|
31
31
|
return sync.verifyProofs(proofs, claims, repoDid, keypair.did())
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
const contentsToClaims = async (
|
|
35
|
+
contents: RepoContents,
|
|
36
|
+
): Promise<RecordCidClaim[]> => {
|
|
37
|
+
const claims: RecordCidClaim[] = []
|
|
38
|
+
for (const coll of Object.keys(contents)) {
|
|
39
|
+
for (const rkey of Object.keys(contents[coll])) {
|
|
40
|
+
claims.push({
|
|
41
|
+
collection: coll,
|
|
42
|
+
rkey: rkey,
|
|
43
|
+
cid: await cidForCbor(contents[coll][rkey]),
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return claims
|
|
48
|
+
}
|
|
49
|
+
|
|
34
50
|
it('verifies valid records', async () => {
|
|
35
|
-
const claims =
|
|
51
|
+
const claims = await contentsToClaims(repoData)
|
|
36
52
|
const proofs = await getProofs(claims)
|
|
37
53
|
const results = await doVerify(proofs, claims)
|
|
38
54
|
expect(results.verified.length).toBeGreaterThan(0)
|
|
@@ -41,11 +57,11 @@ describe('Repo Proofs', () => {
|
|
|
41
57
|
})
|
|
42
58
|
|
|
43
59
|
it('verifies record nonexistence', async () => {
|
|
44
|
-
const claims:
|
|
60
|
+
const claims: RecordCidClaim[] = [
|
|
45
61
|
{
|
|
46
62
|
collection: util.testCollections[0],
|
|
47
63
|
rkey: TID.nextStr(), // does not exist
|
|
48
|
-
|
|
64
|
+
cid: null,
|
|
49
65
|
},
|
|
50
66
|
]
|
|
51
67
|
const proofs = await getProofs(claims)
|
|
@@ -56,8 +72,8 @@ describe('Repo Proofs', () => {
|
|
|
56
72
|
})
|
|
57
73
|
|
|
58
74
|
it('does not verify a record that doesnt exist', async () => {
|
|
59
|
-
const realClaims =
|
|
60
|
-
const claims:
|
|
75
|
+
const realClaims = await contentsToClaims(repoData)
|
|
76
|
+
const claims: RecordCidClaim[] = [
|
|
61
77
|
{
|
|
62
78
|
...realClaims[0],
|
|
63
79
|
rkey: TID.nextStr(),
|
|
@@ -71,11 +87,11 @@ describe('Repo Proofs', () => {
|
|
|
71
87
|
})
|
|
72
88
|
|
|
73
89
|
it('does not verify an invalid record at a real path', async () => {
|
|
74
|
-
const realClaims =
|
|
75
|
-
const claims:
|
|
90
|
+
const realClaims = await contentsToClaims(repoData)
|
|
91
|
+
const claims: RecordCidClaim[] = [
|
|
76
92
|
{
|
|
77
93
|
...realClaims[0],
|
|
78
|
-
|
|
94
|
+
cid: await util.randomCid(),
|
|
79
95
|
},
|
|
80
96
|
]
|
|
81
97
|
const proofs = await getProofs(claims)
|
|
@@ -86,12 +102,12 @@ describe('Repo Proofs', () => {
|
|
|
86
102
|
})
|
|
87
103
|
|
|
88
104
|
it('does not verify a delete where the record does exist', async () => {
|
|
89
|
-
const realClaims =
|
|
90
|
-
const claims:
|
|
105
|
+
const realClaims = await contentsToClaims(repoData)
|
|
106
|
+
const claims: RecordCidClaim[] = [
|
|
91
107
|
{
|
|
92
108
|
collection: realClaims[0].collection,
|
|
93
109
|
rkey: realClaims[0].rkey,
|
|
94
|
-
|
|
110
|
+
cid: null,
|
|
95
111
|
},
|
|
96
112
|
]
|
|
97
113
|
const proofs = await getProofs(claims)
|
|
@@ -102,7 +118,7 @@ describe('Repo Proofs', () => {
|
|
|
102
118
|
})
|
|
103
119
|
|
|
104
120
|
it('can determine record proofs from car file', async () => {
|
|
105
|
-
const possible =
|
|
121
|
+
const possible = await contentsToClaims(repoData)
|
|
106
122
|
const claims = [
|
|
107
123
|
//random sampling of records
|
|
108
124
|
possible[0],
|
|
@@ -120,15 +136,15 @@ describe('Repo Proofs', () => {
|
|
|
120
136
|
if (!foundClaim) {
|
|
121
137
|
throw new Error('Could not find record for claim')
|
|
122
138
|
}
|
|
123
|
-
expect(foundClaim.
|
|
124
|
-
repoData[record.collection][record.rkey],
|
|
139
|
+
expect(foundClaim.cid).toEqual(
|
|
140
|
+
await cidForCbor(repoData[record.collection][record.rkey]),
|
|
125
141
|
)
|
|
126
142
|
}
|
|
127
143
|
})
|
|
128
144
|
|
|
129
145
|
it('verifyProofs throws on a bad signature', async () => {
|
|
130
146
|
const badRepo = await util.addBadCommit(repo, keypair)
|
|
131
|
-
const claims =
|
|
147
|
+
const claims = await contentsToClaims(repoData)
|
|
132
148
|
const proofs = await streamToBuffer(
|
|
133
149
|
sync.getRecords(storage, badRepo.cid, claims),
|
|
134
150
|
)
|