@classmethod
def create(cls, serial, issuer, not_after, subject, subject_key, sign_key,
    extensions=None, not_before=None, issuer_unique=None, subject_unique=
    None, version=None):
    """Creates a certificate from certificate data.

        :param serial:         certificate serial number
        :type  serial:         int
        :param issuer:         certificate issuer
        :type  issuer:         :class:`VX509Name`
        :param not_after:      latest valid time
        :type  not_after:      :class:`datetime.datetime` or
                               :class:`datetime.timedelta`
        :param subject:        certificate subject
        :type  subject:        :class:`VX509Name`
        :param sign_key:       issuer's keypair
        :type  sign_key:       :class:`versile.crypto.VAsymmetricKey`
        :param extensions:     certificate extensions
        :type  extensions:     :class:`VX509CertificateExtension`\\ ,
        :param not_before:     earliest valid time
        :type  not_before:     :class:`datetime.datetime` or
                               :class:`datetime.timedelta`
        :param issuer_unique:  issuer unique ID
        :type  issuer_unique:  bytes
        :param subject_unique: subject unique ID
        :type  subject_unique: bytes
        :param version:        certificate version
        :type  version:        int
        :returns:              generated certificate
        :returns:              :class:`VX509Certificate`

        Certificate is only valid for timestamps between *not_before*
        and *not_after*. If a timedelta is provided for *not_after* or
        *not_before* then the timedelta is taken from the current
        system UTC time. If *not_before* is None then the current time
        mins 5 minutes is used.

        *sign_key* will be used to sign the certificate.

        If *version* is None then the certificate version is
        automatically set based on certificate parameters.

        """
    _create = cls.create_tbs
    tbs = _create(serial=serial, issuer=issuer, not_before=not_before,
        not_after=not_after, subject=subject, subject_key=subject_key,
        issuer_unique=issuer_unique, subject_unique=subject_unique,
        extensions=extensions, version=version)
    return cls.create_from_tbs(tbs_cert=tbs, sign_key=sign_key)
