Subversion Repositories uuid_mac_utils

Rev

Rev 41 | Rev 53 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
31 daniel-mar 1
<?php
2 daniel-mar 2
 
31 daniel-mar 3
/*
4
* UUID & MAC Utils
5
* Copyright 2017 - 2023 Daniel Marschall, ViaThinkSoft
35 daniel-mar 6
* Version 2023-07-12
31 daniel-mar 7
*
8
* Licensed under the Apache License, Version 2.0 (the "License");
9
* you may not use this file except in compliance with the License.
10
* You may obtain a copy of the License at
11
*
12
*     http://www.apache.org/licenses/LICENSE-2.0
13
*
14
* Unless required by applicable law or agreed to in writing, software
15
* distributed under the License is distributed on an "AS IS" BASIS,
16
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
* See the License for the specific language governing permissions and
18
* limitations under the License.
19
*/
20
 
21
include_once __DIR__.'/includes/uuid_utils.inc.php';
22
 
23
const AUTO_NEW_UUIDS = 10;
24
 
25
?><!DOCTYPE html>
26
<html lang="en">
27
 
2 daniel-mar 28
<head>
29
        <meta charset="iso-8859-1">
30
        <link rel="stylesheet" type="text/css" href="style.css">
31
        <title>UUID &amp; MAC Utils by Daniel Marschall</title>
35 daniel-mar 32
        <meta name=viewport content="width=device-width, initial-scale=1">
2 daniel-mar 33
</head>
34
 
35
<body>
36
 
25 daniel-mar 37
<h1>UUID &amp; MAC Utils by Daniel Marschall</h1>
2 daniel-mar 38
 
12 daniel-mar 39
<p><a href="https://github.com/danielmarschall/uuid_mac_utils/">View the source code</a></p>
2 daniel-mar 40
 
31 daniel-mar 41
<h2>Overview</h2>
2 daniel-mar 42
 
31 daniel-mar 43
<ul>
44
    <li><a href="#gen_uuid">Generate random and/or time-based UUIDs</a><ul>
45
            <li><a href="#gen_uuidv7"><font color="green">New:</font> Generate Unix Epoch Time (version 7) UUID</a></li>
46
            <li><a href="#gen_uuidv6"><font color="green">New:</font> Generate reordered time-based (version 6) UUID</a></li>
47
            <li><a href="#gen_uuidv4">Generate random (version 4) UUID</a></li>
48
            <li><a href="#gen_uuidv1">Generate time-based (version 1) UUID</a></li>
49
        </ul></li>
50
    <li><a href="#gen_other_uuid">Generate other UUID types</a><ul>
51
            <li><a href="#gen_uuid_nce">NCE (variant 0) UUID</a></li>
52
            <li><a href="#gen_uuidv2">Generate DCE Security (version 2) UUID</a></li>
53
            <li><a href="#gen_uuidv35">Generate name-based (version 3/5) UUID</a></li>
34 daniel-mar 54
            <li><a href="#gen_uuidv8">Generate Custom (version 8) UUID</a></li>
31 daniel-mar 55
        </ul></li>
56
    <li><a href="#interpret_uuid">Interpret a UUID</a></li>
41 daniel-mar 57
    <li><a href="#interpret_mac">Interpret a MAC address (MAC / EUI / ELI / SAI / AAI)</a><ul>
58
        <li><a href="#gen_aai">Generate an AAI</a></li>
59
    </ul></li>
31 daniel-mar 60
</ul>
2 daniel-mar 61
 
31 daniel-mar 62
<h2 id="gen_uuid">Generate random and/or time-based UUIDs</h2>
30 daniel-mar 63
 
31 daniel-mar 64
<h3 id="gen_uuidv7"><font color="green">New:</font> Generate Unix Epoch Time (version 7) UUID &#11088</h3>
65
 
35 daniel-mar 66
<p><i>A UUIDv7 is made of time and 74 random&nbsp;bits.
31 daniel-mar 67
        Since the time is at the beginning, the UUIDs are monotonically increasing.
68
        Due to the missing MAC address, this UUID version is recommended due to
69
        improved privacy.</i></p>
70
 
