Package org.wildfly.security.x500.cert
Class X509CertificateBuilder
- java.lang.Object
-
- org.wildfly.security.x500.cert.X509CertificateBuilder
-
public final class X509CertificateBuilder extends Object
A builder for X.509 certificates.- Author:
- David M. Lloyd
-
-
Field Summary
Fields Modifier and Type Field Description private Map<String,X509CertificateExtension>extensionsByOidprivate X500PrincipalissuerDnprivate byte[]issuerUniqueIdprivate static ZonedDateTimeLATEST_VALIDprivate ZonedDateTimenotValidAfterprivate ZonedDateTimenotValidBeforeprivate PublicKeypublicKeyprivate BigIntegerserialNumberprivate StringsignatureAlgorithmNameprivate PrivateKeysigningKeyprivate X500PrincipalsubjectDnprivate byte[]subjectUniqueIdprivate intversion
-
Constructor Summary
Constructors Constructor Description X509CertificateBuilder()Construct a new uninitialized instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description X509CertificateBuilderaddExtension(X509CertificateExtension extension)Add a certificate extension.X509CertificateExtensionaddOrReplaceExtension(X509CertificateExtension extension)Add or replace a certificate extension.X509Certificatebuild()Attempt to construct and sign an X.509 certificate according to the information in this builder.X500PrincipalgetIssuerDn()Get the issuer DN.byte[]getIssuerUniqueId()Get the issuer unique ID.ZonedDateTimegetNotValidAfter()Get the not-valid-after date.ZonedDateTimegetNotValidBefore()Get the not-valid-before date.PublicKeygetPublicKey()Get the public key.BigIntegergetSerialNumber()Get the serial number of the certificate being built.StringgetSignatureAlgorithmName()Get the signature algorithm name.PrivateKeygetSigningKey()Get the signing key.X500PrincipalgetSubjectDn()Get the subject DN.byte[]getSubjectUniqueId()Get the subject unique ID.(package private) byte[]getTBSBytes()intgetVersion()Get the certificate version.X509CertificateExtensionremoveExtension(String oid)Remove the extension with the given OID, if it is registered.X509CertificateBuildersetIssuerDn(X500Principal issuerDn)Set the issuer DN.X509CertificateBuildersetIssuerUniqueId(byte[] issuerUniqueId)Set the issuer unique ID.X509CertificateBuildersetNotValidAfter(ZonedDateTime notValidAfter)Set the not-valid-after date.X509CertificateBuildersetNotValidBefore(ZonedDateTime notValidBefore)Set the not-valid-before date.X509CertificateBuildersetPublicKey(PublicKey publicKey)Set the public key.X509CertificateBuildersetSerialNumber(BigInteger serialNumber)Set the serial number of the certificate being built.X509CertificateBuildersetSignatureAlgorithmName(String signatureAlgorithmName)Set the signature algorithm name.X509CertificateBuildersetSigningKey(PrivateKey signingKey)Set the signing key.X509CertificateBuildersetSubjectDn(X500Principal subjectDn)Set the subject DN.X509CertificateBuildersetSubjectUniqueId(byte[] subjectUniqueId)Set the subject unique ID.X509CertificateBuildersetVersion(int version)Set the certificate version.
-
-
-
Field Detail
-
LATEST_VALID
private static final ZonedDateTime LATEST_VALID
-
version
private int version
-
serialNumber
private BigInteger serialNumber
-
subjectDn
private X500Principal subjectDn
-
subjectUniqueId
private byte[] subjectUniqueId
-
issuerDn
private X500Principal issuerDn
-
issuerUniqueId
private byte[] issuerUniqueId
-
notValidBefore
private ZonedDateTime notValidBefore
-
notValidAfter
private ZonedDateTime notValidAfter
-
extensionsByOid
private final Map<String,X509CertificateExtension> extensionsByOid
-
publicKey
private PublicKey publicKey
-
signingKey
private PrivateKey signingKey
-
signatureAlgorithmName
private String signatureAlgorithmName
-
-
Method Detail
-
addExtension
public X509CertificateBuilder addExtension(X509CertificateExtension extension)
Add a certificate extension. If an extension with the same OID already exists, an exception is thrown.- Parameters:
extension- the extension to add (must not benull)- Returns:
- this builder instance
-
addOrReplaceExtension
public X509CertificateExtension addOrReplaceExtension(X509CertificateExtension extension)
Add or replace a certificate extension. If an extension with the same OID already exists, it is replaced and returned.- Parameters:
extension- the extension to add (must not benull)- Returns:
- the existing extension, or
nullif no other extension with the same OID was existent
-
removeExtension
public X509CertificateExtension removeExtension(String oid)
Remove the extension with the given OID, if it is registered.- Parameters:
oid- the OID of the extension to remove- Returns:
- the extension, or
nullif no extension with the same OID was existent
-
getVersion
public int getVersion()
Get the certificate version.- Returns:
- the certificate version
-
setVersion
public X509CertificateBuilder setVersion(int version)
Set the certificate version.- Parameters:
version- the certificate version (must be between 1 and 3, inclusive)- Returns:
- this builder instance
-
getSerialNumber
public BigInteger getSerialNumber()
Get the serial number of the certificate being built.- Returns:
- the serial number of the certificate being built (must not be
null)
-
setSerialNumber
public X509CertificateBuilder setSerialNumber(BigInteger serialNumber)
Set the serial number of the certificate being built. The serial number must be positive and no larger than 20 octets (or 2^160).- Parameters:
serialNumber- the serial number of the certificate being built- Returns:
- this builder instance
-
getSubjectDn
public X500Principal getSubjectDn()
Get the subject DN.- Returns:
- the subject DN
-
setSubjectDn
public X509CertificateBuilder setSubjectDn(X500Principal subjectDn)
Set the subject DN.- Parameters:
subjectDn- the subject DN (must not benull)- Returns:
- this builder instance
-
getSubjectUniqueId
public byte[] getSubjectUniqueId()
Get the subject unique ID.- Returns:
- the subject unique ID
-
setSubjectUniqueId
public X509CertificateBuilder setSubjectUniqueId(byte[] subjectUniqueId)
Set the subject unique ID.- Parameters:
subjectUniqueId- the subject unique ID (must not benull)- Returns:
- this builder instance
-
getIssuerDn
public X500Principal getIssuerDn()
Get the issuer DN.- Returns:
- the issuer DN
-
setIssuerDn
public X509CertificateBuilder setIssuerDn(X500Principal issuerDn)
Set the issuer DN.- Parameters:
issuerDn- the issuer DN (must not benull)- Returns:
- this builder instance
-
getIssuerUniqueId
public byte[] getIssuerUniqueId()
Get the issuer unique ID.- Returns:
- the issuer unique ID
-
setIssuerUniqueId
public X509CertificateBuilder setIssuerUniqueId(byte[] issuerUniqueId)
Set the issuer unique ID.- Parameters:
issuerUniqueId- the issuer unique ID (must not benull)- Returns:
- this builder instance
-
getNotValidBefore
public ZonedDateTime getNotValidBefore()
Get the not-valid-before date. The default is the date when this builder was constructed.- Returns:
- the not-valid-before date
-
setNotValidBefore
public X509CertificateBuilder setNotValidBefore(ZonedDateTime notValidBefore)
Set the not-valid-before date.- Parameters:
notValidBefore- the not-valid-before date (must not benull)- Returns:
- this builder instance
-
getNotValidAfter
public ZonedDateTime getNotValidAfter()
Get the not-valid-after date. The default is equal to99991231235959Zas specified inRFC 5280.- Returns:
- the not-valid-after date
-
setNotValidAfter
public X509CertificateBuilder setNotValidAfter(ZonedDateTime notValidAfter)
Set the not-valid-after date.- Parameters:
notValidAfter- the not-valid-after date (must not benull)- Returns:
- this builder instance
-
getPublicKey
public PublicKey getPublicKey()
Get the public key.- Returns:
- the public key
-
setPublicKey
public X509CertificateBuilder setPublicKey(PublicKey publicKey)
Set the public key.- Parameters:
publicKey- the public key (must not benull)- Returns:
- this builder instance
-
getSigningKey
public PrivateKey getSigningKey()
Get the signing key.- Returns:
- the signing key
-
setSigningKey
public X509CertificateBuilder setSigningKey(PrivateKey signingKey)
Set the signing key.- Parameters:
signingKey- the signing key (must not benull)- Returns:
- this builder instance
-
getSignatureAlgorithmName
public String getSignatureAlgorithmName()
Get the signature algorithm name.- Returns:
- the signature algorithm name
-
setSignatureAlgorithmName
public X509CertificateBuilder setSignatureAlgorithmName(String signatureAlgorithmName)
Set the signature algorithm name.- Parameters:
signatureAlgorithmName- the signature algorithm name (must not benull)- Returns:
- this builder instance
-
build
public X509Certificate build() throws CertificateException
Attempt to construct and sign an X.509 certificate according to the information in this builder.- Returns:
- the constructed certificate
- Throws:
IllegalArgumentException- if one or more of the builder parameters are invalid or missingCertificateException- if the certificate failed to be constructed
-
getTBSBytes
byte[] getTBSBytes()
-
-