Subversion Repositories oidplus

Rev

Rev 1425 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
557 daniel-mar 1
#!/usr/bin/env php
239 daniel-mar 2
-- This file (wellknown_other_mssql.sql) contains ASN.1 and IRI names of OIDs which are either
3
-- a) Root OIDs
4
-- b) Unicode labels which are long arcs
5
-- c) Standardized ASN.1 identifiers
6
-- d) OIDs where potential users of this software can register OIDs in these arcs (e.g. an "identified organization" arc)
7
-- Use the tool dev/generate_wellknown_other_mssql to generate this file
8
 
9
SET ANSI_PADDING ON
10
GO
11
 
12
<?php
13
 
511 daniel-mar 14
/*
15
 * OIDplus 2.0
16
 * Copyright 2019 - 2021 Daniel Marschall, ViaThinkSoft
17
 *
18
 * Licensed under the Apache License, Version 2.0 (the "License");
19
 * you may not use this file except in compliance with the License.
20
 * You may obtain a copy of the License at
21
 *
22
 *     http://www.apache.org/licenses/LICENSE-2.0
23
 *
24
 * Unless required by applicable law or agreed to in writing, software
25
 * distributed under the License is distributed on an "AS IS" BASIS,
26
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
27
 * See the License for the specific language governing permissions and
28
 * limitations under the License.
29
 */
30
 
1367 daniel-mar 31
use ViaThinkSoft\OIDplus\OIDplus;
32
 
239 daniel-mar 33
require_once __DIR__ . '/../includes/oidplus.inc.php';
1416 daniel-mar 34
require_once __DIR__ . '/ft_get_oid_data.inc.php';
239 daniel-mar 35
 
36
OIDplus::init(false);
261 daniel-mar 37
if (!OIDplus::baseConfig()->exists('OIDINFO_API_URL')) {
239 daniel-mar 38
	die("OIDINFO_API_URL not available (API is currently not public)\n");
39
}
40
 
41
$output = array();
42
 
43
function _is_standardized($oid, $asn1id) {
44
	$std = asn1_get_standardized_array();
45
	$x = oid_up($oid) == $oid ? '' : oid_up($oid).".";
46
	return isset( $std[$x.$asn1id]) && ($std[$x.$asn1id] == $oid);
47
}
48
 
49
function _is_long($oid) {
50
	$oid = '/'.str_replace('.', '/', $oid);
51
	return in_array($oid, iri_get_long_arcs());
52
}
53
 
54
function _process_oid($oid) {
55
	global $output;
56
 
57
	if (!isset($output[$oid])) {
58
		if ($oid == '0.0.23') {
59
			// Rec. ITU-T X.660 | ISO/IEC 9834-3, clause A.3.3.1 allows "0.0.w", although it is illegal, since no W-series exist
60
			$data = array();
61
			$data['oid'] = array();
62
			$data['oid']['identifier'] = array('w');
63
			$data['oid']['unicode-label'] = array('W');
64
		} else {
65
			$data = ft_get_oid_data($oid);
66
		}
67
 
1244 daniel-mar 68
		$output[$oid] = array();
239 daniel-mar 69
		$output[$oid]['asn1id'] = array();
70
		$output[$oid]['iri'] = array();
71
		$output[$oid]['checksum'] = array();
72
 
73
		if (isset($data['oid']['identifier'])) {
74
			foreach ($data['oid']['identifier'] as $asn1id) {
75
				$output[$oid]['checksum'][] = $oid.'|ASN1|'.$asn1id.'|'.(_is_standardized($oid, $asn1id) ? '1' : '0').'|1||';
76
				$std = _is_standardized($oid, $asn1id) ? "'1'" : "'0'";
77
				$output[$oid]['asn1id'][] = "INSERT INTO [asn1id] (oid, name, standardized, well_known) VALUES ('oid:$oid', '$asn1id', $std, '1');";
78
			}
79
		} else {
80
			//echo "-- Warning: Has no ASN.1 identifier: $oid\n";
81
		}
82
		if (isset($data['oid']['unicode-label'])) {
83
			foreach ($data['oid']['unicode-label'] as $iri) {
84
				$output[$oid]['checksum'][] = $oid.'|IRI|'.$iri.'|'.(_is_long($oid) ? '1' : '0').'|1||';
85
 
86
				$std = _is_long($oid) ? "'1'" : "'0'";
87
 
88
				if (strpos($iri, '&#') !== false) {
89
					$iri = "CAST(CAST(N'' AS XML).value('xs:base64Binary(\"".base64_encode(html_entity_decode($iri, ENT_COMPAT | ENT_HTML401, "UTF-8"))."\")', 'varbinary(MAX)') AS varchar(255))";
90
				} else {
91
					$iri = "'$iri'";
92
				}
93
 
94
				$output[$oid]['iri'][] = "INSERT INTO [iri] (oid, name, longarc, well_known) VALUES ('oid:$oid', $iri, $std, '1');";
95
			}
96
		}
97
	}
98
 
99
	return $output[$oid];
100
}
101
 
