func()

in internal/signer/signer.go [52:92]


func (s *Signer) GenerateEnvelope(ctx context.Context, request *plugin.GenerateEnvelopeRequest) (*plugin.GenerateEnvelopeResponse, error) {
	log := logger.GetLogger(ctx)

	log.Debug("validating request")
	if err := validate(request); err != nil {
		return nil, err
	}
	log.Debug("succeeded request validation")

	log.Debug("validating signing profile")
	signingProfileArn, err := arn.Parse(request.KeyID)
	if err != nil {
		return nil, plugin.NewValidationErrorf(errorMsgMalformedSigningProfileFmt, request.KeyID)
	}
	signingProfileName, err := getProfileName(signingProfileArn)
	if err != nil {
		return nil, err
	}
	log.Debug("succeeded signing profile validation")

	log.Debug("calling AWS Signer's SignPayload API")
	input := &signer.SignPayloadInput{
		Payload:       request.Payload,
		ProfileName:   &signingProfileName,
		PayloadFormat: &request.PayloadType,
		ProfileOwner:  &signingProfileArn.AccountID,
	}
	output, err := s.awssigner.SignPayload(ctx, input)
	if err != nil {
		log.Debugf("failed AWS Signer's SignPayload API call with error: %v", err)
		return nil, parseAwsError(err)
	}

	res := &plugin.GenerateEnvelopeResponse{
		SignatureEnvelope:     output.Signature,
		SignatureEnvelopeType: request.SignatureEnvelopeType,
		Annotations:           output.Metadata}
	log.Debugf("succeeded AWS Signer's SignPayload API call. output: %s", res)

	return res, nil
}