forked from intel/trustauthority-client-for-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
attest.go
34 lines (28 loc) · 1.12 KB
/
attest.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*
* Copyright (c) 2022-2023 Intel Corporation
* All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause
*/
package connector
import (
"github.com/pkg/errors"
)
// Attest is used to initiate remote attestation with Trust Authority
func (connector *trustAuthorityConnector) Attest(args AttestArgs) (AttestResponse, error) {
var response AttestResponse
nonceResponse, err := connector.GetNonce(GetNonceArgs{args.RequestId})
response.Headers = nonceResponse.Headers
if err != nil {
return response, errors.Errorf("Failed to collect nonce from Trust Authority: %s", err)
}
evidence, err := args.Adapter.CollectEvidence(append(nonceResponse.Nonce.Val, nonceResponse.Nonce.Iat[:]...))
if err != nil {
return response, errors.Errorf("Failed to collect evidence from adapter: %s", err)
}
tokenResponse, err := connector.GetToken(GetTokenArgs{nonceResponse.Nonce, evidence, args.PolicyIds, args.RequestId})
response.Token, response.Headers = tokenResponse.Token, tokenResponse.Headers
if err != nil {
return response, errors.Errorf("Failed to collect token from Trust Authority: %s", err)
}
return response, nil
}