102
// ---
103
 
104
$interesting_oids = array();
105
 
106
foreach (asn1_get_standardized_array() as $tmp => $oid) {
107
	$interesting_oids[] = $oid;
108
}
109
 
110
foreach (iri_get_long_arcs() as $tmp => $oid) {
111
	$oid = substr(str_replace('/', '.', $oid),1);
112
	$interesting_oids[] = $oid;
113
}
114
 
115
// ----------------------------------------------------------------
116
 
117
$interesting_oids[] = '0'; // itu-t
118
	$interesting_oids[] = '0.2'; // telecom operators
119
	$interesting_oids[] = '0.3'; // network-operator
120
	$interesting_oids[] = '0.4'; // identified-organization
121
		$interesting_oids[] = '0.4.0'; // etsi
122
			$interesting_oids[] = '0.4.0.127'; // reserved
123
				$interesting_oids[] = '0.4.0.127.0'; // etsi-identified-organization
124
$interesting_oids[] = '1'; // iso
125
	$interesting_oids[] = '1.1'; // registration-authority
126
		$interesting_oids[] = '1.1.19785'; // cbeff
127
			$interesting_oids[] = '1.1.19785.0'; // organization
128
	$interesting_oids[] = '1.2'; // member-body
129
		// country_getter defines the country OIDs
130
		//$interesting_oids[] = '1.2.158'; // tw
131
			$interesting_oids[] = '1.2.158.1'; // organization
132
		//$interesting_oids[] = '1.2.276'; // de
133
			$interesting_oids[] = '1.2.276.0'; // din-certco
134
		//$interesting_oids[] = '1.2.344'; // hk
135
			$interesting_oids[] = '1.2.344.1'; // organization
136
		//$interesting_oids[] = '1.2.616'; // pl
137
			$interesting_oids[] = '1.2.616.1'; // organization
138
		//$interesting_oids[] = '1.2.826'; // gb
139
			$interesting_oids[] = '1.2.826.0'; // national
140
				$interesting_oids[] = '1.2.826.0.1'; // eng-ltd
141
					$interesting_oids[] = '1.2.826.0.1.3680043'; // Medical Connections ( https://www.medicalconnections.co.uk/FreeUID/ )
142
		//$interesting_oids[] = '1.2.840'; // us
143
			$interesting_oids[] = '1.2.840.1'; // organization
144
				$interesting_oids[] = '1.2.840.113556'; // microsoft
145
					$interesting_oids[] = '1.2.840.113556.1'; // Microsoft Active Directory
146
						$interesting_oids[] = '1.2.840.113556.1.8000'; // companies
1425 daniel-mar 147
							$interesting_oids[] = '1.2.840.113556.1.8000.2554'; // customer usage (UUID-to-OID)
239 daniel-mar 148
					$interesting_oids[] = '1.2.840.113556.2'; // DICOM
149
	$interesting_oids[] = '1.3'; // identified-organization
150
		$interesting_oids[] = '1.3.6'; // dod
151
			$interesting_oids[] = '1.3.6.1'; // internet
152
				$interesting_oids[] = '1.3.6.1.2'; // mgmt
153
					$interesting_oids[] = '1.3.6.1.2.1'; // mib-2
154
						$interesting_oids[] = '1.3.6.1.4'; // private
155
							$interesting_oids[] = '1.3.6.1.4.1'; // enterprise
156
								$interesting_oids[] = '1.3.6.1.4.1.19376'; // Integrating the Healthcare Enterprise International
157
									$interesting_oids[] = '1.3.6.1.4.1.19376.3'; // Organizations (not in Repo!)
158
									$interesting_oids[] = '1.3.6.1.4.1.19376.3.276'; // IHE Deutschland
1462 daniel-mar 159
										$interesting_oids[] = '1.3.6.1.4.1.19376.3.276.1'; // OID für das OID Konzept Version 1
160
											$interesting_oids[] = '1.3.6.1.4.1.19376.3.276.1.4'; // Identifikation des ID-Pools für Institutionen (Organisationen, Einheiten, etc.)
161
													$interesting_oids[] = '1.3.6.1.4.1.19376.3.276.1.4.1'; // Krankenhäuser
162
													$interesting_oids[] = '1.3.6.1.4.1.19376.3.276.1.4.2'; // Praxen niedergelassener Ärzte
239 daniel-mar 163
													$interesting_oids[] = '1.3.6.1.4.1.19376.3.276.1.4.3'; // Systeme
1462 daniel-mar 164
								$interesting_oids[] = '1.3.6.1.4.1.12798'; // Members of Internet-Käyttäjät Ikuisesti (IKI)
239 daniel-mar 165
									$interesting_oids[] = '1.3.6.1.4.1.12798.1'; // member