35 daniel-mar 71
<p><a id="uuidv7_info_button" href="javascript:show_uuidv7_info()">Show format</a>
72
<script>
73
function show_uuidv7_info() {
74
        document.getElementById("uuidv7_info_button").style.display = "none";
75
        document.getElementById("uuidv7_info").style.display = "block";
76
}
77
</script>
78
<pre id="uuidv7_info" style="display:none">Variant 1, Version 7 UUID:
37 daniel-mar 79
- 48 bit <abbr title="Count of 1ms intervals passed since 1 Jan 1970 00:00:00 GMT">Unix Time in milliseconds</abbr>
35 daniel-mar 80
-  4 bit Version (fix 0x7)
81
- 12 bit Random
82
-  2 bit Variant (fix 0b10)
83
- 62 bit Random</pre></p>
84
 
31 daniel-mar 85
<?php
86
if (AUTO_NEW_UUIDS > 0) { /** @phpstan-ignore-line */
35 daniel-mar 87
        echo '<p>Here are '.AUTO_NEW_UUIDS.' UUIDs that were created just for you! (Reload the page to get more)</p>';
31 daniel-mar 88
 
89
        echo '<pre>';
90
        for ($i=0; $i<10; $i++) {
91
                $uuid = gen_uuid_v7();
92
                echo '<a href="interprete_uuid.php?uuid='.$uuid.'">'.$uuid.'</a><br>';
93
        }
94
        echo '</pre>';
95
}
96
?>
97
 
2 daniel-mar 98
<form method="GET" action="interprete_uuid.php">
31 daniel-mar 99
    <input type="hidden" name="version" value="7">
100
    <input type="hidden" name="uuid" value="CREATE"> <input type="submit" value="Create and display another UUID">
2 daniel-mar 101
</form>
102
 
32 daniel-mar 103
<h3 id="gen_uuidv6"><font color="green">New:</font> Generate reordered time-based (version 6) UUID &#9200;</h3>
2 daniel-mar 104
 
31 daniel-mar 105
<p><i>Like UUIDv1, this kind of UUID is made of the MAC address of the generating computer,
106
        the time, and a clock sequence. However, the components in UUIDv6 are reordered (time is at the beginning),
107
        so that UUIDs are monotonically increasing.</i></p>
2 daniel-mar 108
 
35 daniel-mar 109
<p><a id="uuidv6_info_button" href="javascript:show_uuidv6_info()">Show format</a>
110
<script>
111
function show_uuidv6_info() {
112
        document.getElementById("uuidv6_info_button").style.display = "none";
113
        document.getElementById("uuidv6_info").style.display = "block";
114
}
115
</script>
116
<pre id="uuidv6_info" style="display:none">Variant 1, Version 6 UUID:
37 daniel-mar 117
- 48 bit High <abbr title="Count of 100ns intervals passed since 15 Oct 1582 00:00:00 GMT">Time</abbr>
35 daniel-mar 118
-  4 bit Version (fix 0x6)
37 daniel-mar 119
- 12 bit Low <abbr title="Count of 100ns intervals passed since 15 Oct 1582 00:00:00 GMT">Time</abbr>
35 daniel-mar 120
-  2 bit Variant (fix 0b10)
121
-  6 bit Clock Sequence High
122
-  8 bit Clock Sequence Low
123
- 48 bit MAC Address</pre></p>
124
 
31 daniel-mar 125
<?php
126
if (AUTO_NEW_UUIDS > 0) { /** @phpstan-ignore-line */
35 daniel-mar 127
        echo '<p>Here are '.AUTO_NEW_UUIDS.' UUIDs that were created just for you! (Reload the page to get more)</p>';
31 daniel-mar 128
 
129
        echo '<pre>';
130
        for ($i=0; $i<10; $i++) {
131
                $uuid = gen_uuid_v6();
132
                echo '<a href="interprete_uuid.php?uuid='.$uuid.'">'.$uuid.'</a><br>';
133
        }
134
        echo '</pre>';
135
}
136
?>
137
 
2 daniel-mar 138
<form method="GET" action="interprete_uuid.php">
31 daniel-mar 139
    <input type="hidden" name="version" value="6">
140
    <input type="hidden" name="uuid" value="CREATE"> <input type="submit" value="Create and display another UUID">
30 daniel-mar 141
</form>
142
 
31 daniel-mar 143
<h3 id="gen_uuidv4">Generate random (version 4) UUID &#x1F3B2;</h3>
30 daniel-mar 144
 
35 daniel-mar 145
<p><i>A UUIDv4 is made of 122 random&nbsp;bits. No other information is encoded in this kind of UUID.</i></p>
30 daniel-mar 146
 
