A RetroSearch Logo

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

Search Query:

Showing content from https://github.com/cloudflare/cfssl/commit/38b82406acc59d214d4d282d0dcb592a40770f52 below:

Added support for general OID names in CSRs · cloudflare/cfssl@38b8240 · GitHub

@@ -12,9 +12,11 @@ import (

12 12

"encoding/asn1"

13 13

"encoding/pem"

14 14

"errors"

15 +

"fmt"

15 16

"net"

16 17

"net/mail"

17 18

"net/url"

19 +

"strconv"

18 20

"strings"

19 21 20 22

cferr "github.com/cloudflare/cfssl/errors"

@@ -30,12 +32,13 @@ const (

30 32 31 33

// A Name contains the SubjectInfo fields.

32 34

type Name struct {

33 -

C string `json:"C,omitempty" yaml:"C,omitempty"` // Country

34 -

ST string `json:"ST,omitempty" yaml:"ST,omitempty"` // State

35 -

L string `json:"L,omitempty" yaml:"L,omitempty"` // Locality

36 -

O string `json:"O,omitempty" yaml:"O,omitempty"` // OrganisationName

37 -

OU string `json:"OU,omitempty" yaml:"OU,omitempty"` // OrganisationalUnitName

38 -

SerialNumber string `json:"SerialNumber,omitempty" yaml:"SerialNumber,omitempty"`

35 +

C string `json:"C,omitempty" yaml:"C,omitempty"` // Country

36 +

ST string `json:"ST,omitempty" yaml:"ST,omitempty"` // State

37 +

L string `json:"L,omitempty" yaml:"L,omitempty"` // Locality

38 +

O string `json:"O,omitempty" yaml:"O,omitempty"` // OrganisationName

39 +

OU string `json:"OU,omitempty" yaml:"OU,omitempty"` // OrganisationalUnitName

40 +

SerialNumber string `json:"SerialNumber,omitempty" yaml:"SerialNumber,omitempty"`

41 +

OID map[string]string `json:"OID,omitempty", yaml:"OID,omitempty"`

39 42

}

40 43 41 44

// A KeyRequest contains the algorithm and key size for a new private key.

@@ -157,8 +160,24 @@ func appendIf(s string, a *[]string) {

157 160

}

158 161

}

159 162 163 +

func OIDFromString(s string) (asn1.ObjectIdentifier, error) {

164 +

var oid []int

165 +

parts := strings.Split(s, ".")

166 +

if len(parts) < 1 {

167 +

return oid, fmt.Errorf("invalid OID string: %s", s)

168 +

}

169 +

for _, p := range parts {

170 +

i, err := strconv.Atoi(p)

171 +

if err != nil {

172 +

return nil, fmt.Errorf("invalid OID part %s", p)

173 +

}

174 +

oid = append(oid, i)

175 +

}

176 +

return oid, nil

177 +

}

178 + 160 179

// Name returns the PKIX name for the request.

161 -

func (cr *CertificateRequest) Name() pkix.Name {

180 +

func (cr *CertificateRequest) Name() (pkix.Name, error) {

162 181

var name pkix.Name

163 182

name.CommonName = cr.CN

164 183

@@ -168,9 +187,16 @@ func (cr *CertificateRequest) Name() pkix.Name {

168 187

appendIf(n.L, &name.Locality)

169 188

appendIf(n.O, &name.Organization)

170 189

appendIf(n.OU, &name.OrganizationalUnit)

190 +

for k, v := range n.OID {

191 +

oid, err := OIDFromString(k)

192 +

if err != nil {

193 +

return name, err

194 +

}

195 +

name.ExtraNames = append(name.ExtraNames, pkix.AttributeTypeAndValue{Type: oid, Value: v})

196 +

}

171 197

}

172 198

name.SerialNumber = cr.SerialNumber

173 -

return name

199 +

return name, nil

174 200

}

175 201 176 202

// BasicConstraints CSR information RFC 5280, 4.2.1.9

@@ -234,6 +260,7 @@ func ParseRequest(req *CertificateRequest) (csr, key []byte, err error) {

234 260

// from an existing certificate. For a root certificate, the CA expiry

235 261

// length is calculated as the duration between cert.NotAfter and cert.NotBefore.

236 262

func ExtractCertificateRequest(cert *x509.Certificate) *CertificateRequest {

263 +

fmt.Printf("ExctractCertificateRequest %+v\n", *cert)

237 264

req := New()

238 265

req.CN = cert.Subject.CommonName

239 266

req.Names = getNames(cert.Subject)

@@ -367,8 +394,13 @@ func Generate(priv crypto.Signer, req *CertificateRequest) (csr []byte, err erro

367 394

return nil, cferr.New(cferr.PrivateKeyError, cferr.Unavailable)

368 395

}

369 396 397 +

subj, err := req.Name()

398 +

if err != nil {

399 +

return nil, err

400 +

}

401 + 370 402

var tpl = x509.CertificateRequest{

371 -

Subject: req.Name(),

403 +

Subject: subj,

372 404

SignatureAlgorithm: sigAlgo,

373 405

}

374 406

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