218
219
-----END PGP SIGNATURE-----
220
plain = b"""bazaar-ng testament short form 1
221
plain = """bazaar-ng testament short form 1
221
222
revision-id: amy@example.com-20110527185938-hluafawphszb8dl1
222
223
sha1: 6411f9bdf6571200357140c9ce7c0f50106ac9a4
224
225
my_gpg = gpg.GPGStrategy(FakeConfig())
225
226
my_gpg.set_acceptable_keys("bazaar@example.com")
226
self.assertEqual((gpg.SIGNATURE_VALID, None, plain),
227
my_gpg.verify(content))
227
self.assertEqual((gpg.SIGNATURE_VALID, None), my_gpg.verify(content,
229
230
def test_verify_unacceptable_key(self):
230
231
self.requireFeature(features.gpg)
231
232
self.import_keys()
233
content = b"""-----BEGIN PGP SIGNED MESSAGE-----
234
content = """-----BEGIN PGP SIGNED MESSAGE-----
236
237
bazaar-ng testament short form 1
249
250
-----END PGP SIGNATURE-----
251
plain = b"""bazaar-ng testament short form 1
252
plain = """bazaar-ng testament short form 1
252
253
revision-id: amy@example.com-20110527185938-hluafawphszb8dl1
253
254
sha1: 6411f9bdf6571200357140c9ce7c0f50106ac9a4
255
256
my_gpg = gpg.GPGStrategy(FakeConfig())
256
257
my_gpg.set_acceptable_keys("foo@example.com")
257
self.assertEqual((gpg.SIGNATURE_KEY_MISSING, u'E3080E45', plain),
258
my_gpg.verify(content))
258
self.assertEqual((gpg.SIGNATURE_KEY_MISSING, u'E3080E45'),
259
my_gpg.verify(content, plain))
260
261
def test_verify_valid_but_untrusted(self):
261
262
self.requireFeature(features.gpg)
262
263
self.import_keys()
264
content = b"""-----BEGIN PGP SIGNED MESSAGE-----
267
bazaar-ng testament short form 1
268
revision-id: amy@example.com-20110527185938-hluafawphszb8dl1
269
sha1: 6411f9bdf6571200357140c9ce7c0f50106ac9a4
270
-----BEGIN PGP SIGNATURE-----
271
Version: GnuPG v1.4.11 (GNU/Linux)
273
iQEcBAEBAgAGBQJN+ekFAAoJEIdoGx7jCA5FGtEH/i+XxJRvqU6wdBtLVrGBMAGk
274
FZ5VP+KyXYtymSbgSstj/vM12NeMIeFs3xGnNnYuX1MIcY6We5TKtCH0epY6ym5+
275
6g2Q2QpQ5/sT2d0mWzR0K4uVngmxVQaXTdk5PdZ40O7ULeDLW6CxzxMHyUL1rsIx
276
7UBUTBh1O/1n3ZfD99hUkm3hVcnsN90uTKH59zV9NWwArU0cug60+5eDKJhSJDbG
277
rIwlqbFAjDZ7L/48e+IaYIJwBZFzMBpJKdCxzALLtauMf+KK8hGiL2hrRbWm7ty6
278
NgxfkMYOB4rDPdSstT35N+5uBG3n/UzjxHssi0svMfVETYYX40y57dm2eZQXFp8=
280
-----END PGP SIGNATURE-----
282
plain = b"""bazaar-ng testament short form 1
283
revision-id: amy@example.com-20110527185938-hluafawphszb8dl1
284
sha1: 6411f9bdf6571200357140c9ce7c0f50106ac9a4
286
my_gpg = gpg.GPGStrategy(FakeConfig())
287
self.assertEqual((gpg.SIGNATURE_NOT_VALID, None,
288
plain), my_gpg.verify(content))
265
content = """-----BEGIN PGP SIGNED MESSAGE-----
268
bazaar-ng testament short form 1
269
revision-id: amy@example.com-20110527185938-hluafawphszb8dl1
270
sha1: 6411f9bdf6571200357140c9ce7c0f50106ac9a4
271
-----BEGIN PGP SIGNATURE-----
272
Version: GnuPG v1.4.11 (GNU/Linux)
274
iQEcBAEBAgAGBQJN+ekFAAoJEIdoGx7jCA5FGtEH/i+XxJRvqU6wdBtLVrGBMAGk
275
FZ5VP+KyXYtymSbgSstj/vM12NeMIeFs3xGnNnYuX1MIcY6We5TKtCH0epY6ym5+
276
6g2Q2QpQ5/sT2d0mWzR0K4uVngmxVQaXTdk5PdZ40O7ULeDLW6CxzxMHyUL1rsIx
277
7UBUTBh1O/1n3ZfD99hUkm3hVcnsN90uTKH59zV9NWwArU0cug60+5eDKJhSJDbG
278
rIwlqbFAjDZ7L/48e+IaYIJwBZFzMBpJKdCxzALLtauMf+KK8hGiL2hrRbWm7ty6
279
NgxfkMYOB4rDPdSstT35N+5uBG3n/UzjxHssi0svMfVETYYX40y57dm2eZQXFp8=
281
-----END PGP SIGNATURE-----
283
plain = """bazaar-ng testament short form 1
284
revision-id: amy@example.com-20110527185938-hluafawphszb8dl1
285
sha1: 6411f9bdf6571200357140c9ce7c0f50106ac9a4
287
my_gpg = gpg.GPGStrategy(FakeConfig())
288
self.assertEqual((gpg.SIGNATURE_NOT_VALID, None), my_gpg.verify(content,
291
def test_verify_bad_testament(self):
292
self.requireFeature(features.gpg)
295
content = """-----BEGIN PGP SIGNED MESSAGE-----
298
bazaar-ng testament short form 1
299
revision-id: amy@example.com-20110527185938-hluafawphszb8dl1
300
sha1: 6411f9bdf6571200357140c9ce7c0f50106ac9a4
301
-----BEGIN PGP SIGNATURE-----
302
Version: GnuPG v1.4.11 (GNU/Linux)
304
iQEcBAEBAgAGBQJN+ekFAAoJEIdoGx7jCA5FGtEH/i+XxJRvqU6wdBtLVrGBMAGk
305
FZ5VP+KyXYtymSbgSstj/vM12NeMIeFs3xGnNnYuX1MIcY6We5TKtCH0epY6ym5+
306
6g2Q2QpQ5/sT2d0mWzR0K4uVngmxVQaXTdk5PdZ40O7ULeDLW6CxzxMHyUL1rsIx
307
7UBUTBh1O/1n3ZfD99hUkm3hVcnsN90uTKH59zV9NWwArU0cug60+5eDKJhSJDbG
308
rIwlqbFAjDZ7L/48e+IaYIJwBZFzMBpJKdCxzALLtauMf+KK8hGiL2hrRbWm7ty6
309
NgxfkMYOB4rDPdSstT35N+5uBG3n/UzjxHssi0svMfVETYYX40y57dm2eZQXFp8=
311
-----END PGP SIGNATURE-----
313
plain = """bazaar-ng testament short form 1
314
revision-id: doctor@example.com-20110527185938-hluafawphszb8dl1
315
sha1: 6411f9bdf6571200357140c9ce7c0f50106ac9a4
317
my_gpg = gpg.GPGStrategy(FakeConfig())
318
my_gpg.set_acceptable_keys("bazaar@example.com")
319
self.assertEqual((gpg.SIGNATURE_NOT_VALID, None), my_gpg.verify(content,
290
323
def test_verify_revoked_signature(self):
291
324
self.requireFeature(features.gpg)
292
325
self.import_keys()
294
content = b"""-----BEGIN PGP SIGNED MESSAGE-----
327
content = """-----BEGIN PGP SIGNED MESSAGE-----
329
362
-----END PGP SIGNATURE-----
331
plain = b"""bazaar-ng testament short form 1
364
plain = """bazaar-ng testament short form 1
332
365
revision-id: amy@example.com-20110527185938-hluafawphszb8dl1
333
366
sha1: 6411f9bdf6571200357140c9ce7c0f50106ac9a4
335
368
my_gpg = gpg.GPGStrategy(FakeConfig())
336
self.assertEqual((gpg.SIGNATURE_NOT_VALID, None, plain),
337
my_gpg.verify(content))
369
self.assertEqual((gpg.SIGNATURE_NOT_VALID, None),
370
my_gpg.verify(content, plain))
339
372
def test_verify_expired_but_valid(self):
340
373
self.requireFeature(features.gpg)
341
374
self.import_keys()
342
content = b"""-----BEGIN PGP SIGNED MESSAGE-----
375
content = """-----BEGIN PGP SIGNED MESSAGE-----
345
378
bazaar-ng testament short form 1
346
379
revision-id: test@example.com-20110801100657-f1dr1nompeex723z
347
380
sha1: 59ab434be4c2d5d646dee84f514aa09e1b72feeb
348
381
-----BEGIN PGP SIGNATURE-----
349
382
Version: GnuPG v1.4.10 (GNU/Linux)
351
384
iJwEAQECAAYFAk42esUACgkQHOJve0+NFRPc5wP7BoZkzBU8JaHMLv/LmqLr0sUz
352
385
zuE51ofZZ19L7KVtQWsOi4jFy0fi4A5TFwO8u9SOfoREGvkw292Uty9subSouK5/
353
386
mFmDOYPQ+O83zWgYZsBmMJWYDZ+X9I6XXZSbPtV/7XyTjaxtl5uRnDVJjg+AzKvD
356
389
-----END PGP SIGNATURE-----
391
plain = """bazaar-ng testament short form 1
392
revision-id: test@example.com-20110801100657-f1dr1nompeex723z
393
sha1: 59ab434be4c2d5d646dee84f514aa09e1b72feeb
358
395
my_gpg = gpg.GPGStrategy(FakeConfig())
359
self.assertEqual((gpg.SIGNATURE_EXPIRED, u'4F8D1513', None),
360
my_gpg.verify(content))
396
self.assertEqual((gpg.SIGNATURE_EXPIRED, u'4F8D1513'),
397
my_gpg.verify(content, plain))
362
399
def test_verify_unknown_key(self):
363
400
self.requireFeature(features.gpg)
364
401
self.import_keys()
365
content = b"""-----BEGIN PGP SIGNED MESSAGE-----
402
content = """-----BEGIN PGP SIGNED MESSAGE-----
403
441
self.requireFeature(features.gpg)
404
442
my_gpg = gpg.GPGStrategy(FakeConfig())
408
445
self.notes.append(args[0] % args[1:])
409
446
self.overrideAttr(trace, 'note', note)
410
447
my_gpg.set_acceptable_keys("unknown")
411
448
self.assertEqual(my_gpg.acceptable_keys, [])
412
449
self.assertEqual(self.notes,
413
['No GnuPG key results for pattern: unknown'])
450
['No GnuPG key results for pattern: unknown'])
416
453
class TestDisabled(TestCase):
418
455
def test_sign(self):
419
456
self.assertRaises(gpg.SigningFailed,
420
gpg.DisabledGPGStrategy(None).sign, b'content', gpg.MODE_CLEAR)
457
gpg.DisabledGPGStrategy(None).sign, 'content')
422
459
def test_verify(self):
423
460
self.assertRaises(gpg.SignatureVerificationFailed,
424
gpg.DisabledGPGStrategy(None).verify, b'content')
461
gpg.DisabledGPGStrategy(None).verify, 'content',