35 daniel-mar 147
<p><a id="uuidv4_info_button" href="javascript:show_uuidv4_info()">Show format</a>
148
<script>
149
function show_uuidv4_info() {
150
        document.getElementById("uuidv4_info_button").style.display = "none";
151
        document.getElementById("uuidv4_info").style.display = "block";
152
}
153
</script>
154
<pre id="uuidv4_info" style="display:none">Variant 1, Version 4 UUID:
155
- 48 bit Random High
156
-  4 bit Version (fix 0x4)
157
- 12 bit Random Mid
158
-  2 bit Variant (fix 0b10)
159
- 62 bit Random Low</pre></p>
160
 
31 daniel-mar 161
<?php
162
if (AUTO_NEW_UUIDS > 0) { /** @phpstan-ignore-line */
35 daniel-mar 163
        echo '<p>Here are '.AUTO_NEW_UUIDS.' UUIDs that were created just for you! (Reload the page to get more)</p>';
31 daniel-mar 164
 
165
        echo '<pre>';
166
        for ($i=0; $i<10; $i++) {
167
                $uuid = gen_uuid_v4();
168
                echo '<a href="interprete_uuid.php?uuid='.$uuid.'">'.$uuid.'</a><br>';
169
        }
170
        echo '</pre>';
171
}
172
?>
173
 
30 daniel-mar 174
<form method="GET" action="interprete_uuid.php">
31 daniel-mar 175
    <input type="hidden" name="version" value="4">
176
    <input type="hidden" name="uuid" value="CREATE"> <input type="submit" value="Create and display another UUID">
30 daniel-mar 177
</form>
178
 
32 daniel-mar 179
<h3 id="gen_uuidv1">Generate time-based (version 1) UUID &#9200;</h3>
30 daniel-mar 180
 
31 daniel-mar 181
<p><i>A UUIDv1 is made of the MAC address of the generating computer,
182
the time, and a clock sequence.</i></p>
30 daniel-mar 183
 
35 daniel-mar 184
<p><a id="uuidv1_info_button" href="javascript:show_uuidv1_info()">Show format</a>
185
<script>
186
function show_uuidv1_info() {
187
        document.getElementById("uuidv1_info_button").style.display = "none";
188
        document.getElementById("uuidv1_info").style.display = "block";
189
}
190
</script>
191
<pre id="uuidv1_info" style="display:none">Variant 1, Version 1 UUID:
37 daniel-mar 192
- 32 bit Low <abbr title="Count of 100ns intervals passed since 15 Oct 1582 00:00:00 GMT">Time</abbr>
193
- 16 bit Mid <abbr title="Count of 100ns intervals passed since 15 Oct 1582 00:00:00 GMT">Time</abbr>
35 daniel-mar 194
-  4 bit Version (fix 0x1)
37 daniel-mar 195
- 12 bit High <abbr title="Count of 100ns intervals passed since 15 Oct 1582 00:00:00 GMT">Time</abbr>
35 daniel-mar 196
-  2 bit Variant (fix 0b10)
197
-  6 bit Clock Sequence High
198
-  8 bit Clock Sequence Low
199
- 48 bit MAC Address</pre></p>
200
 
31 daniel-mar 201
<?php
202
if (AUTO_NEW_UUIDS > 0) { /** @phpstan-ignore-line */
35 daniel-mar 203
    echo '<p>Here are '.AUTO_NEW_UUIDS.' UUIDs that were created just for you! (Reload the page to get more)</p>';
31 daniel-mar 204
 
205
    echo '<pre>';
206
    for ($i=0; $i<10; $i++) {
207
        $uuid = gen_uuid_v1();
208
        echo '<a href="interprete_uuid.php?uuid='.$uuid.'">'.$uuid.'</a><br>';
209
    }
210
    echo '</pre>';
211
}
212
?>
213
 
30 daniel-mar 214
<form method="GET" action="interprete_uuid.php">
31 daniel-mar 215
    <input type="hidden" name="version" value="1">
216
    <input type="hidden" name="uuid" value="CREATE"> <input type="submit" value="Create and display another UUID">
30 daniel-mar 217
</form>
218
 
31 daniel-mar 219
<h2 id="gen_other_uuid">Generate other UUID types</h2>
30 daniel-mar 220
 
