comparison src/com/tmate/hgkit/ll/HgBundle.java @ 42:92c3d0920d58

Real integrity check, with exception. DigestHelper refactored to accomodate new needs
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Fri, 14 Jan 2011 04:29:03 +0100
parents 858d1b2458cb
children 1b26247d7367
comparison
equal deleted inserted replaced
41:858d1b2458cb 42:92c3d0920d58
46 byte[] baseRevContent = hgRepo.getChangelog().content(base); 46 byte[] baseRevContent = hgRepo.getChangelog().content(base);
47 for (GroupElement ge : changelogGroup) { 47 for (GroupElement ge : changelogGroup) {
48 int resultLen = 10000; // XXX calculate based on baseRevContent.length and ge.patches 48 int resultLen = 10000; // XXX calculate based on baseRevContent.length and ge.patches
49 byte[] csetContent = RevlogStream.apply(baseRevContent, resultLen, ge.patches); 49 byte[] csetContent = RevlogStream.apply(baseRevContent, resultLen, ge.patches);
50 // wiki suggests sha1_digest(min(p1,p2) ++ max(p1,p2) ++ final_text), 50 // wiki suggests sha1_digest(min(p1,p2) ++ max(p1,p2) ++ final_text),
51 String digest = dh.sha1(ge.firstParent(), ge.secondParent(), csetContent); // XXX ge may give me access to byte[] content of nodeid directly, perhaps, I don't need DH to be friend of Nodeid? 51 dh = dh.sha1(ge.firstParent(), ge.secondParent(), csetContent); // XXX ge may give me access to byte[] content of nodeid directly, perhaps, I don't need DH to be friend of Nodeid?
52 System.out.println("Node: " + ge.node() + ", digest: " + digest); 52 if (!ge.node().equalsTo(dh.asBinary())) {
53 throw new IllegalStateException("Integrity check failed on " + bundleFile + ", node:" + ge.node());
54 }
53 Changeset cs = Changeset.parse(csetContent, 0, csetContent.length); 55 Changeset cs = Changeset.parse(csetContent, 0, csetContent.length);
54 cs.dump(); 56 cs.dump();
55 baseRevContent = csetContent; 57 baseRevContent = csetContent;
56 } 58 }
57 } finally { 59 } finally {