1// Code generated by smithy-go-codegen DO NOT EDIT.
2
3package signer
4
5import (
6	"context"
7	"fmt"
8	awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
9	"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
10	"github.com/aws/aws-sdk-go-v2/service/signer/types"
11	"github.com/aws/smithy-go/middleware"
12	smithyhttp "github.com/aws/smithy-go/transport/http"
13)
14
15// Initiates a signing job to be performed on the code provided. Signing jobs are
16// viewable by the ListSigningJobs operation for two years after they are
17// performed. Note the following requirements:
18//
19// * You must create an Amazon S3
20// source bucket. For more information, see Create a Bucket
21// (http://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html) in the
22// Amazon S3 Getting Started Guide.
23//
24// * Your S3 source bucket must be version
25// enabled.
26//
27// * You must create an S3 destination bucket. Code signing uses your S3
28// destination bucket to write your signed code.
29//
30// * You specify the name of the
31// source and destination buckets when calling the StartSigningJob operation.
32//
33// *
34// You must also specify a request token that identifies your request to code
35// signing.
36//
37// You can call the DescribeSigningJob and the ListSigningJobs actions
38// after you call StartSigningJob. For a Java example that shows how to use this
39// action, see http://docs.aws.amazon.com/acm/latest/userguide/
40// (http://docs.aws.amazon.com/acm/latest/userguide/)
41func (c *Client) StartSigningJob(ctx context.Context, params *StartSigningJobInput, optFns ...func(*Options)) (*StartSigningJobOutput, error) {
42	if params == nil {
43		params = &StartSigningJobInput{}
44	}
45
46	result, metadata, err := c.invokeOperation(ctx, "StartSigningJob", params, optFns, addOperationStartSigningJobMiddlewares)
47	if err != nil {
48		return nil, err
49	}
50
51	out := result.(*StartSigningJobOutput)
52	out.ResultMetadata = metadata
53	return out, nil
54}
55
56type StartSigningJobInput struct {
57
58	// String that identifies the signing request. All calls after the first that use
59	// this token return the same response as the first call.
60	//
61	// This member is required.
62	ClientRequestToken *string
63
64	// The S3 bucket in which to save your signed object. The destination contains the
65	// name of your bucket and an optional prefix.
66	//
67	// This member is required.
68	Destination *types.Destination
69
70	// The name of the signing profile.
71	//
72	// This member is required.
73	ProfileName *string
74
75	// The S3 bucket that contains the object to sign or a BLOB that contains your raw
76	// code.
77	//
78	// This member is required.
79	Source *types.Source
80
81	// The AWS account ID of the signing profile owner.
82	ProfileOwner *string
83}
84
85type StartSigningJobOutput struct {
86
87	// The ID of your signing job.
88	JobId *string
89
90	// The AWS account ID of the signing job owner.
91	JobOwner *string
92
93	// Metadata pertaining to the operation's result.
94	ResultMetadata middleware.Metadata
95}
96
97func addOperationStartSigningJobMiddlewares(stack *middleware.Stack, options Options) (err error) {
98	err = stack.Serialize.Add(&awsRestjson1_serializeOpStartSigningJob{}, middleware.After)
99	if err != nil {
100		return err
101	}
102	err = stack.Deserialize.Add(&awsRestjson1_deserializeOpStartSigningJob{}, middleware.After)
103	if err != nil {
104		return err
105	}
106	if err = addSetLoggerMiddleware(stack, options); err != nil {
107		return err
108	}
109	if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil {
110		return err
111	}
112	if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil {
113		return err
114	}
115	if err = addResolveEndpointMiddleware(stack, options); err != nil {
116		return err
117	}
118	if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil {
119		return err
120	}
121	if err = addRetryMiddlewares(stack, options); err != nil {
122		return err
123	}
124	if err = addHTTPSignerV4Middleware(stack, options); err != nil {
125		return err
126	}
127	if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
128		return err
129	}
130	if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil {
131		return err
132	}
133	if err = addClientUserAgent(stack); err != nil {
134		return err
135	}
136	if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
137		return err
138	}
139	if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
140		return err
141	}
142	if err = addIdempotencyToken_opStartSigningJobMiddleware(stack, options); err != nil {
143		return err
144	}
145	if err = addOpStartSigningJobValidationMiddleware(stack); err != nil {
146		return err
147	}
148	if err = stack.Initialize.Add(newServiceMetadataMiddleware_opStartSigningJob(options.Region), middleware.Before); err != nil {
149		return err
150	}
151	if err = addRequestIDRetrieverMiddleware(stack); err != nil {
152		return err
153	}
154	if err = addResponseErrorMiddleware(stack); err != nil {
155		return err
156	}
157	if err = addRequestResponseLogging(stack, options); err != nil {
158		return err
159	}
160	return nil
161}
162
163type idempotencyToken_initializeOpStartSigningJob struct {
164	tokenProvider IdempotencyTokenProvider
165}
166
167func (*idempotencyToken_initializeOpStartSigningJob) ID() string {
168	return "OperationIdempotencyTokenAutoFill"
169}
170
171func (m *idempotencyToken_initializeOpStartSigningJob) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
172	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
173) {
174	if m.tokenProvider == nil {
175		return next.HandleInitialize(ctx, in)
176	}
177
178	input, ok := in.Parameters.(*StartSigningJobInput)
179	if !ok {
180		return out, metadata, fmt.Errorf("expected middleware input to be of type *StartSigningJobInput ")
181	}
182
183	if input.ClientRequestToken == nil {
184		t, err := m.tokenProvider.GetIdempotencyToken()
185		if err != nil {
186			return out, metadata, err
187		}
188		input.ClientRequestToken = &t
189	}
190	return next.HandleInitialize(ctx, in)
191}
192func addIdempotencyToken_opStartSigningJobMiddleware(stack *middleware.Stack, cfg Options) error {
193	return stack.Initialize.Add(&idempotencyToken_initializeOpStartSigningJob{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before)
194}
195
196func newServiceMetadataMiddleware_opStartSigningJob(region string) *awsmiddleware.RegisterServiceMetadata {
197	return &awsmiddleware.RegisterServiceMetadata{
198		Region:        region,
199		ServiceID:     ServiceID,
200		SigningName:   "signer",
201		OperationName: "StartSigningJob",
202	}
203}
204