47 daniel-mar 221
<p><i>The following types of UUIDs are less common and/or require special knowledge. Please only use the following
30 daniel-mar 222
generators if you know what you are doing.</i></p>
223
 
31 daniel-mar 224
<h3 id="gen_uuid_nce">NCE (variant 0) UUID</h3>
30 daniel-mar 225
 
226
<p>The NCE UUIDs are a legacy format that cannot be generated anymore, because the
227
amount of available timestamp bits was exhausted on <strong>5 September 2015</strong>.
35 daniel-mar 228
As an example, here is the last possible NCE UUID (all bits of the timestamp are set to 1) for IP address 127.0.0.1:
34 daniel-mar 229
<a href="interprete_uuid.php?uuid=ffffffff-ffff-0000-027f-000001000000"><code>ffffffff-ffff-0000-027f-000001000000</code></a>.</p>
30 daniel-mar 230
 
35 daniel-mar 231
<p><a id="uuidnce_info_button" href="javascript:show_uuidnce_info()">Show format</a>
232
<script>
233
function show_uuidnce_info() {
234
        document.getElementById("uuidnce_info_button").style.display = "none";
235
        document.getElementById("uuidnce_info").style.display = "block";
236
}
237
</script>
238
<pre id="uuidnce_info" style="display:none">Variant 0 UUID:
37 daniel-mar 239
- 32 bit High <abbr title="Count of 4&#xB5;s intervals passed since 1 Jan 1980 00:00:00 GMT">Time</abbr>
240
- 16 bit Low <abbr title="Count of 4&#xB5;s intervals passed since 1 Jan 1980 00:00:00 GMT">Time</abbr>
35 daniel-mar 241
- 16 bit Reserved
242
-  1 bit Variant (fix 0b0)
37 daniel-mar 243
-  7 bit <abbr title="socket_$unspec (0x0)
244
socket_$unix (0x1)
245
socket_$internet (0x2)
246
socket_$implink (0x3)
247
socket_$pup (0x4)
248
socket_$chaos (0x5)
249
socket_$ns (0x6)
250
socket_$nbs (0x7)
251
socket_$ecma (0x8)
252
socket_$datakit (0x9)
253
socket_$ccitt (0xA)
254
socket_$sna (0xB)
255
socket_$unspec2 (0xC)
256
socket_$dds (0xD)">Family</abbr>
35 daniel-mar 257
- 56 bit Node</pre></p>
258
 
31 daniel-mar 259
<h3 id="gen_uuidv2">Generate DCE Security (version 2) UUID</h3>
30 daniel-mar 260
 
37 daniel-mar 261
<p><i>An UUIDv2 contains information about the creator (person, group, or organization), the generating system (MAC address), and time.
35 daniel-mar 262
The creator information replaced parts of the time bits, therefore the time resolution is very low.</i></p>
263
 
264
<p><a id="uuidv2_info_button" href="javascript:show_uuidv2_info()">Show format</a>
265
<script>
266
function show_uuidv2_info() {
267
        document.getElementById("uuidv2_info_button").style.display = "none";
268
        document.getElementById("uuidv2_info").style.display = "block";
269
}
270
</script>
271
<pre id="uuidv2_info" style="display:none">Variant 1, Version 2 UUID:
272
- 32 bit Local Domain Number
37 daniel-mar 273
- 16 bit Mid <abbr title="Count of 429.4967296s intervals passed since 15 Oct 1582 00:00:00 GMT">Time</abbr>
35 daniel-mar 274
-  4 bit Version (fix 0x2)
37 daniel-mar 275
- 12 bit High <abbr title="Count of 429.4967296s intervals passed since 15 Oct 1582 00:00:00 GMT">Time</abbr>
35 daniel-mar 276
-  2 bit Variant (fix 0b10)
277
-  6 bit Clock Sequence
37 daniel-mar 278
-  8 bit <abbr title="0 = person
279
1 = group
280
2 = org
281
3-255 = site-defined">Local Domain</abbr>
35 daniel-mar 282
- 48 bit MAC Address</pre></p>
283
 
30 daniel-mar 284
<form method="GET" action="interprete_uuid.php">
2 daniel-mar 285
        <input type="hidden" name="version" value="2">
35 daniel-mar 286
        <label>Domain (8&nbsp;bits):</label><select name="domain_choose" id="dce_domain_choice" onchange="javascript:dce_domain_choose();">
