forked from prebid/prebid-server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinprocesssigner.go
42 lines (38 loc) · 1.42 KB
/
inprocesssigner.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
35
36
37
38
39
40
41
42
package adscert
import (
"crypto/rand"
"github.com/IABTechLab/adscert/pkg/adscert/api"
"github.com/IABTechLab/adscert/pkg/adscert/discovery"
"github.com/IABTechLab/adscert/pkg/adscert/signatory"
"github.com/benbjohnson/clock"
"github.com/prebid/prebid-server/config"
"time"
)
// inProcessSigner holds the signatory to add adsCert header to requests using in process go library
type inProcessSigner struct {
signatory signatory.AuthenticatedConnectionsSignatory
}
// Sign adds adsCert header to requests using in process go library
func (ips *inProcessSigner) Sign(destinationURL string, body []byte) (string, error) {
req := &api.AuthenticatedConnectionSignatureRequest{
RequestInfo: createRequestInfo(destinationURL, body),
}
signatureResponse, err := ips.signatory.SignAuthenticatedConnection(req)
if err != nil {
return "", err
}
return getSignatureMessage(signatureResponse)
}
func newInProcessSigner(inProcessSignerConfig config.AdsCertInProcess) (*inProcessSigner, error) {
return &inProcessSigner{
signatory: signatory.NewLocalAuthenticatedConnectionsSignatory(
inProcessSignerConfig.Origin,
rand.Reader,
clock.New(),
discovery.NewDefaultDnsResolver(),
discovery.NewDefaultDomainStore(),
time.Duration(inProcessSignerConfig.DNSCheckIntervalInSeconds)*time.Second,
time.Duration(inProcessSignerConfig.DNSRenewalIntervalInSeconds)*time.Second,
[]string{inProcessSignerConfig.PrivateKey}),
}, nil
}