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
}