34 daniel-mar 287
                <option value="uid">Person (e.g. POSIX UID)</option>
288
                <option value="gid">Group (e.g. POSIX GID)</option>
289
                <option value="org">Organization</option>
2 daniel-mar 290
                <option value="site">Site-defined</option>
35 daniel-mar 291
        </select> = <input type="number" min="0" max="255" name="dce_domain" value="" id="dce_domain" style="width:50px" pattern="[0-9]+"> (decimal notation)<br>
292
        <label>Value (32&nbsp;bits):</label><input type="number" min="0" max="4294967295" name="dce_id" value="0" id="dce_id" style="width:200px" pattern="[0-9]+"> (decimal notation)<br>
37 daniel-mar 293
        <font color="red">Warning</font>: The timestamp has an accuracy of 7:10 minutes,
30 daniel-mar 294
        therefore the uniqueness of these UUIDs is not guaranteed!<br><br>
2 daniel-mar 295
        <input type="hidden" name="uuid" value="CREATE"> <input type="submit" value="Create UUID">
296
</form>
297
<script>
298
function dce_domain_choose() {
299
        var ns = document.getElementById('dce_domain_choice').value;
300
        if (ns == "uid") {
301
                document.getElementById('dce_domain').value = "0";
302
        }
303
        if (ns == "gid") {
304
                document.getElementById('dce_domain').value = "1";
305
        }
306
        if (ns == "org") {
307
                document.getElementById('dce_domain').value = "2";
308
        }
309
        if (ns == "site") {
310
                document.getElementById('dce_domain').value = "";
311
        }
312
}
313
dce_domain_choose();
314
</script>
315
 
31 daniel-mar 316
<h3 id="gen_uuidv35">Generate name-based (version 3/5) UUID</h3>
2 daniel-mar 317
 
35 daniel-mar 318
<p><i>An UUIDv3 is made out of a MD5 hash and an UUIDv5 is made out of a SHA1 hash.</i></p>
319
 
320
<p><a id="uuidv35_info_button" href="javascript:show_uuidv35_info()">Show format</a>
321
<script>
322
function show_uuidv35_info() {
323
        document.getElementById("uuidv35_info_button").style.display = "none";
324
        document.getElementById("uuidv35_info").style.display = "block";
325
}
326
</script>
327
<pre id="uuidv35_info" style="display:none">Variant 1, Version 3/5 UUID:
328
- 48 bit Hash High
329
-  4 bit Version (fix 0x3)
330
- 12 bit Hash Mid
331
-  2 bit Variant (fix 0b10)
332
- 62 bit Hash Low</pre></p>
333
 
334
<style>
335
label {
336
        width:120px;
337
        text-align:left;
338
        margin-right: 20px;
339
        display:inline-block;
340
}
341
</style>
342
 
2 daniel-mar 343
<form method="GET" action="interprete_uuid.php">
35 daniel-mar 344
        <label>Hash algorithm:</label><select name="version">
2 daniel-mar 345
                <option value="3">MD5 (version 3 UUID)</option>
346
                <option value="5">SHA1 (version 5 UUID)</option>
347
        </select><br>
35 daniel-mar 348
        <label>Namespace:</label><select name="namespace_choose" id="nb_nsc" onchange="javascript:nb_ns_choose();">
2 daniel-mar 349
                <option value="dns">DNS</option>
350
                <option value="url">URL</option>
351
                <option value="oid">OID</option>
352
                <option value="x500">X.500 DN</option>
35 daniel-mar 353
                <!-- <option value="oidplus_ns">OIDplus ns only</option> -->
354
                <!-- <option value="oidplus_ns_val">OIDplus ns+val</option> -->
28 daniel-mar 355
                <!-- <option value="oidplus_pubkey">OIDplus pubkey</option> -->
2 daniel-mar 356
                <option value="other">Other</option>
35 daniel-mar 357
        </select> = <input type="text" name="nb_ns" value="" id="nb_ns" style="width:270px" onchange="javascript:nb_ns_textchange();" pattern="[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}"><br>
358
        <label>Value:</label><input type="text" name="nb_val" value="" id="nb_val" style="width:300px"><br>
30 daniel-mar 359
        <font color="red">Warning</font>: These UUIDs do not contain a timestamp,
360
        therefore the uniqueness of these UUIDs is not guaranteed!<br><br>
2 daniel-mar 361
        <input type="hidden" name="uuid" value="CREATE"> <input type="submit" value="Create UUID">
