Subversion Repositories oidplus

Rev

Blame | Last modification | View Log | RSS feed

  1. <?php
  2.  
  3. # Algorithm as specified by .1.3.6.1.4.1.37476.3.2.3.1
  4.  
  5. define('BASE64_CHARS', 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=');
  6.  
  7. function identifierToNumber($identifier) {
  8.         if ($identifier == '') return '99';
  9.         $out = '';
  10.         $identifier = utf8_encode($identifier);
  11.         $identifier = base64_encode($identifier);
  12.         for ($i=0; $i<strlen($identifier); $i++) {
  13.                 $p = $identifier[$i];
  14.                 $p = strpos(BASE64_CHARS, $p);
  15.                 $p = str_pad($p, 2, '0', STR_PAD_LEFT);
  16.                 $out .= $p;
  17.         }
  18.         return $out;
  19. }
  20.  
  21. function numberToIdentifier($number) {
  22.         if ($number == '99') return '';
  23.         if (strlen($number)%2 != 0) return false;
  24.         $out = '';
  25.         for ($i=0; $i<=strlen($number); $i+=2) {
  26.                 $n = substr($number, $i, 2);
  27.                 $out .= substr(BASE64_CHARS, $n, 1);
  28.         }
  29.         $out = base64_decode($out);
  30.         $out = utf8_decode($out);
  31.         return $out;
  32. }
  33.  
  34. function javaPackageNameToOID($identifier) {
  35.         $out = '2.999';
  36.         $ary = explode('.', $identifier);
  37.         foreach ($ary as $a) {
  38.                 $out .= '.'.identifierToNumber($a);
  39.         }
  40.         return $out;
  41. }
  42.  
  43. function OIDToJavaPackageName($oid) {
  44.         $oid = preg_replace('@^2\\.999\\.@', '', $oid, -1, $c);
  45.         if ($c == 0) return false;
  46.         $out = array();
  47.         $ary = explode('.', $oid);
  48.         foreach ($ary as $a) {
  49.                 $out[] = numberToIdentifier($a);
  50.         }
  51.         return implode('.', $out);
  52. }
  53.  
  54. $x = javaPackageNameToOID('test.de.viathinksoft.java.example...');
  55.  
  56. echo OIDToJavaPackageName($x);
  57.  
  58. ?>
  59.