Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
226 | daniel-mar | 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 | ?> |