Subversion Repositories oidplus

Rev

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
?>