362
</form>
363
<script>
35 daniel-mar 364
function nb_ns_textchange() {
365
        var ns = document.getElementById('nb_ns').value.toLowerCase();
366
        if (ns == "6ba7b810-9dad-11d1-80b4-00c04fd430c8") {
367
                if (document.getElementById('nb_nsc').value != "dns") {
368
                        document.getElementById('nb_nsc').value = "dns";
369
                        document.getElementById('nb_val').value = "www.example.org";
370
                }
371
        }
372
        else if (ns == "6ba7b811-9dad-11d1-80b4-00c04fd430c8") {
373
                if (document.getElementById('nb_nsc').value != "url") {
374
                        document.getElementById('nb_nsc').value = "url";
375
                        document.getElementById('nb_val').value = "http://www.example.org/";
376
                }
377
        }
378
        else if (ns == "6ba7b812-9dad-11d1-80b4-00c04fd430c8") {
379
                if (document.getElementById('nb_nsc').value != "oid") {
380
                        document.getElementById('nb_nsc').value = "oid";
381
                        document.getElementById('nb_val').value = "2.999";
382
                }
383
        }
384
        else if (ns == "6ba7b814-9dad-11d1-80b4-00c04fd430c8") {
385
                if (document.getElementById('nb_nsc').value != "x500") {
386
                        document.getElementById('nb_nsc').value = "x500";
387
                        document.getElementById('nb_val').value = "UID=jsmith,DC=example,DC=net";
388
                }
389
        }
390
        else {
391
                if (document.getElementById('nb_nsc').value != "other") {
392
                        document.getElementById('nb_nsc').value = "other";
393
                        document.getElementById('nb_val').value = "";
394
                }
395
        }
396
}
2 daniel-mar 397
function nb_ns_choose() {
398
        var ns = document.getElementById('nb_nsc').value;
399
        if (ns == "dns") {
400
                document.getElementById('nb_ns').value = "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
401
                document.getElementById('nb_val').value = "www.example.org";
402
        }
35 daniel-mar 403
        else if (ns == "url") {
2 daniel-mar 404
                document.getElementById('nb_ns').value = "6ba7b811-9dad-11d1-80b4-00c04fd430c8";
405
                document.getElementById('nb_val').value = "http://www.example.org/";
406
        }
35 daniel-mar 407
        else if (ns == "oid") {
2 daniel-mar 408
                document.getElementById('nb_ns').value = "6ba7b812-9dad-11d1-80b4-00c04fd430c8";
409
                document.getElementById('nb_val').value = "2.999";
410
        }
35 daniel-mar 411
        else if (ns == "x500") {
2 daniel-mar 412
                document.getElementById('nb_ns').value = "6ba7b814-9dad-11d1-80b4-00c04fd430c8";
413
                document.getElementById('nb_val').value = "UID=jsmith,DC=example,DC=net";
414
        }
35 daniel-mar 415
        /*
416
        else if (ns == "oidplus_ns") {
2 daniel-mar 417
                document.getElementById('nb_ns').value = "0943e3ce-4b79-11e5-b742-78e3b5fc7f22";
418
                document.getElementById('nb_val').value = "ipv4";
419
        }
35 daniel-mar 420
        else if (ns == "oidplus_ns_val") {
2 daniel-mar 421
                document.getElementById('nb_ns').value = "ad1654e6-7e15-11e4-9ef6-78e3b5fc7f22";
422
                document.getElementById('nb_val').value = "ipv4:8.8.8.8";
423
        }
35 daniel-mar 424
        else if (ns == "oidplus_ns_pubkey") {
28 daniel-mar 425
                document.getElementById('nb_ns').value = "fd16965c-8bab-11ed-8744-3c4a92df8582";
31 daniel-mar 426
                document.getElementById('nb_val').value = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqg/PnsC1WX3C1/mUSLuk0DIaDHtEsxBnG0auYJRJ1hBtbUUvItbK0odlKrX2SFo1MJJpu/SSxTzAgqkKZsZe3cCFkgA1svfuH9i94oGLjJ4n0kRJEGlanCmGndJBfIqGDJaQE2BJ8tLxeBrpkd9l0KvJsjhRmqJAb9KYK3KYFsWvT+wyjD3UJ1eHcgLbF/Qb3cwMU/u7Fs7ZpsNMW4phDPlsYsk9XHFpJ1/UCj6G53mYRfOC/ouDdGShlbVLB15s0V95QpnU/7lL8mJ2lE+sTZekGNBA4XbJv2gs21cR4E8zc/z+NyZS7117DYZoJqrAN8sKz6xGoKgQF6wueCK5qQIDAQAB";
28 daniel-mar 427
        }
428
        */
35 daniel-mar 429
        else if (ns == "other") {
2 daniel-mar 430
                document.getElementById('nb_ns').value = "";
431
                document.getElementById('nb_val').value = "";
432
        }
433
}
434
nb_ns_choose();
435
</script>
436
 
