A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/cloudflare/gokeyless/commit/463b231b4ae56f4b5cc08a8d05bb3348aa807cb9 below:

Merge pull request #277 from nickysemenza/add-opentracing · cloudflare/gokeyless@463b231 · GitHub

1 1

package client

2 2 3 3

import (

4 +

"context"

4 5

"crypto"

5 6

"crypto/ecdsa"

6 7

"crypto/rsa"

@@ -18,7 +19,9 @@ import (

18 19 19 20

"github.com/cloudflare/cfssl/log"

20 21

"github.com/cloudflare/gokeyless/protocol"

22 +

"github.com/cloudflare/gokeyless/tracing"

21 23

"github.com/lziest/ttlcache"

24 +

"github.com/opentracing/opentracing-go"

22 25

)

23 26 24 27

const (

@@ -190,8 +193,10 @@ func (c *Client) getRemote(server string) (Remote, error) {

190 193

// NewRemoteSignerWithCertID returns a remote keyserver based crypto.Signer

191 194

// ski, sni, serverIP, and certID are used to identify the key by the remote

192 195

// keyserver.

193 -

func NewRemoteSignerWithCertID(c *Client, keyserver string, ski protocol.SKI,

196 +

func NewRemoteSignerWithCertID(ctx context.Context, c *Client, keyserver string, ski protocol.SKI,

194 197

pub crypto.PublicKey, sni string, certID string, serverIP net.IP) (crypto.Signer, error) {

198 +

span, _ := opentracing.StartSpanFromContext(ctx, "client.NewRemoteSignerWithCertID")

199 +

defer span.Finish()

195 200

priv := PrivateKey{

196 201

public: pub,

197 202

client: c,

@@ -201,6 +206,11 @@ func NewRemoteSignerWithCertID(c *Client, keyserver string, ski protocol.SKI,

201 206

keyserver: keyserver,

202 207

certID: certID,

203 208

}

209 +

var err error

210 +

priv.JaegerSpan, err = tracing.SpanContextToBinary(span.Context())

211 +

if err != nil {

212 +

log.Errorf("failed to inject span: %v", err)

213 +

}

204 214 205 215

// This is due to an issue in crypto/tls, where an ECDSA key is not allowed to

206 216

// implement Decrypt.

@@ -213,8 +223,11 @@ func NewRemoteSignerWithCertID(c *Client, keyserver string, ski protocol.SKI,

213 223

// NewRemoteSigner returns a remote keyserver based crypto.Signer,

214 224

// ski, sni, and serverIP are used to identified the key by the remote

215 225

// keyserver.

216 -

func NewRemoteSigner(c *Client, keyserver string, ski protocol.SKI,

226 +

func NewRemoteSigner(ctx context.Context, c *Client, keyserver string, ski protocol.SKI,

217 227

pub crypto.PublicKey, sni string, serverIP net.IP) (crypto.Signer, error) {

228 + 229 +

span, _ := opentracing.StartSpanFromContext(ctx, "client.NewRemoteSignerWithCertID")

230 +

defer span.Finish()

218 231

priv := PrivateKey{

219 232

public: pub,

220 233

client: c,

@@ -223,6 +236,11 @@ func NewRemoteSigner(c *Client, keyserver string, ski protocol.SKI,

223 236

serverIP: serverIP,

224 237

keyserver: keyserver,

225 238

}

239 +

var err error

240 +

priv.JaegerSpan, err = tracing.SpanContextToBinary(span.Context())

241 +

if err != nil {

242 +

log.Errorf("failed to inject span: %v", err)

243 +

}

226 244 227 245

// This is due to an issue in crypto/tls, where an ECDSA key is not allowed to

228 246

// implement Decrypt.

@@ -237,42 +255,42 @@ func NewRemoteSigner(c *Client, keyserver string, ski protocol.SKI,

237 255

// SKI is computed from the public key and along with sni and serverIP,

238 256

// the remote Signer uses those key identification info to contact the

239 257

// remote keyserver for keyless operations.

240 -

func (c *Client) NewRemoteSignerTemplate(keyserver string, pub crypto.PublicKey, sni string, serverIP net.IP) (crypto.Signer, error) {

258 +

func (c *Client) NewRemoteSignerTemplate(ctx context.Context, keyserver string, pub crypto.PublicKey, sni string, serverIP net.IP) (crypto.Signer, error) {

241 259

ski, err := protocol.GetSKI(pub)

242 260

if err != nil {

243 261

return nil, err

244 262

}

245 -

return NewRemoteSigner(c, keyserver, ski, pub, sni, serverIP)

263 +

return NewRemoteSigner(ctx, c, keyserver, ski, pub, sni, serverIP)

246 264

}

247 265 248 266

// NewRemoteSignerTemplateWithCertID returns a remote keyserver

249 267

// based crypto.Signer with the public key.

250 268

// SKI is computed from public key, and along with sni, serverIP, and

251 269

// certID the remote signer uses these to contact the remote keyserver.

252 -

func (c *Client) NewRemoteSignerTemplateWithCertID(keyserver string, pub crypto.PublicKey, sni string, serverIP net.IP, certID string) (crypto.Signer, error) {

270 +

func (c *Client) NewRemoteSignerTemplateWithCertID(ctx context.Context, keyserver string, pub crypto.PublicKey, sni string, serverIP net.IP, certID string) (crypto.Signer, error) {

253 271

ski, err := protocol.GetSKI(pub)

254 272

if err != nil {

255 273

return nil, err

256 274

}

257 -

return NewRemoteSignerWithCertID(c, keyserver, ski, pub, sni, certID, serverIP)

275 +

return NewRemoteSignerWithCertID(ctx, c, keyserver, ski, pub, sni, certID, serverIP)

258 276

}

259 277 260 278

// NewRemoteSignerByPublicKey returns a remote keyserver based signer

261 279

// with the the public key.

262 -

func (c *Client) NewRemoteSignerByPublicKey(server string, pub crypto.PublicKey) (crypto.Signer, error) {

263 -

return c.NewRemoteSignerTemplate(server, pub, "", nil)

280 +

func (c *Client) NewRemoteSignerByPublicKey(ctx context.Context, server string, pub crypto.PublicKey) (crypto.Signer, error) {

281 +

return c.NewRemoteSignerTemplate(ctx, server, pub, "", nil)

264 282

}

265 283 266 284

// NewRemoteSignerByCert returns a remote keyserver based signer

267 285

// with the the public key contained in a x509.Certificate.

268 -

func (c *Client) NewRemoteSignerByCert(server string, cert *x509.Certificate) (crypto.Signer, error) {

269 -

return c.NewRemoteSignerTemplate(server, cert.PublicKey, "", nil)

286 +

func (c *Client) NewRemoteSignerByCert(ctx context.Context, server string, cert *x509.Certificate) (crypto.Signer, error) {

287 +

return c.NewRemoteSignerTemplate(ctx, server, cert.PublicKey, "", nil)

270 288

}

271 289 272 290

// NewRemoteSignerByCertPEM returns a remote keyserver based signer

273 291

// with the public key extracted from a single PEM cert

274 292

// (possibly the leaf of a chain of certs).

275 -

func (c *Client) NewRemoteSignerByCertPEM(server string, certsPEM []byte) (crypto.Signer, error) {

293 +

func (c *Client) NewRemoteSignerByCertPEM(ctx context.Context, server string, certsPEM []byte) (crypto.Signer, error) {

276 294

block, _ := pem.Decode(certsPEM)

277 295

if block == nil {

278 296

return nil, errors.New("couldn't parse PEM bytes")

@@ -283,7 +301,7 @@ func (c *Client) NewRemoteSignerByCertPEM(server string, certsPEM []byte) (crypt

283 301

return nil, err

284 302

}

285 303 286 -

return c.NewRemoteSignerTemplate(server, cert.PublicKey, "", nil)

304 +

return c.NewRemoteSignerTemplate(ctx, server, cert.PublicKey, "", nil)

287 305

}

288 306 289 307

var (

@@ -318,11 +336,11 @@ func (c *Client) ScanDir(server, dir string, LoadPubKey func([]byte) (crypto.Pub

318 336

return err

319 337

}

320 338 321 -

if priv, err = c.NewRemoteSignerByPublicKey(server, pub); err != nil {

339 +

if priv, err = c.NewRemoteSignerByPublicKey(context.Background(), server, pub); err != nil {

322 340

return err

323 341

}

324 342

} else {

325 -

if priv, err = c.NewRemoteSignerByCertPEM(server, in); err != nil {

343 +

if priv, err = c.NewRemoteSignerByCertPEM(context.Background(), server, in); err != nil {

326 344

return err

327 345

}

328 346

}

@@ -363,7 +381,7 @@ func (c *Client) LoadTLSCertificate(server, certFile string) (cert tls.Certifica

363 381

return fail(err)

364 382

}

365 383 366 -

cert.PrivateKey, err = c.NewRemoteSignerByCert(server, cert.Leaf)

384 +

cert.PrivateKey, err = c.NewRemoteSignerByCert(context.TODO(), server, cert.Leaf)

367 385

if err != nil {

368 386

return fail(err)

369 387

}


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4