func (as *assertsSuite) TestSignFormatSanitySupportMultilineHeaderValues(c *C) { headers := map[string]string{ "authority-id": "auth-id1", "primary-key": "0", } multilineVals := []string{ "a\n", "\na", "a\n\b\nc", "a\n\b\nc\n", "\na\n", "\n\na\n\nb\n\nc", } for _, multilineVal := range multilineVals { headers["multiline"] = multilineVal if len(multilineVal)%2 == 1 { headers["odd"] = "true" } a, err := asserts.AssembleAndSignInTest(asserts.TestOnlyType, headers, nil, asserts.OpenPGPPrivateKey(testPrivKey1)) c.Assert(err, IsNil) decoded, err := asserts.Decode(asserts.Encode(a)) c.Assert(err, IsNil) c.Check(decoded.Header("multiline"), Equals, multilineVal) } }
func (aks *accountKeySuite) TestAccountKeyAddAndFind(c *C) { trustedKey := testPrivKey0 headers := map[string]string{ "authority-id": "canonical", "account-id": "acc-id1", "public-key-id": aks.keyid, "public-key-fingerprint": aks.fp, "since": aks.since.Format(time.RFC3339), "until": aks.until.Format(time.RFC3339), } accKey, err := asserts.AssembleAndSignInTest(asserts.AccountKeyType, headers, []byte(aks.pubKeyBody), asserts.OpenPGPPrivateKey(trustedKey)) c.Assert(err, IsNil) db := aks.openDB(c) err = db.Add(accKey) c.Assert(err, IsNil) found, err := db.Find(asserts.AccountKeyType, map[string]string{ "account-id": "acc-id1", "public-key-id": aks.keyid, }) c.Assert(err, IsNil) c.Assert(found, NotNil) c.Check(found.Body(), DeepEquals, []byte(aks.pubKeyBody)) }
func (as *assertsSuite) TestSignFormatSanityEmptyBody(c *C) { headers := map[string]string{ "authority-id": "auth-id1", "primary-key": "0", } a, err := asserts.AssembleAndSignInTest(asserts.TestOnlyType, headers, nil, asserts.OpenPGPPrivateKey(testPrivKey1)) c.Assert(err, IsNil) _, err = asserts.Decode(asserts.Encode(a)) c.Check(err, IsNil) }
func (as *assertsSuite) TestSignFormatSanityNonEmptyBody(c *C) { headers := map[string]string{ "authority-id": "auth-id1", "primary-key": "0", } body := []byte("THE-BODY") a, err := asserts.AssembleAndSignInTest(asserts.TestOnlyType, headers, body, asserts.OpenPGPPrivateKey(testPrivKey1)) c.Assert(err, IsNil) c.Check(a.Body(), DeepEquals, body) decoded, err := asserts.Decode(asserts.Encode(a)) c.Assert(err, IsNil) c.Check(decoded.Body(), DeepEquals, body) }
func (chks *checkSuite) SetUpTest(c *C) { var err error topDir := filepath.Join(c.MkDir(), "asserts-db") chks.bs, err = asserts.OpenFSBackstore(topDir) c.Assert(err, IsNil) headers := map[string]string{ "authority-id": "canonical", "primary-key": "0", } chks.a, err = asserts.AssembleAndSignInTest(asserts.TestOnlyType, headers, nil, asserts.OpenPGPPrivateKey(testPrivKey0)) c.Assert(err, IsNil) }
func (sdbs *sysDBSuite) SetUpTest(c *C) { tmpdir := c.MkDir() pk := asserts.OpenPGPPrivateKey(testPrivKey0) trustedPubKey := pk.PublicKey() trustedPubKeyEncoded, err := asserts.EncodePublicKey(trustedPubKey) c.Assert(err, IsNil) // self-signed headers := map[string]string{ "authority-id": "canonical", "account-id": "canonical", "public-key-id": trustedPubKey.ID(), "public-key-fingerprint": trustedPubKey.Fingerprint(), "since": "2015-11-20T15:04:00Z", "until": "2500-11-20T15:04:00Z", } trustedAccKey, err := asserts.AssembleAndSignInTest(asserts.AccountKeyType, headers, trustedPubKeyEncoded, pk) c.Assert(err, IsNil) fakeRoot := filepath.Join(tmpdir, "root") err = os.Mkdir(fakeRoot, os.ModePerm) c.Assert(err, IsNil) dirs.SetRootDir(fakeRoot) err = os.MkdirAll(filepath.Dir(dirs.SnapTrustedAccountKey), os.ModePerm) c.Assert(err, IsNil) err = ioutil.WriteFile(dirs.SnapTrustedAccountKey, asserts.Encode(trustedAccKey), os.ModePerm) c.Assert(err, IsNil) headers = map[string]string{ "authority-id": "canonical", "primary-key": "0", } sdbs.probeAssert, err = asserts.AssembleAndSignInTest(asserts.TestOnlyType, headers, nil, pk) c.Assert(err, IsNil) }
func makeSignAndCheckDbWithAccountKey(c *C, accountID string) (signingKeyID string, accSignDB, checkDB *asserts.Database) { trustedKey := testPrivKey0 cfg1 := &asserts.DatabaseConfig{ KeypairManager: asserts.NewMemoryKeypairManager(), } accSignDB, err := asserts.OpenDatabase(cfg1) c.Assert(err, IsNil) pk1 := asserts.OpenPGPPrivateKey(testPrivKey1) err = accSignDB.ImportKey(accountID, asserts.OpenPGPPrivateKey(testPrivKey1)) c.Assert(err, IsNil) accFingerp := pk1.PublicKey().Fingerprint() accKeyID := pk1.PublicKey().ID() pubKey, err := accSignDB.PublicKey(accountID, accKeyID) c.Assert(err, IsNil) pubKeyEncoded, err := asserts.EncodePublicKey(pubKey) c.Assert(err, IsNil) accPubKeyBody := string(pubKeyEncoded) headers := map[string]string{ "authority-id": "canonical", "account-id": accountID, "public-key-id": accKeyID, "public-key-fingerprint": accFingerp, "since": "2015-11-20T15:04:00Z", "until": "2500-11-20T15:04:00Z", } accKey, err := asserts.AssembleAndSignInTest(asserts.AccountKeyType, headers, []byte(accPubKeyBody), asserts.OpenPGPPrivateKey(trustedKey)) c.Assert(err, IsNil) topDir := filepath.Join(c.MkDir(), "asserts-db") bs, err := asserts.OpenFSBackstore(topDir) c.Assert(err, IsNil) cfg := &asserts.DatabaseConfig{ Backstore: bs, KeypairManager: asserts.NewMemoryKeypairManager(), TrustedKeys: []*asserts.AccountKey{asserts.BootstrapAccountKeyForTest("canonical", &trustedKey.PublicKey)}, } checkDB, err = asserts.OpenDatabase(cfg) c.Assert(err, IsNil) err = checkDB.Add(accKey) c.Assert(err, IsNil) return accKeyID, accSignDB, checkDB }