34 daniel-mar 437
<h3 id="gen_uuidv8">Generate Custom (version 8) UUID</h3>
438
 
37 daniel-mar 439
<p><i>UUIDv8 is made of 122 bits application-specific / custom data. The other 6 bits are used to specify the variant and version of the UUID, to make it RFC-compatible.</i></p>
35 daniel-mar 440
 
441
<p><a id="uuidv8_info_button" href="javascript:show_uuidv8_info()">Show format</a>
442
<script>
443
function show_uuidv8_info() {
444
        document.getElementById("uuidv8_info_button").style.display = "none";
445
        document.getElementById("uuidv8_info").style.display = "block";
446
}
447
</script>
448
<pre id="uuidv8_info" style="display:none">Variant 1, Version 8 UUID:
449
- 48 bit Custom data
450
-  4 bit Version (fix 0x8)
451
- 12 bit Custom data
452
-  2 bit Variant (fix 0b10)
453
- 62 bit Custom data</pre></p>
454
 
34 daniel-mar 455
<form method="GET" action="interprete_uuid.php">
456
        <input type="hidden" name="version" value="8">
35 daniel-mar 457
        <label>Block&nbsp;1 (32&nbsp;bits):</label><input type="text" name="block1" value="00000000" maxlength="8"  id="v8_block1" style="width:150px" pattern="[0-9a-fA-F]+"> (hex notation)<br>
458
        <label>Block&nbsp;2 (16&nbsp;bits):</label><input type="text" name="block2" value="0000" maxlength="4"  id="v8_block2" style="width:150px" pattern="[0-9a-fA-F]+"> (hex notation)<br>
459
        <label>Block&nbsp;3 (<abbr title="The high 4 bits are occupied by the UUID version = 8">12&nbsp;bits</abbr>):</label><input type="text" name="block3" value="0000" maxlength="4"  id="v8_block3" style="width:150px" pattern="[0-9a-fA-F]+"> (hex notation)<br>
460
        <label>Block&nbsp;4 (<abbr title="The high 2 bits are occupied by the UUID variant = 0b10">14&nbsp;bits</abbr>):</label><input type="text" name="block4" value="0000" maxlength="4"  id="v8_block4" style="width:150px" pattern="[0-9a-fA-F]+"> (hex notation)<br>
461
        <label>Block&nbsp;5 (48&nbsp;bits):</label><input type="text" name="block5" value="000000000000" maxlength="12" id="v8_block5" style="width:150px" pattern="[0-9a-fA-F]+"> (hex notation)<br>
34 daniel-mar 462
        <font color="red">Warning</font>: These UUIDs do not contain a timestamp,
463
        therefore the uniqueness of these UUIDs is not guaranteed!<br><br>
464
        <input type="hidden" name="uuid" value="CREATE"> <input type="submit" value="Create UUID">
465
</form>
466
 
31 daniel-mar 467
<h2 id="interpret_uuid">Interpret a UUID</h2>
2 daniel-mar 468
 
30 daniel-mar 469
<p>You can enter a UUID in the following notations:</p>
2 daniel-mar 470
 
471
<ul>
472
        <li>Classic notation (case insensitive, curly braces optional): <code>9e83839a-5967-11e4-8c1c-78e3b5fc7f22</code></li>
473
        <li>As OID: <code>2.25.210700883446948645633376489934419689250</code></li>
474
</ul>
475
 
476
<p>The script will output:</p>
477
 
478
<ul>
479
        <li>Notation as UUID and OID</li>
35 daniel-mar 480
        <li>Version, variant, and additional data (date and time, clock sequence, node id, etc.)</li>
2 daniel-mar 481
</ul>
482
 
30 daniel-mar 483
<p>Please enter a UUID or UUID OID:</p>
2 daniel-mar 484
 