166
								$interesting_oids[] = '1.3.6.1.4.1.37476'; // ViaThinkSoft
167
									$interesting_oids[] = '1.3.6.1.4.1.37476.9000'; // freeoid
168
								$interesting_oids[] = '1.3.6.1.4.1.37553'; // frdlweb
169
									$interesting_oids[] = '1.3.6.1.4.1.37553.8'; // WEID
170
										$interesting_oids[] = '1.3.6.1.4.1.37553.8.8'; // private
171
										$interesting_oids[] = '1.3.6.1.4.1.37553.8.9'; // ns
172
											$interesting_oids[] = '1.3.6.1.4.1.37553.8.9.17704'; // dns
173
											$interesting_oids[] = '1.3.6.1.4.1.37553.8.9.1439221'; // uuid
1425 daniel-mar 174
								$interesting_oids[] = '1.3.6.1.4.1.54392'; // Waterjuice
175
# Is not on oid-info.com, but has no alphanum/unicode ID anyway
176
#									$interesting_oids[] = '1.3.6.1.4.1.54392.1'; // Waterjuice "UUID-to-OID" (2x64 bits)
177
#									$interesting_oids[] = '1.3.6.1.4.1.54392.2'; // Waterjuice "UUID-to-OID" (4x32 bits)
178
#									$interesting_oids[] = '1.3.6.1.4.1.54392.3'; // Waterjuice "UUID-to-OID" (8x16 bits)
179
#									$interesting_oids[] = '1.3.6.1.4.1.54392.4'; // Waterjuice FreeOID "old"
180
#									$interesting_oids[] = '1.3.6.1.4.1.54392.5'; // Waterjuice FreeOID "new"
181
								$interesting_oids[] = '1.3.6.1.4.1.61117'; // R74n
182
									$interesting_oids[] = '1.3.6.1.4.1.61117.9000'; // R74n FreeOID
239 daniel-mar 183
$interesting_oids[] = '2'; // joint-iso-itu-t
184
	$interesting_oids[] = '2.16'; // country
185
		// country_getter defines the country OIDs
186
		//$interesting_oids[] = '2.16.158'; // tw
187
			$interesting_oids[] = '2.16.158.1'; // organization
188
		//$interesting_oids[] = '2.16.344'; // hk
189
			$interesting_oids[] = '2.16.344.1'; // organization
190
		//$interesting_oids[] = '2.16.616'; // pl
191
			$interesting_oids[] = '2.16.616.1'; // organization
192
		//$interesting_oids[] = '2.16.840'; // us
193
			$interesting_oids[] = '2.16.840.1'; // organization
194
				$interesting_oids[] = '2.16.840.1.113883'; // hl7
195
					$interesting_oids[] = '2.16.840.1.113883.3'; // externalUseRoots
196
					$interesting_oids[] = '2.16.840.1.113883.6'; // externalCodeSystems
197
					$interesting_oids[] = '2.16.840.1.113883.13'; // externalValueSets
198
	$interesting_oids[] = '2.23'; // international-organizations
199
	$interesting_oids[] = '2.25'; // uuid
200
	$interesting_oids[] = '2.40'; // upu
201
		$interesting_oids[] = '2.40.2'; // member-body
202
		$interesting_oids[] = '2.40.3'; // identified-organization
203
	$interesting_oids[] = '2.49'; // alerting
204
		$interesting_oids[] = '2.49.0'; // wmo
205
			$interesting_oids[] = '2.49.0.0'; // authority (Countries)
206
				// country_getter defines the country OIDs beneath 2.49.0.0
207
			$interesting_oids[] = '2.49.0.1'; // country-msg
208
				// country_getter defines the country OIDs beneath 2.49.0.1
209
			$interesting_oids[] = '2.49.0.2'; // org
210
			$interesting_oids[] = '2.49.0.3'; // org-msg
211
 
212
// ----------------------------------------------------------------
213
 
214
$interesting_oids = array_unique($interesting_oids);
215
natsort($interesting_oids);
216
 
217
$output = array();
218
foreach ($interesting_oids as $oid) {
219
	_process_oid($oid);
220
}
221
 
222
$check_sum = '';
223
foreach ($output as $oid => $data) {
224
	if (count($data['asn1id']) + count($data['iri']) == 0) continue;
225
 
226
	echo "-- $oid\n";
227
	foreach ($data['asn1id'] as $line_asn1) {
228
		echo "$line_asn1\n";
229
	}
230
	foreach ($data['iri'] as $line_iri) {
231
		echo "$line_iri\n";
232
	}
233
	foreach ($data['checksum'] as $chunk) {
234
		$check_sum .= $chunk;
235
	}
236
	echo "\n";
237
}
238
echo '-- Generator "generate_wellknown_other_mssql" checksum '.dechex(crc32($check_sum))."\n";