本文整理汇总了Golang中github.com/snapcore/snapd/asserts.Decode函数的典型用法代码示例。如果您正苦于以下问题:Golang Decode函数的具体用法?Golang Decode怎么用?Golang Decode使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Decode函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestPutOldRevision
func (mbss *memBackstoreSuite) TestPutOldRevision(c *C) {
bs := asserts.NewMemoryBackstore()
// Create two revisions of assertion.
a0, err := asserts.Decode([]byte("type: test-only\n" +
"authority-id: auth-id1\n" +
"primary-key: foo\n" +
"sign-key-sha3-384: Jv8_JiHiIzJVcO9M55pPdqSDWUvuhfDIBJUS-3VW7F_idjix7Ffn5qMxB21ZQuij" +
"\n\n" +
"AXNpZw=="))
c.Assert(err, IsNil)
a1, err := asserts.Decode([]byte("type: test-only\n" +
"authority-id: auth-id1\n" +
"primary-key: foo\n" +
"revision: 1\n" +
"sign-key-sha3-384: Jv8_JiHiIzJVcO9M55pPdqSDWUvuhfDIBJUS-3VW7F_idjix7Ffn5qMxB21ZQuij" +
"\n\n" +
"AXNpZw=="))
c.Assert(err, IsNil)
// Put newer revision, follwed by old revision.
err = bs.Put(asserts.TestOnlyType, a1)
c.Assert(err, IsNil)
err = bs.Put(asserts.TestOnlyType, a0)
c.Check(err, ErrorMatches, `revision 0 is older than current revision 1`)
c.Check(err, DeepEquals, &asserts.RevisionError{Current: 1, Used: 0})
}
示例2: TestEncoderSingleDecodeOK
func (as *assertsSuite) TestEncoderSingleDecodeOK(c *C) {
encoded := []byte("type: test-only\n" +
"authority-id: auth-id2\n" +
"primary-key: abc\n" +
"revision: 5\n" +
"header1: value1\n" +
"header2: value2\n" +
"body-length: 8\n" +
"sign-key-sha3-384: Jv8_JiHiIzJVcO9M55pPdqSDWUvuhfDIBJUS-3VW7F_idjix7Ffn5qMxB21ZQuij\n\n" +
"THE-BODY" +
"\n\n" +
"AXNpZw==")
a0, err := asserts.Decode(encoded)
c.Assert(err, IsNil)
cont0, _ := a0.Signature()
stream := new(bytes.Buffer)
enc := asserts.NewEncoder(stream)
enc.Encode(a0)
a1, err := asserts.Decode(stream.Bytes())
c.Assert(err, IsNil)
cont1, _ := a1.Signature()
c.Check(cont1, DeepEquals, cont0)
}
示例3: TestSearch
func (mbss *memBackstoreSuite) TestSearch(c *C) {
encoded := "type: test-only\n" +
"authority-id: auth-id1\n" +
"primary-key: one\n" +
"other: other1\n" +
"sign-key-sha3-384: Jv8_JiHiIzJVcO9M55pPdqSDWUvuhfDIBJUS-3VW7F_idjix7Ffn5qMxB21ZQuij" +
"\n\n" +
"AXNpZw=="
a1, err := asserts.Decode([]byte(encoded))
c.Assert(err, IsNil)
encoded = "type: test-only\n" +
"authority-id: auth-id1\n" +
"primary-key: two\n" +
"other: other2\n" +
"sign-key-sha3-384: Jv8_JiHiIzJVcO9M55pPdqSDWUvuhfDIBJUS-3VW7F_idjix7Ffn5qMxB21ZQuij" +
"\n\n" +
"AXNpZw=="
a2, err := asserts.Decode([]byte(encoded))
c.Assert(err, IsNil)
err = mbss.bs.Put(asserts.TestOnlyType, a1)
c.Assert(err, IsNil)
err = mbss.bs.Put(asserts.TestOnlyType, a2)
c.Assert(err, IsNil)
found := map[string]asserts.Assertion{}
cb := func(a asserts.Assertion) {
found[a.HeaderString("primary-key")] = a
}
err = mbss.bs.Search(asserts.TestOnlyType, nil, cb, 0)
c.Assert(err, IsNil)
c.Check(found, HasLen, 2)
found = map[string]asserts.Assertion{}
err = mbss.bs.Search(asserts.TestOnlyType, map[string]string{
"primary-key": "one",
}, cb, 0)
c.Assert(err, IsNil)
c.Check(found, DeepEquals, map[string]asserts.Assertion{
"one": a1,
})
found = map[string]asserts.Assertion{}
err = mbss.bs.Search(asserts.TestOnlyType, map[string]string{
"other": "other2",
}, cb, 0)
c.Assert(err, IsNil)
c.Check(found, DeepEquals, map[string]asserts.Assertion{
"two": a2,
})
found = map[string]asserts.Assertion{}
err = mbss.bs.Search(asserts.TestOnlyType, map[string]string{
"primary-key": "two",
"other": "other1",
}, cb, 0)
c.Assert(err, IsNil)
c.Check(found, HasLen, 0)
}
示例4: TestGetFormat
func (fsbss *fsBackstoreSuite) TestGetFormat(c *C) {
topDir := filepath.Join(c.MkDir(), "asserts-db")
bs, err := asserts.OpenFSBackstore(topDir)
c.Assert(err, IsNil)
af0, err := asserts.Decode([]byte("type: test-only\n" +
"authority-id: auth-id1\n" +
"primary-key: foo\n" +
"sign-key-sha3-384: Jv8_JiHiIzJVcO9M55pPdqSDWUvuhfDIBJUS-3VW7F_idjix7Ffn5qMxB21ZQuij" +
"\n\n" +
"AXNpZw=="))
c.Assert(err, IsNil)
af1, err := asserts.Decode([]byte("type: test-only\n" +
"authority-id: auth-id1\n" +
"primary-key: foo\n" +
"format: 1\n" +
"revision: 1\n" +
"sign-key-sha3-384: Jv8_JiHiIzJVcO9M55pPdqSDWUvuhfDIBJUS-3VW7F_idjix7Ffn5qMxB21ZQuij" +
"\n\n" +
"AXNpZw=="))
c.Assert(err, IsNil)
af2, err := asserts.Decode([]byte("type: test-only\n" +
"authority-id: auth-id1\n" +
"primary-key: zoo\n" +
"format: 2\n" +
"revision: 22\n" +
"sign-key-sha3-384: Jv8_JiHiIzJVcO9M55pPdqSDWUvuhfDIBJUS-3VW7F_idjix7Ffn5qMxB21ZQuij" +
"\n\n" +
"AXNpZw=="))
c.Assert(err, IsNil)
err = bs.Put(asserts.TestOnlyType, af0)
c.Assert(err, IsNil)
err = bs.Put(asserts.TestOnlyType, af1)
c.Assert(err, IsNil)
a, err := bs.Get(asserts.TestOnlyType, []string{"foo"}, 1)
c.Assert(err, IsNil)
c.Check(a.Revision(), Equals, 1)
a, err = bs.Get(asserts.TestOnlyType, []string{"foo"}, 0)
c.Assert(err, IsNil)
c.Check(a.Revision(), Equals, 0)
a, err = bs.Get(asserts.TestOnlyType, []string{"zoo"}, 0)
c.Assert(err, Equals, asserts.ErrNotFound)
err = bs.Put(asserts.TestOnlyType, af2)
c.Assert(err, IsNil)
a, err = bs.Get(asserts.TestOnlyType, []string{"zoo"}, 1)
c.Assert(err, Equals, asserts.ErrNotFound)
a, err = bs.Get(asserts.TestOnlyType, []string{"zoo"}, 2)
c.Assert(err, IsNil)
c.Check(a.Revision(), Equals, 22)
}
示例5: init
func init() {
stagingTrustedAccount, err := asserts.Decode([]byte(encodedStagingTrustedAccount))
if err != nil {
panic(fmt.Sprintf("cannot decode trusted assertion: %v", err))
}
stagingRootAccountKey, err := asserts.Decode([]byte(encodedStagingRootAccountKey))
if err != nil {
panic(fmt.Sprintf("cannot decode trusted assertion: %v", err))
}
trustedStagingAssertions = []asserts.Assertion{stagingTrustedAccount, stagingRootAccountKey}
}
示例6: init
func init() {
canonicalAccount, err := asserts.Decode([]byte(encodedCanonicalAccount))
if err != nil {
panic(fmt.Sprintf("cannot decode trusted assertion: %v", err))
}
canonicalRootAccountKey, err := asserts.Decode([]byte(encodedCanonicalRootAccountKey))
if err != nil {
panic(fmt.Sprintf("cannot decode trusted assertion: %v", err))
}
trustedAssertions = []asserts.Assertion{canonicalAccount, canonicalRootAccountKey}
}
示例7: TestUntilNoModels
func (s *systemUserSuite) TestUntilNoModels(c *C) {
// no models is good for <1y
su := strings.Replace(s.systemUserStr, s.modelsLine, "", -1)
_, err := asserts.Decode([]byte(su))
c.Check(err, IsNil)
// but invalid for more than one year
oneYearPlusOne := time.Now().AddDate(1, 0, 1).Truncate(time.Second)
su = strings.Replace(su, s.untilLine, fmt.Sprintf("until: %s\n", oneYearPlusOne.Format(time.RFC3339)), -1)
_, err = asserts.Decode([]byte(su))
c.Check(err, ErrorMatches, systemUserErrPrefix+"'until' time cannot be more than 365 days in the future when no models are specified")
}
示例8: TestDecodeStoreIsOptional
func (mods *modelSuite) TestDecodeStoreIsOptional(c *C) {
withTimestamp := strings.Replace(modelExample, "TSLINE", mods.tsLine, 1)
encoded := strings.Replace(withTimestamp, "store: brand-store\n", "store: \n", 1)
a, err := asserts.Decode([]byte(encoded))
c.Assert(err, IsNil)
model := a.(*asserts.Model)
c.Check(model.Store(), Equals, "")
encoded = strings.Replace(withTimestamp, "store: brand-store\n", "", 1)
a, err = asserts.Decode([]byte(encoded))
c.Assert(err, IsNil)
model = a.(*asserts.Model)
c.Check(model.Store(), Equals, "")
}
示例9: TestDecodeSystemUserAuthorityIsOptional
func (mods *modelSuite) TestDecodeSystemUserAuthorityIsOptional(c *C) {
withTimestamp := strings.Replace(modelExample, "TSLINE", mods.tsLine, 1)
encoded := strings.Replace(withTimestamp, sysUserAuths, "", 1)
a, err := asserts.Decode([]byte(encoded))
c.Assert(err, IsNil)
model := a.(*asserts.Model)
// the default is just to accept the brand itself
c.Check(model.SystemUserAuthority(), DeepEquals, []string{"brand-id1"})
encoded = strings.Replace(withTimestamp, sysUserAuths, "system-user-authority:\n - foo\n - bar\n", 1)
a, err = asserts.Decode([]byte(encoded))
c.Assert(err, IsNil)
model = a.(*asserts.Model)
c.Check(model.SystemUserAuthority(), DeepEquals, []string{"foo", "bar"})
}
示例10: collectAssertions
func (s *Store) collectAssertions() (asserts.Backstore, error) {
bs := asserts.NewMemoryBackstore()
add := func(a asserts.Assertion) {
bs.Put(a.Type(), a)
}
for _, t := range sysdb.Trusted() {
add(t)
}
add(systestkeys.TestRootAccount)
add(systestkeys.TestRootAccountKey)
add(systestkeys.TestStoreAccountKey)
aFiles, err := filepath.Glob(filepath.Join(s.assertDir, "*"))
if err != nil {
return nil, err
}
for _, fn := range aFiles {
b, err := ioutil.ReadFile(fn)
if err != nil {
return nil, err
}
a, err := asserts.Decode(b)
if err != nil {
return nil, err
}
add(a)
}
return bs, nil
}
示例11: TestSignBuildWorksDevelGrade
func (s *SnapSignBuildSuite) TestSignBuildWorksDevelGrade(c *C) {
snapFilename := "foo_1_amd64.snap"
snapContent := []byte("sample")
_err := ioutil.WriteFile(snapFilename, snapContent, 0644)
c.Assert(_err, IsNil)
defer os.Remove(snapFilename)
tempdir := c.MkDir()
for _, fileName := range []string{"pubring.gpg", "secring.gpg", "trustdb.gpg"} {
data, err := ioutil.ReadFile(filepath.Join("test-data", fileName))
c.Assert(err, IsNil)
err = ioutil.WriteFile(filepath.Join(tempdir, fileName), data, 0644)
c.Assert(err, IsNil)
}
os.Setenv("SNAP_GNUPG_HOME", tempdir)
defer os.Unsetenv("SNAP_GNUPG_HOME")
_, err := snap.Parser().ParseArgs([]string{"sign-build", snapFilename, "--developer-id", "dev-id1", "--snap-id", "snap-id-1", "--grade", "devel"})
c.Assert(err, IsNil)
assertion, err := asserts.Decode([]byte(s.Stdout()))
c.Assert(err, IsNil)
c.Check(assertion.Type(), Equals, asserts.SnapBuildType)
c.Check(assertion.HeaderString("grade"), Equals, "devel")
// check for valid signature ?!
c.Check(s.Stderr(), Equals, "")
}
示例12: decodeModelAssertion
func decodeModelAssertion(opts *Options) (*asserts.Model, error) {
fn := opts.ModelFile
rawAssert, err := ioutil.ReadFile(fn)
if err != nil {
return nil, fmt.Errorf("cannot read model assertion: %s", err)
}
ass, err := asserts.Decode(rawAssert)
if err != nil {
return nil, fmt.Errorf("cannot decode model assertion %q: %s", fn, err)
}
modela, ok := ass.(*asserts.Model)
if !ok {
return nil, fmt.Errorf("assertion in %q is not a model assertion", fn)
}
for _, rsvd := range reserved {
if modela.Header(rsvd) != nil {
return nil, fmt.Errorf("model assertion cannot have reserved/unsupported header %q set", rsvd)
}
}
return modela, nil
}
示例13: TestUntil
func (aks *accountKeySuite) TestUntil(c *C) {
untilSinceLine := "until: " + aks.since.Format(time.RFC3339) + "\n"
tests := []struct {
untilLine string
until time.Time
}{
{"", time.Time{}}, // zero time default
{aks.untilLine, aks.until}, // in the future
{untilSinceLine, aks.since}, // same as since
}
for _, test := range tests {
c.Log(test)
encoded := "type: account-key\n" +
"authority-id: canonical\n" +
"account-id: acc-id1\n" +
"name: default\n" +
"public-key-sha3-384: " + aks.keyID + "\n" +
aks.sinceLine +
test.untilLine +
fmt.Sprintf("body-length: %v", len(aks.pubKeyBody)) + "\n" +
"sign-key-sha3-384: Jv8_JiHiIzJVcO9M55pPdqSDWUvuhfDIBJUS-3VW7F_idjix7Ffn5qMxB21ZQuij" + "\n\n" +
aks.pubKeyBody + "\n\n" +
"openpgp c2ln"
a, err := asserts.Decode([]byte(encoded))
c.Assert(err, IsNil)
accKey := a.(*asserts.AccountKey)
c.Check(accKey.Until(), Equals, test.until)
}
}
示例14: TestDeviceSessionRequestDecodeInvalid
func (ss *serialSuite) TestDeviceSessionRequestDecodeInvalid(c *C) {
tsLine := "timestamp: " + time.Now().Format(time.RFC3339) + "\n"
encoded := "type: device-session-request\n" +
"brand-id: brand-id1\n" +
"model: baz-3000\n" +
"serial: 99990\n" +
"nonce: NONCE\n" +
tsLine +
"body-length: 0\n" +
"sign-key-sha3-384: " + ss.deviceKey.PublicKey().ID() + "\n\n" +
"AXNpZw=="
invalidTests := []struct{ original, invalid, expectedErr string }{
{"brand-id: brand-id1\n", "brand-id: \n", `"brand-id" header should not be empty`},
{"model: baz-3000\n", "model: \n", `"model" header should not be empty`},
{"serial: 99990\n", "", `"serial" header is mandatory`},
{"nonce: NONCE\n", "nonce: \n", `"nonce" header should not be empty`},
{tsLine, "timestamp: 12:30\n", `"timestamp" header is not a RFC3339 date: .*`},
}
for _, test := range invalidTests {
invalid := strings.Replace(encoded, test.original, test.invalid, 1)
_, err := asserts.Decode([]byte(invalid))
c.Check(err, ErrorMatches, deviceSessReqErrPrefix+test.expectedErr)
}
}
示例15: TestAccountKeyRequestHappy
func (aks *accountKeySuite) TestAccountKeyRequestHappy(c *C) {
akr, err := asserts.SignWithoutAuthority(asserts.AccountKeyRequestType,
map[string]interface{}{
"account-id": "acc-id1",
"name": "default",
"public-key-sha3-384": aks.keyID,
"since": aks.since.Format(time.RFC3339),
}, []byte(aks.pubKeyBody), aks.privKey)
c.Assert(err, IsNil)
// roundtrip
a, err := asserts.Decode(asserts.Encode(akr))
c.Assert(err, IsNil)
akr2, ok := a.(*asserts.AccountKeyRequest)
c.Assert(ok, Equals, true)
db := aks.openDB(c)
aks.prereqAccount(c, db)
err = db.Check(akr2)
c.Check(err, IsNil)
c.Check(akr2.AccountID(), Equals, "acc-id1")
c.Check(akr2.Name(), Equals, "default")
c.Check(akr2.PublicKeyID(), Equals, aks.keyID)
c.Check(akr2.Since(), Equals, aks.since)
}