'tbsCertificate' => $TBSCertificate,
'signatureAlgorithm' => $AlgorithmIdentifier,
'signature' => array('type' => FILE_ASN1_TYPE_BIT_STRING),
'type' => FILE_ASN1_TYPE_BIT_STRING,
$this->BasicConstraints = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'type' => FILE_ASN1_TYPE_BOOLEAN,
'pathLenConstraint' => array(
'type' => FILE_ASN1_TYPE_INTEGER,
$this->KeyIdentifier = array('type' => FILE_ASN1_TYPE_OCTET_STRING);
$OrganizationalUnitNames = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'max' => 4, // ub-organizational-units
'children' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING),
'type' => FILE_ASN1_TYPE_SET,
'type' => FILE_ASN1_TYPE_PRINTABLE_STRING,
'type' => FILE_ASN1_TYPE_PRINTABLE_STRING,
'type' => FILE_ASN1_TYPE_PRINTABLE_STRING,
'generation-qualifier' => array(
'type' => FILE_ASN1_TYPE_PRINTABLE_STRING,
$NumericUserIdentifier = array('type' => FILE_ASN1_TYPE_NUMERIC_STRING);
$OrganizationName = array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING);
$PrivateDomainName = array(
'type' => FILE_ASN1_TYPE_CHOICE,
'numeric' => array('type' => FILE_ASN1_TYPE_NUMERIC_STRING),
'printable' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING),
$TerminalIdentifier = array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING);
$NetworkAddress = array('type' => FILE_ASN1_TYPE_NUMERIC_STRING);
$AdministrationDomainName = array(
'type' => FILE_ASN1_TYPE_CHOICE,
// if class isn't present it's assumed to be FILE_ASN1_CLASS_UNIVERSAL or
// (if constant is present) FILE_ASN1_CLASS_CONTEXT_SPECIFIC
'class' => FILE_ASN1_CLASS_APPLICATION,
'numeric' => array('type' => FILE_ASN1_TYPE_NUMERIC_STRING),
'printable' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING),
'type' => FILE_ASN1_TYPE_CHOICE,
// if class isn't present it's assumed to be FILE_ASN1_CLASS_UNIVERSAL or
// (if constant is present) FILE_ASN1_CLASS_CONTEXT_SPECIFIC
'class' => FILE_ASN1_CLASS_APPLICATION,
'x121-dcc-code' => array('type' => FILE_ASN1_TYPE_NUMERIC_STRING),
'iso-3166-alpha2-code' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING),
'type' => FILE_ASN1_TYPE_SEQUENCE,
'type-id' => array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER),
'type' => FILE_ASN1_TYPE_ANY,
$ExtensionAttribute = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'extension-attribute-type' => array(
'type' => FILE_ASN1_TYPE_PRINTABLE_STRING,
'extension-attribute-value' => array(
'type' => FILE_ASN1_TYPE_ANY,
$ExtensionAttributes = array(
'type' => FILE_ASN1_TYPE_SET,
'max' => 256, // ub-extension-attributes
'children' => $ExtensionAttribute,
$BuiltInDomainDefinedAttribute = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'type' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING),
'value' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING),
$BuiltInDomainDefinedAttributes = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'max' => 4, // ub-domain-defined-attributes
'children' => $BuiltInDomainDefinedAttribute,
$BuiltInStandardAttributes = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'country-name' => array('optional' => true) + $CountryName,
'administration-domain-name' => array('optional' => true) + $AdministrationDomainName,
'network-address' => array(
'terminal-identifier' => array(
'private-domain-name' => array(
'organization-name' => array(
'numeric-user-identifier' => array(
) + $NumericUserIdentifier,
'personal-name' => array(
'organizational-unit-names' => array(
) + $OrganizationalUnitNames,
'type' => FILE_ASN1_TYPE_SEQUENCE,
'built-in-standard-attributes' => $BuiltInStandardAttributes,
'built-in-domain-defined-attributes' => array('optional' => true) + $BuiltInDomainDefinedAttributes,
'extension-attributes' => array('optional' => true) + $ExtensionAttributes,
'type' => FILE_ASN1_TYPE_SEQUENCE,
) + $this->DirectoryString,
// partyName is technically required but File_ASN1 doesn't currently support non-optional constants and
// setting it to optional gets the job done in any event.
) + $this->DirectoryString,
'type' => FILE_ASN1_TYPE_CHOICE,
'type' => FILE_ASN1_TYPE_IA5_STRING,
'type' => FILE_ASN1_TYPE_IA5_STRING,
'directoryName' => array(
'uniformResourceIdentifier' => array(
'type' => FILE_ASN1_TYPE_IA5_STRING,
'type' => FILE_ASN1_TYPE_OCTET_STRING,
'type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER,
'type' => FILE_ASN1_TYPE_SEQUENCE,
'children' => $GeneralName,
$this->IssuerAltName = $GeneralNames;
'type' => FILE_ASN1_TYPE_BIT_STRING,
$DistributionPointName = array(
'type' => FILE_ASN1_TYPE_CHOICE,
'nameRelativeToCRLIssuer' => array(
) + $this->RelativeDistinguishedName,
$DistributionPoint = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'distributionPoint' => array(
) + $DistributionPointName,
$this->CRLDistributionPoints = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'children' => $DistributionPoint,
$this->AuthorityKeyIdentifier = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'keyIdentifier' => array(
) + $this->KeyIdentifier,
'authorityCertIssuer' => array(
'authorityCertSerialNumber' => array(
) + $CertificateSerialNumber,
$PolicyQualifierId = array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER);
$PolicyQualifierInfo = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'policyQualifierId' => $PolicyQualifierId,
'qualifier' => array('type' => FILE_ASN1_TYPE_ANY),
$CertPolicyId = array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER);
$PolicyInformation = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'policyIdentifier' => $CertPolicyId,
'policyQualifiers' => array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'children' => $PolicyQualifierInfo,
$this->CertificatePolicies = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'children' => $PolicyInformation,
$this->PolicyMappings = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'type' => FILE_ASN1_TYPE_SEQUENCE,
'issuerDomainPolicy' => $CertPolicyId,
'subjectDomainPolicy' => $CertPolicyId,
$KeyPurposeId = array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER);
$this->ExtKeyUsageSyntax = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'children' => $KeyPurposeId,
$AccessDescription = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'accessMethod' => array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER),
'accessLocation' => $GeneralName,
$this->AuthorityInfoAccessSyntax = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'children' => $AccessDescription,
$this->SubjectAltName = $GeneralNames;
$this->PrivateKeyUsagePeriod = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'type' => FILE_ASN1_TYPE_GENERALIZED_TIME, ),
'type' => FILE_ASN1_TYPE_GENERALIZED_TIME, ),
$BaseDistance = array('type' => FILE_ASN1_TYPE_INTEGER);
'type' => FILE_ASN1_TYPE_SEQUENCE,
'default' => new Math_BigInteger(0),
$GeneralSubtrees = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,
'children' => $GeneralSubtree,
$this->NameConstraints = array(
'type' => FILE_ASN1_TYPE_SEQUENCE,