本文整理汇总了Golang中github.com/snapcore/snapd/asserts.SignWithoutAuthority函数的典型用法代码示例。如果您正苦于以下问题:Golang SignWithoutAuthority函数的具体用法?Golang SignWithoutAuthority怎么用?Golang SignWithoutAuthority使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了SignWithoutAuthority函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestSignWithoutAuthorityMisuse
func (as *assertsSuite) TestSignWithoutAuthorityMisuse(c *C) {
_, err := asserts.SignWithoutAuthority(asserts.TestOnlyType, nil, nil, testPrivKey1)
c.Check(err, ErrorMatches, `cannot sign assertions needing a definite authority with SignWithoutAuthority`)
_, err = asserts.SignWithoutAuthority(asserts.TestOnlyNoAuthorityType,
map[string]interface{}{
"authority-id": "auth-id1",
"hdr": "FOO",
}, nil, testPrivKey1)
c.Check(err, ErrorMatches, `"test-only-no-authority" assertion cannot have authority-id set`)
}
示例2: TestSerialRequestHappy
func (ss *serialSuite) TestSerialRequestHappy(c *C) {
sreq, err := asserts.SignWithoutAuthority(asserts.SerialRequestType,
map[string]interface{}{
"brand-id": "brand-id1",
"model": "baz-3000",
"device-key": ss.encodedDevKey,
"request-id": "REQID",
}, []byte("HW-DETAILS"), ss.deviceKey)
c.Assert(err, IsNil)
// roundtrip
a, err := asserts.Decode(asserts.Encode(sreq))
c.Assert(err, IsNil)
sreq2, ok := a.(*asserts.SerialRequest)
c.Assert(ok, Equals, true)
// standalone signature check
err = asserts.SignatureCheck(sreq2, sreq2.DeviceKey())
c.Check(err, IsNil)
c.Check(sreq2.BrandID(), Equals, "brand-id1")
c.Check(sreq2.Model(), Equals, "baz-3000")
c.Check(sreq2.RequestID(), Equals, "REQID")
c.Check(sreq2.Serial(), Equals, "")
}
示例3: TestDeviceSessionRequest
func (ss *serialSuite) TestDeviceSessionRequest(c *C) {
ts := time.Now().UTC().Round(time.Second)
sessReq, err := asserts.SignWithoutAuthority(asserts.DeviceSessionRequestType,
map[string]interface{}{
"brand-id": "brand-id1",
"model": "baz-3000",
"serial": "99990",
"nonce": "NONCE",
"timestamp": ts.Format(time.RFC3339),
}, nil, ss.deviceKey)
c.Assert(err, IsNil)
// roundtrip
a, err := asserts.Decode(asserts.Encode(sessReq))
c.Assert(err, IsNil)
sessReq2, ok := a.(*asserts.DeviceSessionRequest)
c.Assert(ok, Equals, true)
// standalone signature check
err = asserts.SignatureCheck(sessReq2, ss.deviceKey.PublicKey())
c.Check(err, IsNil)
c.Check(sessReq2.BrandID(), Equals, "brand-id1")
c.Check(sessReq2.Model(), Equals, "baz-3000")
c.Check(sessReq2.Serial(), Equals, "99990")
c.Check(sessReq2.Nonce(), Equals, "NONCE")
c.Check(sessReq2.Timestamp().Equal(ts), Equals, true)
}
示例4: TestAccountKeyRequestUntil
func (aks *accountKeySuite) TestAccountKeyRequestUntil(c *C) {
db := aks.openDB(c)
aks.prereqAccount(c, db)
tests := []struct {
untilHeader string
until time.Time
}{
{"", time.Time{}}, // zero time default
{aks.until.Format(time.RFC3339), aks.until}, // in the future
{aks.since.Format(time.RFC3339), aks.since}, // same as since
}
for _, test := range tests {
c.Log(test)
headers := map[string]interface{}{
"account-id": "acc-id1",
"name": "default",
"public-key-sha3-384": aks.keyID,
"since": aks.since.Format(time.RFC3339),
}
if test.untilHeader != "" {
headers["until"] = test.untilHeader
}
akr, err := asserts.SignWithoutAuthority(asserts.AccountKeyRequestType, headers, []byte(aks.pubKeyBody), aks.privKey)
c.Assert(err, IsNil)
a, err := asserts.Decode(asserts.Encode(akr))
c.Assert(err, IsNil)
akr2 := a.(*asserts.AccountKeyRequest)
c.Check(akr2.Until(), Equals, test.until)
err = db.Check(akr2)
c.Check(err, IsNil)
}
}
示例5: 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)
}
示例6: generateSerialRequestAssertion
func generateSerialRequestAssertion() (string, error) {
privateKey, err := generatePrivateKey()
if err != nil {
return "", err
}
encodedPubKey, err := asserts.EncodePublicKey(privateKey.PublicKey())
if err != nil {
return "", err
}
// Generate a request-id
r, _ := getRequestID()
headers := map[string]interface{}{
"brand-id": request.Brand,
"device-key": string(encodedPubKey),
"request-id": r,
"model": request.Model,
"serial": request.SerialNumber,
}
sreq, err := asserts.SignWithoutAuthority(asserts.SerialRequestType, headers, []byte(""), privateKey)
if err != nil {
return "", err
}
assertSR := asserts.Encode(sreq)
return string(assertSR), nil
}
示例7: DeviceSessionRequest
// DeviceSessionRequest produces a device-session-request with the given nonce, it also returns the device serial assertion.
func (m *DeviceManager) DeviceSessionRequest(nonce string) (*asserts.DeviceSessionRequest, *asserts.Serial, error) {
m.state.Lock()
defer m.state.Unlock()
serial, err := Serial(m.state)
if err != nil {
return nil, nil, err
}
privKey, err := m.keyPair()
if err != nil {
return nil, nil, err
}
a, err := asserts.SignWithoutAuthority(asserts.DeviceSessionRequestType, map[string]interface{}{
"brand-id": serial.BrandID(),
"model": serial.Model(),
"serial": serial.Serial(),
"nonce": nonce,
"timestamp": time.Now().UTC().Format(time.RFC3339),
}, nil, privKey)
if err != nil {
return nil, nil, err
}
return a.(*asserts.DeviceSessionRequest), serial, err
}
示例8: TestAddNoAuthorityNoPrimaryKey
func (safs *signAddFindSuite) TestAddNoAuthorityNoPrimaryKey(c *C) {
headers := map[string]interface{}{
"hdr": "FOO",
}
a, err := asserts.SignWithoutAuthority(asserts.TestOnlyNoAuthorityType, headers, nil, testPrivKey0)
c.Assert(err, IsNil)
err = safs.db.Add(a)
c.Assert(err, ErrorMatches, `internal error: assertion type "test-only-no-authority" has no primary key`)
}
示例9: TestSignatureCheckError
func (ss *serialSuite) TestSignatureCheckError(c *C) {
sreq, err := asserts.SignWithoutAuthority(asserts.TestOnlyNoAuthorityType,
map[string]interface{}{
"hdr": "FOO",
}, nil, testPrivKey1)
c.Assert(err, IsNil)
err = asserts.SignatureCheck(sreq, testPrivKey2.PublicKey())
c.Check(err, ErrorMatches, `failed signature verification:.*`)
}
示例10: TestAddNoAuthorityButPrimaryKey
func (safs *signAddFindSuite) TestAddNoAuthorityButPrimaryKey(c *C) {
headers := map[string]interface{}{
"pk": "primary",
}
a, err := asserts.SignWithoutAuthority(asserts.TestOnlyNoAuthorityPKType, headers, nil, testPrivKey0)
c.Assert(err, IsNil)
err = safs.db.Add(a)
c.Assert(err, ErrorMatches, `cannot check no-authority assertion type "test-only-no-authority-pk"`)
}
示例11: prepareSerialRequest
func prepareSerialRequest(t *state.Task, privKey asserts.PrivateKey, device *auth.DeviceState, client *http.Client, cfg *serialRequestConfig) (string, error) {
st := t.State()
st.Unlock()
defer st.Lock()
req, err := http.NewRequest("POST", cfg.requestIDURL, nil)
if err != nil {
return "", fmt.Errorf("internal error: cannot create request-id request %q", cfg.requestIDURL)
}
cfg.applyHeaders(req)
resp, err := client.Do(req)
if err != nil {
return "", retryErr(t, "cannot retrieve request-id for making a request for a serial: %v", err)
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
return "", retryErr(t, "cannot retrieve request-id for making a request for a serial: unexpected status %d", resp.StatusCode)
}
dec := json.NewDecoder(resp.Body)
var requestID requestIDResp
err = dec.Decode(&requestID)
if err != nil { // assume broken i/o
return "", retryErr(t, "cannot read response with request-id for making a request for a serial: %v", err)
}
encodedPubKey, err := asserts.EncodePublicKey(privKey.PublicKey())
if err != nil {
return "", fmt.Errorf("internal error: cannot encode device public key: %v", err)
}
headers := map[string]interface{}{
"brand-id": device.Brand,
"model": device.Model,
"request-id": requestID.RequestID,
"device-key": string(encodedPubKey),
}
if cfg.proposedSerial != "" {
headers["serial"] = cfg.proposedSerial
}
serialReq, err := asserts.SignWithoutAuthority(asserts.SerialRequestType, headers, cfg.body, privKey)
if err != nil {
return "", err
}
return string(asserts.Encode(serialReq)), nil
}
示例12: TestAccountKeyRequestNoAccount
func (aks *accountKeySuite) TestAccountKeyRequestNoAccount(c *C) {
headers := map[string]interface{}{
"account-id": "acc-id1",
"name": "default",
"public-key-sha3-384": aks.keyID,
"since": aks.since.Format(time.RFC3339),
}
akr, err := asserts.SignWithoutAuthority(asserts.AccountKeyRequestType, headers, []byte(aks.pubKeyBody), aks.privKey)
c.Assert(err, IsNil)
db := aks.openDB(c)
err = db.Check(akr)
c.Assert(err, ErrorMatches, `account-key-request assertion for "acc-id1" does not have a matching account assertion`)
}
示例13: Execute
func (x *cmdExportKey) Execute(args []string) error {
if len(args) > 0 {
return ErrExtraArgs
}
keyName := string(x.Positional.KeyName)
if keyName == "" {
keyName = "default"
}
manager := asserts.NewGPGKeypairManager()
if x.Account != "" {
privKey, err := manager.GetByName(keyName)
if err != nil {
return err
}
pubKey := privKey.PublicKey()
headers := map[string]interface{}{
"account-id": x.Account,
"name": keyName,
"public-key-sha3-384": pubKey.ID(),
"since": time.Now().UTC().Format(time.RFC3339),
// XXX: To support revocation, we need to check for matching known assertions and set a suitable revision if we find one.
}
body, err := asserts.EncodePublicKey(pubKey)
if err != nil {
return err
}
assertion, err := asserts.SignWithoutAuthority(asserts.AccountKeyRequestType, headers, body, privKey)
if err != nil {
return err
}
fmt.Fprint(Stdout, string(asserts.Encode(assertion)))
} else {
encoded, err := manager.Export(keyName)
if err != nil {
return err
}
fmt.Fprintf(Stdout, "%s\n", encoded)
}
return nil
}
示例14: TestSerialProofHappy
func (ss *serialSuite) TestSerialProofHappy(c *C) {
sproof, err := asserts.SignWithoutAuthority(asserts.SerialProofType,
map[string]interface{}{
"nonce": "NONCE",
}, nil, ss.deviceKey)
c.Assert(err, IsNil)
// roundtrip
a, err := asserts.Decode(asserts.Encode(sproof))
c.Assert(err, IsNil)
sproof2, ok := a.(*asserts.SerialProof)
c.Assert(ok, Equals, true)
// standalone signature check
err = asserts.SignatureCheck(sproof2, ss.deviceKey.PublicKey())
c.Check(err, IsNil)
c.Check(sproof2.Nonce(), Equals, "NONCE")
}
示例15: generateSerialRequestAssertion
func generateSerialRequestAssertion(model, serial string) (string, error) {
privateKey, _ := generatePrivateKey()
encodedPubKey, _ := asserts.EncodePublicKey(privateKey.PublicKey())
headers := map[string]interface{}{
"brand-id": "System",
"device-key": string(encodedPubKey),
"request-id": "REQID",
"model": model,
}
body := fmt.Sprintf("serial: %s", serial)
sreq, err := asserts.SignWithoutAuthority(asserts.SerialRequestType, headers, []byte(body), privateKey)
if err != nil {
return "", err
}
assertSR := asserts.Encode(sreq)
return string(assertSR), nil
}