485
<form method="GET" action="interprete_uuid.php">
32 daniel-mar 486
        <input type="text" name="uuid" value="" style="width:300px"> <input type="submit" value="Interprete">
2 daniel-mar 487
</form>
488
 
31 daniel-mar 489
<h2 id="interpret_mac">Interpret a MAC address (<abbr title="Media Access Control">MAC</abbr> /
26 daniel-mar 490
<abbr title="Extended Unique Identifier">EUI</abbr> /
491
<abbr title="Extended Local Identifier">ELI</abbr> /
492
<abbr title="Standard Assigned Identifier">SAI</abbr> /
493
<abbr title="Administratively Assigned Identifier">AAI</abbr>)</h2>
2 daniel-mar 494
 
30 daniel-mar 495
<p>You can enter a UUID in the following notations:</p>
2 daniel-mar 496
 
497
<ul>
498
        <li><code>AA-BB-CC-DD-EE-FF</code></li>
499
        <li><code>AA:BB:CC:DD:EE:FF</code></li>
500
        <li><code>AABBCC.DDEEFF</code> (case insensitive)</li>
16 daniel-mar 501
        <li><code>AA-BB-CC-DD-EE-FF-11-22</code> (EUI-64)</li>
502
        <li><code>AA:BB:CC:DD:EE:FF-11-22</code> (EUI-64)</li>
503
        <li><code>fe80::1322:33ff:fe44:5566</code> (IPv6 Link Local / EUI-64)</li>
2 daniel-mar 504
</ul>
505
 
506
<p>The script will output:</p>
507
 
508
<ul>
509
        <li>Information about the I/G and U/L flags.</li>
510
        <li>Information about the entry in the IEEE registry, if available.</li>
511
        <li>Information about the registrant, if available.</li>
512
</ul>
513
 
29 daniel-mar 514
<p>Please enter a MAC (EUI, ELI, SAI, AAI), or IPv6-Link-Local address:</p>
2 daniel-mar 515
 
516
<form method="GET" action="interprete_mac.php">
32 daniel-mar 517
        <input type="text" name="mac" value="" style="width:250px"> <input type="submit" value="Interprete">
2 daniel-mar 518
</form>
519
 
41 daniel-mar 520
<h3 id="gen_aai">Generate an AAI</h3>
521
 
522
<p><i>An Administratively Assigned Identifier (AAI) is a MAC address which can be locally defined
523
by applications or an administrator. Unlike the EUI, an AAI is NOT worldwide unique.</i></p>
524
 
525
<form method="GET" action="interprete_mac.php">
526
    <input type="hidden" name="aai_gen" value="1">
527
    <input type="hidden" name="aai_gen_bits" value="48">
528
    <input type="hidden" name="aai_gen_multicast" value="0">
529
    <input type="hidden" name="uuid" value="CREATE"> <input type="submit" value="Generate AAI-48">
530
</form>
531
 
532
<br>
533
 
534
<form method="GET" action="interprete_mac.php">
535
    <input type="hidden" name="aai_gen" value="1">
536
    <input type="hidden" name="aai_gen_bits" value="64">
537
    <input type="hidden" name="aai_gen_multicast" value="0">
538
    <input type="hidden" name="uuid" value="CREATE"> <input type="submit" value="Generate AAI-64">
539
</form>
540
 
541
<p>The following options are rather unusual, but are implemented for the sake of completeness:</p>
542
 
543
<form method="GET" action="interprete_mac.php">
544
    <input type="hidden" name="aai_gen" value="1">
545
    <input type="hidden" name="aai_gen_bits" value="48">
546
    <input type="hidden" name="aai_gen_multicast" value="1">
547
    <input type="hidden" name="uuid" value="CREATE"> <input type="submit" value="Generate Multicast AAI-48">
548
</form>
549
 
550
<br>
551
 
552
<form method="GET" action="interprete_mac.php">
553
    <input type="hidden" name="aai_gen" value="1">
554
    <input type="hidden" name="aai_gen_bits" value="64">
555
    <input type="hidden" name="aai_gen_multicast" value="1">
556
    <input type="hidden" name="uuid" value="CREATE"> <input type="submit" value="Generate Multicast AAI-64">
557
</form>
558
 
559
 
22 daniel-mar 560
<br><br><br>
561
 
2 daniel-mar 562
</body>
563
 
564
</html>