Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | experimentally added "PGP SIGNED" marker to PGP-signed commits in the timeline, per ML request. |
---|---|
Timelines: | family | ancestors | descendants | both | timeline-pgp-marker |
Files: | files | file ages | folders |
SHA1: |
d632a50e2a06c76b5f3432c2c9920110 |
User & Date: | stephan 2013-08-20 12:57:48.569 |
Context
2013-08-20
| ||
14:07 | Added a link to the pgp-signed note. Not happy with how it turns out, but it is proof-of-concept. Leaf check-in: 884a765abd user: stephan tags: timeline-pgp-marker | |
12:57 | experimentally added "PGP SIGNED" marker to PGP-signed commits in the timeline, per ML request. check-in: d632a50e2a user: stephan tags: timeline-pgp-marker | |
11:29 | Detect properly that [ff59f202fe] is an invalid Control artifact. Leaf check-in: 13161f39aa user: jan.nijtmans tags: trunk | |
Changes
Changes to src/manifest.c.
︙ | ︙ | |||
58 59 60 61 62 63 64 65 66 67 68 69 70 71 | /* ** A parsed manifest or cluster. */ struct Manifest { Blob content; /* The original content blob */ int type; /* Type of artifact. One of CFTYPE_xxxxx */ int rid; /* The blob-id for this manifest */ char *zBaseline; /* Baseline manifest. The B card. */ Manifest *pBaseline; /* The actual baseline manifest */ char *zComment; /* Decoded comment. The C card. */ double rDate; /* Date and time from D card. 0.0 if no D card. */ char *zUser; /* Name of the user from the U card. */ char *zRepoCksum; /* MD5 checksum of the baseline content. R card. */ char *zWiki; /* Text of the wiki page. W card. */ | > | 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | /* ** A parsed manifest or cluster. */ struct Manifest { Blob content; /* The original content blob */ int type; /* Type of artifact. One of CFTYPE_xxxxx */ int rid; /* The blob-id for this manifest */ int fSigned; /* True if the manifest was PGP-signed */ char *zBaseline; /* Baseline manifest. The B card. */ Manifest *pBaseline; /* The actual baseline manifest */ char *zComment; /* Decoded comment. The C card. */ double rDate; /* Date and time from D card. 0.0 if no D card. */ char *zUser; /* Name of the user from the U card. */ char *zRepoCksum; /* MD5 checksum of the baseline content. R card. */ char *zWiki; /* Text of the wiki page. W card. */ |
︙ | ︙ | |||
354 355 356 357 358 359 360 361 362 363 364 365 366 367 | char *z; int n; char *zUuid; int sz = 0; int isRepeat; static Bag seen; const char *zErr = 0; if( rid==0 ){ isRepeat = 1; }else if( bag_find(&seen, rid) ){ isRepeat = 1; }else{ isRepeat = 0; | > | 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 | char *z; int n; char *zUuid; int sz = 0; int isRepeat; static Bag seen; const char *zErr = 0; int fSigned = 0; if( rid==0 ){ isRepeat = 1; }else if( bag_find(&seen, rid) ){ isRepeat = 1; }else{ isRepeat = 0; |
︙ | ︙ | |||
379 380 381 382 383 384 385 | blob_appendf(pErr, n ? "not terminated with \\n" : "zero-length"); return 0; } /* Strip off the PGP signature if there is one. Then verify the ** Z-card. */ | > > | > > > | 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 | blob_appendf(pErr, n ? "not terminated with \\n" : "zero-length"); return 0; } /* Strip off the PGP signature if there is one. Then verify the ** Z-card. */ { int const oldLen = n; remove_pgp_signature(&z, &n); fSigned = n<oldLen; } if( verify_z_card(z, n)==2 ){ blob_reset(pContent); blob_appendf(pErr, "incorrect Z-card cksum"); return 0; } /* Verify that the first few characters of the artifact look like |
︙ | ︙ | |||
403 404 405 406 407 408 409 410 411 412 413 414 415 416 | */ p = fossil_malloc( sizeof(*p) ); memset(p, 0, sizeof(*p)); memcpy(&p->content, pContent, sizeof(p->content)); p->rid = rid; blob_zero(pContent); pContent = &p->content; /* Begin parsing, card by card. */ x.z = z; x.zEnd = &z[n]; x.atEol = 1; while( (cType = next_card(&x))!=0 && cType>=cPrevType ){ | > | 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 | */ p = fossil_malloc( sizeof(*p) ); memset(p, 0, sizeof(*p)); memcpy(&p->content, pContent, sizeof(p->content)); p->rid = rid; blob_zero(pContent); pContent = &p->content; p->fSigned = fSigned; /* Begin parsing, card by card. */ x.z = z; x.zEnd = &z[n]; x.atEol = 1; while( (cType = next_card(&x))!=0 && cType>=cPrevType ){ |
︙ | ︙ | |||
1699 1700 1701 1702 1703 1704 1705 | "REPLACE INTO event(type,mtime,objid,user,comment," "bgcolor,euser,ecomment,omtime)" "VALUES('ci'," " coalesce(" " (SELECT julianday(value) FROM tagxref WHERE tagid=%d AND rid=%d)," " %.17g" " )," | | | > | 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 | "REPLACE INTO event(type,mtime,objid,user,comment," "bgcolor,euser,ecomment,omtime)" "VALUES('ci'," " coalesce(" " (SELECT julianday(value) FROM tagxref WHERE tagid=%d AND rid=%d)," " %.17g" " )," " %d,%Q,%Q || %Q," " (SELECT value FROM tagxref WHERE tagid=%d AND rid=%d AND tagtype>0)," " (SELECT value FROM tagxref WHERE tagid=%d AND rid=%d)," " (SELECT value FROM tagxref WHERE tagid=%d AND rid=%d),%.17g);", TAG_DATE, rid, p->rDate, rid, p->zUser, p->zComment, p->fSigned ? " (*PGP SIGNED*)" : "", TAG_BGCOLOR, rid, TAG_USER, rid, TAG_COMMENT, rid, p->rDate ); zCom = db_text(0, "SELECT coalesce(ecomment, comment) FROM event" " WHERE rowid=last_insert_rowid()"); wiki_extract_links(zCom, rid, 0, p->rDate, 1, WIKI_INLINE); |
︙ | ︙ |