func (dbs *databaseSuite) TestPublicKey(c *C) { pk := testPrivKey1 keyID := pk.PublicKey().ID() err := dbs.db.ImportKey(pk) c.Assert(err, IsNil) pubk, err := dbs.db.PublicKey(keyID) c.Assert(err, IsNil) c.Check(pubk.ID(), Equals, keyID) // usual pattern is to then encode it encoded, err := asserts.EncodePublicKey(pubk) c.Assert(err, IsNil) data, err := base64.StdEncoding.DecodeString(string(encoded)) c.Assert(err, IsNil) c.Check(data[0], Equals, uint8(1)) // v1 // check details of packet const newHeaderBits = 0x80 | 0x40 c.Check(data[1]&newHeaderBits, Equals, uint8(newHeaderBits)) c.Check(data[2] < 192, Equals, true) // small packet, 1 byte length c.Check(data[3], Equals, uint8(4)) // openpgp v4 pkt, err := packet.Read(bytes.NewBuffer(data[1:])) c.Assert(err, IsNil) pubKey, ok := pkt.(*packet.PublicKey) c.Assert(ok, Equals, true) c.Check(pubKey.PubKeyAlgo, Equals, packet.PubKeyAlgoRSA) c.Check(pubKey.IsSubkey, Equals, false) fixedTimestamp := time.Date(2016, time.January, 1, 0, 0, 0, 0, time.UTC) c.Check(pubKey.CreationTime.Equal(fixedTimestamp), Equals, true) // hash of blob content == hash of key h384 := sha3.Sum384(data) encHash := base64.RawURLEncoding.EncodeToString(h384[:]) c.Check(encHash, DeepEquals, testPrivKey1SHA3_384) }
func (s *snapFileDigestSuite) TestSnapFileSHA3_384(c *C) { exData := []byte("hashmeplease") tempdir := c.MkDir() snapFn := filepath.Join(tempdir, "ex.snap") err := ioutil.WriteFile(snapFn, exData, 0644) c.Assert(err, IsNil) encDgst, size, err := asserts.SnapFileSHA3_384(snapFn) c.Assert(err, IsNil) c.Check(size, Equals, uint64(len(exData))) h3_384 := sha3.Sum384(exData) expected := base64.RawURLEncoding.EncodeToString(h3_384[:]) c.Check(encDgst, DeepEquals, expected) }
func fakeHash(rev int) []byte { h := sha3.Sum384(fakeSnap(rev)) return h[:] }
func Sum384(password string) string { buf := []byte(password) hash := sha3.Sum384(buf) return string(hash[:]) }