X509Parameters

An X509Parameters is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions.

JSON representation
{
  "keyUsage": {
    object (KeyUsage)
  },
  "caOptions": {
    object (CaOptions)
  },
  "policyIds": [
    {
      object (ObjectId)
    }
  ],
  "aiaOcspServers": [
    string
  ],
  "nameConstraints": {
    object (NameConstraints)
  },
  "additionalExtensions": [
    {
      object (X509Extension)
    }
  ]
}
Fields
keyUsage

object (KeyUsage)

Optional. Indicates the intended use for keys that correspond to a certificate.

caOptions

object (CaOptions)

Optional. Describes options in this X509Parameters that are relevant in a CA certificate. If not specified, a default basic constraints extension with isCa=false will be added for leaf certificates.

policyIds[]

object (ObjectId)

Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.

aiaOcspServers[]

string

Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the "Authority Information Access" extension in the certificate.

nameConstraints

object (NameConstraints)

Optional. Describes the X.509 name constraints extension.

additionalExtensions[]

object (X509Extension)

Optional. Describes custom X.509 extensions.

KeyUsage

A KeyUsage describes key usage values that may appear in an X.509 certificate.

JSON representation
{
  "baseKeyUsage": {
    object (KeyUsageOptions)
  },
  "extendedKeyUsage": {
    object (ExtendedKeyUsageOptions)
  },
  "unknownExtendedKeyUsages": [
    {
      object (ObjectId)
    }
  ]
}
Fields
baseKeyUsage

object (KeyUsageOptions)

Describes high-level ways in which a key may be used.

extendedKeyUsage

object (ExtendedKeyUsageOptions)

Detailed scenarios in which a key may be used.

unknownExtendedKeyUsages[]

object (ObjectId)

Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.

KeyUsageOptions

KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3.

JSON representation
{
  "digitalSignature": boolean,
  "contentCommitment": boolean,
  "keyEncipherment": boolean,
  "dataEncipherment": boolean,
  "keyAgreement": boolean,
  "certSign": boolean,
  "crlSign": boolean,
  "encipherOnly": boolean,
  "decipherOnly": boolean
}
Fields
digitalSignature

boolean

The key may be used for digital signatures.

contentCommitment

boolean

The key may be used for cryptographic commitments. Note that this may also be referred to as "non-repudiation".

keyEncipherment

boolean

The key may be used to encipher other keys.

dataEncipherment

boolean

The key may be used to encipher data.

keyAgreement

boolean

The key may be used in a key agreement protocol.

certSign

boolean

The key may be used to sign certificates.

crlSign

boolean

The key may be used sign certificate revocation lists.

encipherOnly

boolean

The key may be used to encipher only.

decipherOnly

boolean

The key may be used to decipher only.

ExtendedKeyUsageOptions

KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value.

JSON representation
{
  "serverAuth": boolean,
  "clientAuth": boolean,
  "codeSigning": boolean,
  "emailProtection": boolean,
  "timeStamping": boolean,
  "ocspSigning": boolean
}
Fields
serverAuth

boolean

Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as "TLS WWW server authentication", though regularly used for non-WWW TLS.

clientAuth

boolean

Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as "TLS WWW client authentication", though regularly used for non-WWW TLS.

codeSigning

boolean

Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as "Signing of downloadable executable code client authentication".

emailProtection

boolean

Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as "Email protection".

timeStamping

boolean

Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as "Binding the hash of an object to a time".

ocspSigning

boolean

Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as "Signing OCSP responses".

CaOptions

Describes the X.509 basic constraints extension, per RFC 5280 section 4.2.1.9

JSON representation
{
  "isCa": boolean,
  "maxIssuerPathLength": integer
}
Fields
isCa

boolean

Optional. Refers to the "CA" boolean field in the X.509 extension. When this value is missing, the basic constraints extension will be omitted from the certificate.

maxIssuerPathLength

integer

Optional. Refers to the path length constraint field in the X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the certificate.

NameConstraints

Describes the X.509 name constraints extension, per https://tools.ietf.org/html/rfc5280#section-4.2.1.10

JSON representation
{
  "critical": boolean,
  "permittedDnsNames": [
    string
  ],
  "excludedDnsNames": [
    string
  ],
  "permittedIpRanges": [
    string
  ],
  "excludedIpRanges": [
    string
  ],
  "permittedEmailAddresses": [
    string
  ],
  "excludedEmailAddresses": [
    string
  ],
  "permittedUris": [
    string
  ],
  "excludedUris": [
    string
  ]
}
Fields
critical

boolean

Indicates whether or not the name constraints are marked critical.

permittedDnsNames[]

string

Contains permitted DNS names. Any DNS name that can be constructed by simply adding zero or more labels to the left-hand side of the name satisfies the name constraint. For example, example.com, www.example.com, www.sub.example.com would satisfy example.com while example1.com does not.

excludedDnsNames[]

string

Contains excluded DNS names. Any DNS name that can be constructed by simply adding zero or more labels to the left-hand side of the name satisfies the name constraint. For example, example.com, www.example.com, www.sub.example.com would satisfy example.com while example1.com does not.

permittedIpRanges[]

string

Contains the permitted IP ranges. For IPv4 addresses, the ranges are expressed using CIDR notation as specified in RFC 4632. For IPv6 addresses, the ranges are expressed in similar encoding as IPv4 addresses.

excludedIpRanges[]

string

Contains the excluded IP ranges. For IPv4 addresses, the ranges are expressed using CIDR notation as specified in RFC 4632. For IPv6 addresses, the ranges are expressed in similar encoding as IPv4 addresses.

permittedEmailAddresses[]

string

Contains the permitted email addresses. The value can be a particular email address, a hostname to indicate all email addresses on that host or a domain with a leading period (e.g. .example.com) to indicate all email addresses in that domain.

excludedEmailAddresses[]

string

Contains the excluded email addresses. The value can be a particular email address, a hostname to indicate all email addresses on that host or a domain with a leading period (e.g. .example.com) to indicate all email addresses in that domain.

permittedUris[]

string

Contains the permitted URIs that apply to the host part of the name. The value can be a hostname or a domain with a leading period (like .example.com)

excludedUris[]

string

Contains the excluded URIs that apply to the host part of the name. The value can be a hostname or a domain with a leading period (like .example.com)