[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/libraries/vendor/fgrosse/phpasn1/lib/ASN1/ -> OID.php (source)

   1  <?php
   2  /*
   3   * This file is part of the PHPASN1 library.
   4   *
   5   * Copyright © Friedrich Große <[email protected]>
   6   *
   7   * For the full copyright and license information, please view the LICENSE
   8   * file that was distributed with this source code.
   9   */
  10  
  11  namespace FG\ASN1;
  12  
  13  class OID
  14  {
  15      const RSA_ENCRYPTION                    = '1.2.840.113549.1.1.1';
  16      const MD5_WITH_RSA_ENCRYPTION           = '1.2.840.113549.1.1.4';
  17      const SHA1_WITH_RSA_SIGNATURE           = '1.2.840.113549.1.1.5';
  18      const SHA256_WITH_RSA_SIGNATURE         = '1.2.840.113549.1.1.11';
  19      const PKCS9_EMAIL                       = '1.2.840.113549.1.9.1';
  20      const PKCS9_UNSTRUCTURED_NAME           = '1.2.840.113549.1.9.2';
  21      const PKCS9_CONTENT_TYPE                = '1.2.840.113549.1.9.3';
  22      const PKCS9_MESSAGE_DIGEST              = '1.2.840.113549.1.9.4';
  23      const PKCS9_SIGNING_TIME                = '1.2.840.113549.1.9.5';
  24      const PKCS9_EXTENSION_REQUEST           = '1.2.840.113549.1.9.14';
  25  
  26      // certificate extension identifier
  27      const CERT_EXT_SUBJECT_DIRECTORY_ATTR   = '2.5.29.9';
  28      const CERT_EXT_SUBJECT_KEY_IDENTIFIER   = '2.5.29.14';
  29      const CERT_EXT_KEY_USAGE                = '2.5.29.15';
  30      const CERT_EXT_PRIVATE_KEY_USAGE_PERIOD = '2.5.29.16';
  31      const CERT_EXT_SUBJECT_ALT_NAME         = '2.5.29.17';
  32      const CERT_EXT_ISSUER_ALT_NAME          = '2.5.29.18';
  33      const CERT_EXT_BASIC_CONSTRAINTS        = '2.5.29.19';
  34      const CERT_EXT_CRL_NUMBER               = '2.5.29.20';
  35      const CERT_EXT_REASON_CODE              = '2.5.29.21';
  36      const CERT_EXT_INVALIDITY_DATE          = '2.5.29.24';
  37      const CERT_EXT_DELTA_CRL_INDICATOR      = '2.5.29.27';
  38      const CERT_EXT_ISSUING_DIST_POINT       = '2.5.29.28';
  39      const CERT_EXT_CERT_ISSUER              = '2.5.29.29';
  40      const CERT_EXT_NAME_CONSTRAINTS         = '2.5.29.30';
  41      const CERT_EXT_CRL_DISTRIBUTION_POINTS  = '2.5.29.31';
  42      const CERT_EXT_CERT_POLICIES            = '2.5.29.32';
  43      const CERT_EXT_AUTHORITY_KEY_IDENTIFIER = '2.5.29.35';
  44      const CERT_EXT_EXTENDED_KEY_USAGE       = '2.5.29.37';
  45  
  46      // standard certificate files
  47      const COMMON_NAME                       = '2.5.4.3';
  48      const SURNAME                           = '2.5.4.4';
  49      const SERIAL_NUMBER                     = '2.5.4.5';
  50      const COUNTRY_NAME                      = '2.5.4.6';
  51      const LOCALITY_NAME                     = '2.5.4.7';
  52      const STATE_OR_PROVINCE_NAME            = '2.5.4.8';
  53      const STREET_ADDRESS                    = '2.5.4.9';
  54      const ORGANIZATION_NAME                 = '2.5.4.10';
  55      const OU_NAME                           = '2.5.4.11';
  56      const TITLE                             = '2.5.4.12';
  57      const DESCRIPTION                       = '2.5.4.13';
  58      const POSTAL_ADDRESS                    = '2.5.4.16';
  59      const POSTAL_CODE                       = '2.5.4.17';
  60      const AUTHORITY_REVOCATION_LIST         = '2.5.4.38';
  61  
  62      const AUTHORITY_INFORMATION_ACCESS      = '1.3.6.1.5.5.7.1.1';
  63  
  64      /**
  65       * Returns the name of the given object identifier.
  66       *
  67       * Some OIDs are saved as class constants in this class.
  68       * If the wanted oidString is not among them, this method will
  69       * query http://oid-info.com for the right name.
  70       * This behavior can be suppressed by setting the second method parameter to false.
  71       *
  72       * @param string $oidString
  73       * @param bool $loadFromWeb
  74       *
  75       * @see self::loadFromWeb($oidString)
  76       *
  77       * @return string
  78       */
  79      public static function getName($oidString, $loadFromWeb = true)
  80      {
  81          switch ($oidString) {
  82              case self::RSA_ENCRYPTION:
  83                  return 'RSA Encryption';
  84              case self::MD5_WITH_RSA_ENCRYPTION:
  85                  return 'MD5 with RSA Encryption';
  86              case self::SHA1_WITH_RSA_SIGNATURE:
  87                  return 'SHA-1 with RSA Signature';
  88  
  89              case self::PKCS9_EMAIL:
  90                  return 'PKCS #9 Email Address';
  91              case self::PKCS9_UNSTRUCTURED_NAME:
  92                  return 'PKCS #9 Unstructured Name';
  93              case self::PKCS9_CONTENT_TYPE:
  94                  return 'PKCS #9 Content Type';
  95              case self::PKCS9_MESSAGE_DIGEST:
  96                  return 'PKCS #9 Message Digest';
  97              case self::PKCS9_SIGNING_TIME:
  98                  return 'PKCS #9 Signing Time';
  99  
 100              case self::COMMON_NAME:
 101                  return 'Common Name';
 102              case self::SURNAME:
 103                  return 'Surname';
 104              case self::SERIAL_NUMBER:
 105                  return 'Serial Number';
 106              case self::COUNTRY_NAME:
 107                  return 'Country Name';
 108              case self::LOCALITY_NAME:
 109                  return 'Locality Name';
 110              case self::STATE_OR_PROVINCE_NAME:
 111                  return 'State or Province Name';
 112              case self::STREET_ADDRESS:
 113                  return 'Street Address';
 114              case self::ORGANIZATION_NAME:
 115                  return 'Organization Name';
 116              case self::OU_NAME:
 117                  return 'Organization Unit Name';
 118              case self::TITLE:
 119                  return 'Title';
 120              case self::DESCRIPTION:
 121                  return 'Description';
 122              case self::POSTAL_ADDRESS:
 123                  return 'Postal Address';
 124              case self::POSTAL_CODE:
 125                  return 'Postal Code';
 126              case self::AUTHORITY_REVOCATION_LIST:
 127                  return 'Authority Revocation List';
 128  
 129              case self::CERT_EXT_SUBJECT_DIRECTORY_ATTR:
 130                  return 'Subject directory attributes';
 131              case self::CERT_EXT_SUBJECT_KEY_IDENTIFIER:
 132                  return 'Subject key identifier';
 133              case self::CERT_EXT_KEY_USAGE:
 134                  return 'Key usage certificate extension';
 135              case self::CERT_EXT_PRIVATE_KEY_USAGE_PERIOD:
 136                  return 'Private key usage';
 137              case self::CERT_EXT_SUBJECT_ALT_NAME:
 138                  return 'Subject alternative name (SAN)';
 139              case self::CERT_EXT_ISSUER_ALT_NAME:
 140                  return 'Issuer alternative name';
 141              case self::CERT_EXT_BASIC_CONSTRAINTS:
 142                  return 'Basic constraints';
 143              case self::CERT_EXT_CRL_NUMBER:
 144                  return 'CRL number';
 145              case self::CERT_EXT_REASON_CODE:
 146                  return 'Reason code';
 147              case self::CERT_EXT_INVALIDITY_DATE:
 148                  return 'Invalidity code';
 149              case self::CERT_EXT_DELTA_CRL_INDICATOR:
 150                  return 'Delta CRL indicator';
 151              case self::CERT_EXT_ISSUING_DIST_POINT:
 152                  return 'Issuing distribution point';
 153              case self::CERT_EXT_CERT_ISSUER:
 154                  return 'Certificate issuer';
 155              case self::CERT_EXT_NAME_CONSTRAINTS:
 156                  return 'Name constraints';
 157              case self::CERT_EXT_CRL_DISTRIBUTION_POINTS:
 158                  return 'CRL distribution points';
 159              case self::CERT_EXT_CERT_POLICIES:
 160                  return 'Certificate policies ';
 161              case self::CERT_EXT_AUTHORITY_KEY_IDENTIFIER:
 162                  return 'Authority key identifier';
 163              case self::CERT_EXT_EXTENDED_KEY_USAGE:
 164                  return 'Extended key usage';
 165              case self::AUTHORITY_INFORMATION_ACCESS:
 166                  return 'Certificate Authority Information Access (AIA)';
 167  
 168              default:
 169                  if ($loadFromWeb) {
 170                      return self::loadFromWeb($oidString);
 171                  } else {
 172                      return $oidString;
 173                  }
 174          }
 175      }
 176  
 177      public static function loadFromWeb($oidString)
 178      {
 179          $ch = curl_init("http://oid-info.com/get/{$oidString}");
 180  
 181          curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 182          curl_setopt($ch, CURLOPT_HEADER, 0);
 183  
 184          $contents = curl_exec($ch);
 185          curl_close($ch);
 186  
 187          // This pattern needs to be updated as soon as the website layout of oid-info.com changes
 188          preg_match_all('#<tt>(.+)\(\d+\)</tt>#si', $contents, $oidName);
 189  
 190          if (empty($oidName[1])) {
 191              return "{$oidString} (unknown)";
 192          }
 193  
 194          $oidName = ucfirst(strtolower(preg_replace('/([A-Z][a-z])/', ' $1', $oidName[1][0])));
 195          $oidName = str_replace('-', ' ', $oidName);
 196  
 197          return "{$oidName} ({$oidString})";
 198      }
 199  }


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer