@@ -285,3 +285,94 @@ func (s *TagSuite) TestLongTagNameSerialization(c *C) {
285
285
c .Assert (err , IsNil )
286
286
c .Assert (decoded .Name , Equals , longName )
287
287
}
288
+
289
+ func (s * TagSuite ) TestPGPSignatureSerialization (c * C ) {
290
+ encoded := & plumbing.MemoryObject {}
291
+ decoded := & Tag {}
292
+ tag := s .tag (c , plumbing .NewHash ("b742a2a9fa0afcfa9a6fad080980fbc26b007c69" ))
293
+
294
+ pgpsignature := `-----BEGIN PGP SIGNATURE-----
295
+
296
+ iQEcBAABAgAGBQJTZbQlAAoJEF0+sviABDDrZbQH/09PfE51KPVPlanr6q1v4/Ut
297
+ LQxfojUWiLQdg2ESJItkcuweYg+kc3HCyFejeDIBw9dpXt00rY26p05qrpnG+85b
298
+ hM1/PswpPLuBSr+oCIDj5GMC2r2iEKsfv2fJbNW8iWAXVLoWZRF8B0MfqX/YTMbm
299
+ ecorc4iXzQu7tupRihslbNkfvfciMnSDeSvzCpWAHl7h8Wj6hhqePmLm9lAYqnKp
300
+ 8S5B/1SSQuEAjRZgI4IexpZoeKGVDptPHxLLS38fozsyi0QyDyzEgJxcJQVMXxVi
301
+ RUysgqjcpT8+iQM1PblGfHR4XAhuOqN5Fx06PSaFZhqvWFezJ28/CLyX5q+oIVk=
302
+ =EFTF
303
+ -----END PGP SIGNATURE-----
304
+ `
305
+ tag .PGPSignature = pgpsignature
306
+
307
+ err := tag .Encode (encoded )
308
+ c .Assert (err , IsNil )
309
+
310
+ err = decoded .Decode (encoded )
311
+ c .Assert (err , IsNil )
312
+ c .Assert (decoded .PGPSignature , Equals , pgpsignature )
313
+ }
314
+
315
+ func (s * TagSuite ) TestVerify (c * C ) {
316
+ ts := time .Unix (1511524851 , 0 )
317
+ loc , _ := time .LoadLocation ("Asia/Kolkata" )
318
+ tag := & Tag {
319
+ Name : "v0.2" ,
320
+ Tagger : Signature {Name : "Sunny" , Email : "me@darkowlzz.space" , When : ts .In (loc )},
321
+ Message : `This is a signed tag
322
+ ` ,
323
+ TargetType : plumbing .CommitObject ,
324
+ Target : plumbing .NewHash ("064f92fe00e70e6b64cb358a65039daa4b6ae8d2" ),
325
+ PGPSignature : `
326
+ -----BEGIN PGP SIGNATURE-----
327
+
328
+ iQFHBAABCAAxFiEEoRt6IzxHaZkkUslhQyLeMqcmyU4FAloYCg8THG1lQGRhcmtv
329
+ d2x6ei5zcGFjZQAKCRBDIt4ypybJTs0cCACjQZe2610t3gfbUPbgQiWDL9uvlCeb
330
+ sNSeTC6hLAFSvHTMqLr/6RpiLlfQXyATD7TZUH0DUSLsERLheG82OgVxkOTzPCpy
331
+ GL6iGKeZ4eZ1KiV+SBPjqizC9ShhGooPUw9oUSVdj4jsaHDdDHtY63Pjl0KvJmms
332
+ OVi9SSxjeMbmaC81C8r0ZuOLTXJh/JRKh2BsehdcnK3736BK+16YRD7ugXLpkQ5d
333
+ nsCFVbuYYoLMoJL5NmEun0pbUrpY+MI8VPK0f9HV5NeaC4NksC+ke/xYMT+P2lRL
334
+ CN+9zcCIU+mXr2fCl1xOQcnQzwOElObDxpDcPcxVn0X+AhmPc+uj0mqD
335
+ =l75D
336
+ -----END PGP SIGNATURE-----
337
+ ` ,
338
+ }
339
+
340
+ armoredKeyRing := `
341
+ -----BEGIN PGP PUBLIC KEY BLOCK-----
342
+
343
+ mQENBFmtHgABCADnfThM7q8D4pgUub9jMppSpgFh3ev84g3Csc3yQUlszEOVgXmu
344
+ YiSWP1oAiWFQ8ahCydh3LT8TnEB2QvoRNiExUI5XlXFwVfKW3cpDu8gdhtufs90Q
345
+ NvpaHOgTqRf/texGEKwXi6fvS47fpyaQ9BKNdN52LeaaHzDDZkVsAFmroE+7MMvj
346
+ P4Mq8qDn2WcWnX9zheQKYrX6Cs48Tx80eehHor4f/XnuaP8DLmPQx7URdJ0Igckh
347
+ N+i91Qv2ujin8zxUwhkfus66EZS9lQ4qR9iVHs4WHOs3j7whsejd4VhajonilVHj
348
+ uqTtqHmpN/4njbIKb8q8uQkS26VQYoSYm2UvABEBAAG0GlN1bm55IDxtZUBkYXJr
349
+ b3dsenouc3BhY2U+iQFUBBMBCAA+FiEEoRt6IzxHaZkkUslhQyLeMqcmyU4FAlmt
350
+ HgACGwMFCQPCZwAFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQQyLeMqcmyU7V
351
+ nAf+J5BYu26B2i+iwctOzDRFcPwCLka9cBwe5wcDvoF2qL8QRo8NPWBBH4zWHa/k
352
+ BthtGo1b89a53I2hnTwTQ0NOtAUNV+Vvu6nOHJd9Segsx3E1nM43bd2bUfGJ1eeO
353
+ jDOlOvtP4ozuV6Ej+0Ln2ouMOc87yAwbAzTfQ9axU6CKUbqy0/t2dW1jdKntGH+t
354
+ VPeFxJHL2gXjP89skCSPYA7yKqqyJRPFvC+7rde1OLdCmZi4VwghUiNbh3s1+xM3
355
+ gfr2ahsRDTN2SQzwuHu4y1EgZgPtuWfRxzHqduoRoSgfOfFr9H9Il3UMHf2Etleu
356
+ rif40YZJhge6STwsIycGh4wOiLkBDQRZrR4AAQgArpUvPdGC/W9X4AuZXrXEShvx
357
+ TqM4K2Jk9n0j+ABx87k9fm48qgtae7+TayMbb0i7kcbgnjltKbauTbyRbju/EJvN
358
+ CdIw76IPpjy6jUM37wG2QGLFo6Ku3x8/ZpNGGOZ8KMU258/EBqDlJQ/4g4kJ8D+m
359
+ 9yOH0r6/Xpe/jOY2V8Jo9pdFTm+8eAsSyZF0Cl7drz603Pymq1IS2wrwQbdxQA/w
360
+ B75pQ5es7X34Ac7/9UZCwCPmZDAldnjHyw5dZgZe8XLrG84BIfbG0Hj8PjrFdF1D
361
+ Czt9bk+PbYAnLORW2oX1oedxVrNFo5UrbWgBSjA1ppbGFjwSDHFlyjuEuxqyFwAR
362
+ AQABiQE8BBgBCAAmFiEEoRt6IzxHaZkkUslhQyLeMqcmyU4FAlmtHgACGwwFCQPC
363
+ ZwAACgkQQyLeMqcmyU7ZBggArzc8UUVSjde987Vqnu/S5Cv8Qhz+UB7gAFyTW2iF
364
+ VYvB86r30H/NnfjvjCVkBE6FHCNHoxWVyDWmuxKviB7nkReHuwqniQHPgdJDcTKC
365
+ tBboeX2IYBLJbEvEJuz5NSvnvFuYkIpZHqySFaqdl/qu9XcmoPL5AmIzIFOeiNty
366
+ qT0ldkf3ru6yQQDDqBDpkfz4AzkpFnLYL59z6IbJDK2Hz7aKeSEeVOGiZLCjIZZV
367
+ uISZThYqh5zUkvF346OHLDqfDdgQ4RZriqd/DTtRJPlz2uL0QcEIjJuYCkG0UWgl
368
+ sYyf9RfOnw/KUFAQbdtvLx3ikODQC+D3KBtuKI9ISHQfgw==
369
+ =FPev
370
+ -----END PGP PUBLIC KEY BLOCK-----
371
+ `
372
+
373
+ e , err := tag .Verify (armoredKeyRing )
374
+ c .Assert (err , IsNil )
375
+
376
+ _ , ok := e .Identities ["Sunny <me@darkowlzz.space>" ]
377
+ c .Assert (ok , Equals , true )
378
+ }
0 commit comments