11package sign
22
33import (
4- "crypto/rsa "
4+ "crypto"
55 "fmt"
66 "net/http"
77 "strings"
@@ -55,22 +55,20 @@ func (o CookieOptions) apply(opts ...func(*CookieOptions)) CookieOptions {
5555// The signer is safe to use concurrently, but the optional cookies options
5656// are not safe to modify concurrently.
5757type CookieSigner struct {
58- keyID string
59- privKey * rsa. PrivateKey
58+ keyID string
59+ signer crypto. Signer
6060
6161 Opts CookieOptions
6262}
6363
6464// NewCookieSigner constructs and returns a new CookieSigner to be used to for
6565// signing Amazon CloudFront URL resources with.
66- func NewCookieSigner (keyID string , privKey * rsa. PrivateKey , opts ... func (* CookieOptions )) * CookieSigner {
67- signer := & CookieSigner {
68- keyID : keyID ,
69- privKey : privKey ,
70- Opts : CookieOptions {}.apply (opts ... ),
66+ func NewCookieSigner (keyID string , signer crypto. Signer , opts ... func (* CookieOptions )) * CookieSigner {
67+ return & CookieSigner {
68+ keyID : keyID ,
69+ signer : signer ,
70+ Opts : CookieOptions {}.apply (opts ... ),
7171 }
72-
73- return signer
7472}
7573
7674// Sign returns the cookies needed to allow user agents to make arbetrary
@@ -84,7 +82,7 @@ func NewCookieSigner(keyID string, privKey *rsa.PrivateKey, opts ...func(*Cookie
8482//
8583// Example:
8684//
87- // s := sign.NewCookieSigner(keyID, privKey )
85+ // s := sign.NewCookieSigner(keyID, signer )
8886//
8987// // Get Signed cookies for a resource that will expire in 1 hour
9088// cookies, err := s.Sign("*", time.Now().Add(1 * time.Hour))
@@ -127,7 +125,7 @@ func (s CookieSigner) Sign(u string, expires time.Time, opts ...func(*CookieOpti
127125 }
128126
129127 p := NewCannedPolicy (resource , expires )
130- return createCookies (p , s .keyID , s .privKey , s .Opts .apply (opts ... ))
128+ return createCookies (p , s .keyID , s .signer , s .Opts .apply (opts ... ))
131129}
132130
133131// Returns and validates the URL's scheme.
@@ -154,7 +152,7 @@ func cookieURLScheme(u string) (string, error) {
154152//
155153// Example:
156154//
157- // s := sign.NewCookieSigner(keyID, privKey )
155+ // s := sign.NewCookieSigner(keyID, signer )
158156//
159157// policy := &sign.Policy{
160158// Statements: []sign.Statement{
@@ -204,13 +202,13 @@ func cookieURLScheme(u string) (string, error) {
204202// }
205203// }
206204func (s CookieSigner ) SignWithPolicy (p * Policy , opts ... func (* CookieOptions )) ([]* http.Cookie , error ) {
207- return createCookies (p , s .keyID , s .privKey , s .Opts .apply (opts ... ))
205+ return createCookies (p , s .keyID , s .signer , s .Opts .apply (opts ... ))
208206}
209207
210208// Prepares the cookies to be attached to the header. An (optional) options
211209// struct is provided in case people don't want to manually edit their cookies.
212- func createCookies (p * Policy , keyID string , privKey * rsa. PrivateKey , opt CookieOptions ) ([]* http.Cookie , error ) {
213- b64Sig , b64Policy , err := p .Sign (privKey )
210+ func createCookies (p * Policy , keyID string , signer crypto. Signer , opt CookieOptions ) ([]* http.Cookie , error ) {
211+ b64Sig , b64Policy , err := p .Sign (signer )
214212 if err != nil {
215213 return nil , err
216214 }
0 commit comments