Skip to content

Commit 594bd9a

Browse files
ericktnikomatsakis
authored andcommitted
---
yaml --- r: 37229 b: refs/heads/try c: ab89b5c h: refs/heads/master i: 37227: 4a2a93f v: v3
1 parent 446e8b2 commit 594bd9a

File tree

8 files changed

+730
-113
lines changed

8 files changed

+730
-113
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
refs/heads/master: 09bb07bed9166105ea961a42b5fff7739ae0d2e9
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: eb8fd119c65c67f3b1b8268cc7341c22d39b7b61
5-
refs/heads/try: 01aaeef619cc249a6c4555b3c865bb081e5b80c5
5+
refs/heads/try: ab89b5c294ac511d4d58809f9f20dfe4f2c8fe52
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: a810c03263670238bccd64cabb12a23a46e3a278

branches/try/src/cargo/cargo.rs

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,20 +1162,20 @@ fn sync_one_file(c: &Cargo, dir: &Path, src: @Source) -> bool {
11621162
}
11631163
match (src.key, src.keyfp) {
11641164
(Some(_), Some(f)) => {
1165-
let r = pgp::verify(&c.root, &pkgfile, &sigfile);
1165+
let r = pgp::verify(&c.root, &pkgfile, &sigfile, f);
11661166

11671167
if !r {
1168-
error(fmt!("signature verification failed for source %s with key %s",
1169-
name, f));
1168+
error(fmt!("signature verification failed for source %s",
1169+
name));
11701170
return false;
11711171
}
11721172

11731173
if has_src_file {
1174-
let e = pgp::verify(&c.root, &srcfile, &srcsigfile);
1174+
let e = pgp::verify(&c.root, &srcfile, &srcsigfile, f);
11751175

11761176
if !e {
1177-
error(fmt!("signature verification failed for source %s with key %s",
1178-
name, f));
1177+
error(fmt!("signature verification failed for source %s",
1178+
name));
11791179
return false;
11801180
}
11811181
}
@@ -1273,21 +1273,21 @@ fn sync_one_git(c: &Cargo, dir: &Path, src: @Source) -> bool {
12731273
}
12741274
match (src.key, src.keyfp) {
12751275
(Some(_), Some(f)) => {
1276-
let r = pgp::verify(&c.root, &pkgfile, &sigfile);
1276+
let r = pgp::verify(&c.root, &pkgfile, &sigfile, f);
12771277

12781278
if !r {
1279-
error(fmt!("signature verification failed for source %s with key %s",
1280-
name, f));
1279+
error(fmt!("signature verification failed for source %s",
1280+
name));
12811281
rollback(name, dir, false);
12821282
return false;
12831283
}
12841284

12851285
if has_src_file {
1286-
let e = pgp::verify(&c.root, &srcfile, &srcsigfile);
1286+
let e = pgp::verify(&c.root, &srcfile, &srcsigfile, f);
12871287

12881288
if !e {
1289-
error(fmt!("signature verification failed for source %s with key %s",
1290-
name, f));
1289+
error(fmt!("signature verification failed for source %s",
1290+
name));
12911291
rollback(name, dir, false);
12921292
return false;
12931293
}
@@ -1370,11 +1370,11 @@ fn sync_one_curl(c: &Cargo, dir: &Path, src: @Source) -> bool {
13701370
return false;
13711371
}
13721372

1373-
let r = pgp::verify(&c.root, &pkgfile, &sigfile);
1373+
let r = pgp::verify(&c.root, &pkgfile, &sigfile, f);
13741374

13751375
if !r {
1376-
error(fmt!("signature verification failed for source %s with key %s",
1377-
name, f));
1376+
error(fmt!("signature verification failed for source %s",
1377+
name));
13781378
return false;
13791379
}
13801380

@@ -1390,11 +1390,11 @@ fn sync_one_curl(c: &Cargo, dir: &Path, src: @Source) -> bool {
13901390
return false;
13911391
}
13921392

1393-
let e = pgp::verify(&c.root, &srcfile, &srcsigfile);
1393+
let e = pgp::verify(&c.root, &srcfile, &srcsigfile, f);
13941394

13951395
if !e {
13961396
error(~"signature verification failed for " +
1397-
~"source " + name + ~" with key " + f);
1397+
~"source " + name);
13981398
return false;
13991399
}
14001400
}
@@ -1463,7 +1463,8 @@ fn cmd_init(c: &Cargo) {
14631463
return;
14641464
}
14651465

1466-
let r = pgp::verify(&c.root, &srcfile, &sigfile);
1466+
let r = pgp::verify(&c.root, &srcfile, &sigfile,
1467+
pgp::signing_key_fp());
14671468
if !r {
14681469
error(fmt!("signature verification failed for '%s'",
14691470
srcfile.to_str()));

branches/try/src/cargo/pgp.rs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
fn gpgv(args: ~[~str]) -> { status: int, out: ~str, err: ~str } {
2-
return run::program_output(~"gpgv", args);
1+
fn gpg(args: ~[~str]) -> { status: int, out: ~str, err: ~str } {
2+
return run::program_output(~"gpg", args);
33
}
44

55
fn signing_key() -> ~str {
@@ -59,7 +59,7 @@ fn signing_key_fp() -> ~str {
5959
}
6060

6161
fn supported() -> bool {
62-
let r = gpgv(~[~"--version"]);
62+
let r = gpg(~[~"--version"]);
6363
r.status == 0
6464
}
6565

@@ -88,14 +88,15 @@ fn add(root: &Path, key: &Path) {
8888
}
8989
}
9090
91-
fn verify(root: &Path, data: &Path, sig: &Path) -> bool {
91+
fn verify(root: &Path, data: &Path, sig: &Path, keyfp: ~str) -> bool {
9292
let path = root.push("gpg");
93-
let res = gpgv(~[~"--homedir", path.to_str(),
94-
~"--keyring", ~"pubring.gpg",
95-
~"--verbose",
96-
sig.to_str(), data.to_str()]);
97-
if res.status != 0 {
98-
return false;
93+
let p = gpg(~[~"--homedir", path.to_str(),
94+
~"--with-fingerprint",
95+
~"--verify", sig.to_str(),
96+
data.to_str()]);
97+
let res = ~"Primary key fingerprint: " + keyfp;
98+
for str::split_char_each(p.err, '\n') |line| {
99+
if line == res { return true; }
99100
}
100-
return true;
101+
return false;
101102
}

branches/try/src/libstd/json.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,7 @@ pub impl PrettySerializer: serialization::Serializer {
273273
}
274274
}
275275

276+
#[cfg(stage0)]
276277
pub impl Json: serialization::Serializable {
277278
fn serialize<S: serialization::Serializer>(&self, s: &S) {
278279
match *self {
@@ -296,6 +297,33 @@ pub impl Json: serialization::Serializable {
296297
}
297298
}
298299

300+
#[cfg(stage1)]
301+
#[cfg(stage2)]
302+
pub impl<
303+
S: serialization::Serializer
304+
> Json: serialization::Serializable<S> {
305+
fn serialize(&self, s: &S) {
306+
match *self {
307+
Number(v) => v.serialize(s),
308+
String(ref v) => v.serialize(s),
309+
Boolean(v) => v.serialize(s),
310+
List(v) => v.serialize(s),
311+
Object(ref v) => {
312+
do s.emit_rec || {
313+
let mut idx = 0;
314+
for v.each |key, value| {
315+
do s.emit_field(*key, idx) {
316+
value.serialize(s);
317+
}
318+
idx += 1;
319+
}
320+
}
321+
},
322+
Null => s.emit_nil(),
323+
}
324+
}
325+
}
326+
299327
/// Serializes a json value into a io::writer
300328
pub fn to_writer(wr: io::Writer, json: &Json) {
301329
json.serialize(&Serializer(wr))

0 commit comments

Comments
 (0)