VIATHINKSOFT/WEBFAN D. Marschall | M. Wehowski
SPECIFICATION No. 3 ViaThinkSoft | Webfan
First Draft: 2011 9 September 2024
=== Wehowski Identifier (WEID) ===
Abstract
This document describes the Wehowski Identifier (WEID) scheme, which
is an alternative notation of Object Identifiers (OIDs).
Identification of this Document
Revision: 2024-09-09 (Spec Change 12 as of 2024-09-09)
State: In Force
Filename: viathinksoft-std-0003-weid.txt
URN: urn:x-viathinksoft:std:0003:2024-09-09
OID: 1.3.6.1.4.1.37553.8.1.8.1.6
{ iso(1) identified-organization(3) dod(6) internet(1)
private(4) enterprise(1) frdlweb(37553) weid(8) org(1)
webfan(8) technical-specifications(1) weid-spec(6) }
WEID: weid:1-8-1-6-2
IETF/RFC: (None)
Attachments
(None)
Copyright Notice
Copyright (c) 2011-2024 ViaThinkSoft, Webfan and the persons
identified as the document authors. All rights reserved.
Licensed under the terms of the Apache 2.0 License.
Marschall / Wehowski [Page 1]
VTS/WF STD. 3 Wehowski Identifier (WEID) 9 September 2024
Table of Contents
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1 Namespace "weid:" for "Class C" WEIDs . . . . . . . . . . . 4
2.2 Sub-Namespace "weid:pen:" for "Class B" WEIDs . . . . . . . 4
2.3 Sub-Namespace "weid:root:" for "Class A" WEIDs . . . . . . 4
2.4 Sub-Namespace "weid:<DomainName>:" for "Class D" (Domain)
WEID . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.5 Sub-Namespace "weid:x-<Name>:" for Proprietary Namespaces . 5
3 Construction of a WEID . . . . . . . . . . . . . . . . . . . . 5
3.1 Construction of a Class A/B/C WEID . . . . . . . . . . . . 5
3.2 Construction of a Class D WEID . . . . . . . . . . . . . . 7
3.3 Construction of a Custom WEID (Proprietary Namespaces) . . 7
4 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.1 Recommendations . . . . . . . . . . . . . . . . . . . . . . 8
4.2 Wildcard Notation (No Check Digit) . . . . . . . . . . . . 8
4.3 Uniform Resource Names (URN) Namespace Notation . . . . . . 8
5 Additional Notes . . . . . . . . . . . . . . . . . . . . . . . 8
6 Security Considerations . . . . . . . . . . . . . . . . . . . . 9
7 RA Considerations . . . . . . . . . . . . . . . . . . . . . . . 9
8 References . . . . . . . . . . . . . . . . . . . . . . . . . . 10
8.1 Normative References . . . . . . . . . . . . . . . . . . . 10
8.2 Informative References . . . . . . . . . . . . . . . . . . 10
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . 11
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 11
Marschall / Wehowski [Page 2]
VTS/WF STD. 3 Wehowski Identifier (WEID) 9 September 2024
1 Introduction
An Object Identifier (OID) is an extensively used identification mechanism jointly developed by ITU-T and ISO/IEC for naming any type of object, concept, or "thing" with a globally unambiguous name. More information about OIDs can be found at www.oid-info.com. To get an OID in accordance with Recommendation ITU-T X.600 assigned, you need to find a Registration Authority that assigns you an OID. You can obtain an OID as WEID and manage your own arc, e.g. by: - IANA Private Enterprise Numbers (PEN) - Free OID by ViaThinkSoft - "Public" OID by Frdlweb There are three well-known notations for OIDs: Dot notation: 2.999 ASN.1 notation: {joint-iso-itu-t(2) example(999)} OID-IRI notation: /Joint-ISO-ITU-T/Example WEID (WEhowski IDentifier) is another notation for OIDs, developed by Till Wehowski and Daniel Marschall: WEID notation: weid:root:2-RR-2 In the initial version of the WEID specification of 2011, only OIDs below the WEID root arc 1.3.6.1.4.1.37553.8 could be used. In a later definition by Daniel Marschall, any existing OID can be written in WEID notation, by defining sub-namespaces.1.1 Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.2 Namespaces
Sub-namespaces are defined by the WEID consortium (ViaThinkSoft and WebFan) in a Specification Change. The registry of sub-namespaces (URN prefixes) has currently the following entries: Marschall / Wehowski [Page 3]VTS/WF STD. 3 Wehowski Identifier (WEID) 9 September 2024
2.1 Namespace "weid:" for "Class C" WEIDs
The root OID is "1.3.6.1.4.1.37553.8". Example: OID "1.3.6.1.4.1.37553.8.32488192274" can be written as "weid:EXAMPLE-3" (3 is the check digit) or "weid:EXAMPLE-?" (check digit wildcard). The registration of WEID Alphanumeric OIDs beneath this arc is managed by Webfan.de in order of FRDLWEB. You can assign a Private WEID by Frdlweb here: https://registry.frdl.de/?goto=com.frdlweb.freeweid2.2 Sub-Namespace "weid:pen:" for "Class B" WEIDs
The root OID is "1.3.6.1.4.1". Example: OID "1.3.6.1.4.1.37476.9999" can be written as "weid:pen:SX0-7PR-6" (6 is the check digit) or "weid:pen:SX0-7PR-?" (check digit wildcard). The registration of Private Enterprise Numbers (PEN) is managed by IANA. You can register a PEN here: https://pen.iana.org/pen/PenApplication.page2.3 Sub-Namespace "weid:root:" for "Class A" WEIDs
The root OID is the root of the OID tree. Example: OID "2.999" can be written as "weid:root:2-RR-2" (2 is the check digit) or "weid:root:2-RR-2" (check digit wildcard).2.4 Sub-Namespace "weid:<DomainName>:" for "Class D" (Domain) WEID
All WEID sub-namespaces containing at least one dot (.) in the second URN part are treated as domain names. The notation "weid:example.com:ABC-DEF-?" is equal to the Class C WEID "weid:9-DNS-COM-EXAMPLE-ABC-DEF-?". The check digit is equal, because it depends on the absolute path rather than the visible arcs. The resulting WEID is called Domain-WEID or "Class D" WEID. TLD-Only domains are not allowed for the purpose of forming a Domain- WEID. Only ASCII notations can be used; therefore the Punycode notation MUST be used for Unicode domain names. Marschall / Wehowski [Page 4]VTS/WF STD. 3 Wehowski Identifier (WEID) 9 September 2024
A Domain-WEID can be converted to Class A/B/C WEID, but the reverse
conversion is ambiguous ("where does the domain name end and where
does the identifier part start?")
2.5 Sub-Namespace "weid:x-<Name>:" for Proprietary Namespaces
For Proprietary WEID Namespaces, the second URN part must begin with "x-", for example, "weid:x-contoso:ABC-DEF-?" could be a WEID defined by Contoso Ltd. As usual for WEID, the namespace is case insensitive. To avoid confusion with Domain-WEID, the sub-namespace must not contain a dot (.). The vendor has complete control over the namespace and can define the behavior. However, it is recommended to make use of Base36 and the weLuhn check digit. Since the vendor specifies the namespace, it is up to the vendor if they allow the mapping of their WEID-Namespace to the OID-Tree. In comparison to class A/B/C/D WEID which are 100% OID compatible, custom / vendor-specific WEIDs might not be OID-compatible at all. Currently, the following custom namespaces are known: (1) weid:x-frdl:[Base36_NS]-[SubNS]:[Base36_ID]-[CheckDigit] to be defined/implemented by Frdlweb. If you know more namespaces, or if you are the author of a custom namespace, please let us know.3 Construction of a WEID
3.1 Construction of a Class A/B/C WEID
The construction of a WEID is demonstrated with the example OID "2.999": (1) The numeric arcs (e.g. "2" and "999") are converted from base 10 to base 36, so the arcs become "2" and "RR". (2) The arcs are separated by a hyphen -, so we have now "2-RR". (3) A Luhn-based check digit (called WeLuhn) is added, preceded by a hyphen. Alternatively, you can replace the check digit with the wildcard symbol "?" (see section 4.2). Marschall / Wehowski [Page 5]VTS/WF STD. 3 Wehowski Identifier (WEID) 9 September 2024
The WeLuhn check digit is calculated as follows:
(3.1) First, we take the OID in dot notation (e.g. "2.999")
(3.2) The arcs will be converted from base 10 to base 36, so we have
"2-RR". Padding zeros must not be present and need to be
stripped.
(3.3) The hyphens are removed, so we now have "2RR".
(3.4) "A" will be replaced with 10, "B" will be replaced with "11",
etc., so we now have "22727".
This number is the payload for the standard Luhn algorithm which
works as follows:
(3.5) Start from the rightmost digit. Moving left, double the value
of every second digit (including the rightmost digit).
(3.6) Sum the digits of the resulting value in each position.
(3.7) Sum the resulting values from all positions, "s".
(3.8) The check digit is calculated by "((10-s mod 10) mod 10)". In
our case, the Luhn check digit is "2".
(4) Choose the (sub-)namespace that is closest to the OID your are
describing:
- If the OID is inside "1.3.6.1.4.1.37553.8", then replace the
prefix "1-3-6-1-4-1-SZ5-8-" with "weid:" (Class C WEID).
- Otherwise, if the OID is inside "1.3.6.1.4.1", then replace the
prefix "1-3-6-1-4-1-" with "weid:pen:" (Class B WEID).
- Otherwise, prepend "weid:root:" (Class A WEID).
In our example, we choose "weid:root:" and our final WEID notation
for OID "2.999" is "weid:root:2-RR-2", which is a Class A WEID.
Marschall / Wehowski [Page 6]
VTS/WF STD. 3 Wehowski Identifier (WEID) 9 September 2024
3.2 Construction of a Class D WEID
The construction of a Domain WEID is demonstrated with the example domain "example.com" and the payload "ABC-DEF": (1) Prepend "weid:" in front of the domain name, and append a colon. This gives "weid:example.com:". (2) If you want to add a payload, then append a the payload together with a hyphen. This gives "weid:example.com:ABC-DEF-". (3) Add a question-mark to have a wildcard check digit (e.g. "weid:example.com:ABC-DEF-?"), as defined in section 4.2, or calculate the correct check digit and add it. In the latter case you will receive the result: "weid:example.com:ABC-DEF-8". To calculate the check digit: (3.1) Reverse the order of the domain parts, i.e. "example.com" becomes "com.example". (3.2) Prepend "1-3-6-1-4-1-SZ5-8-9-DNS-". This gives "1-3-6-1-4-1- SZ5-8-9-DNS-com.example". (3.3) If you want to add a payload, then add a hyphen and the payload. This results in "1-3-6-1-4-1-SZ5-8-9-DNS-com.example- ABC-DEF" (3.4) Remove the hyphens and dots, and convert everything to upper- case. This gives "136141SZ589DNSCOMEXAMPLEABCDEF". (3.5) "A" will be replaced with 10, "B" will be replaced with "11", etc. (3.6) The standard Luhn algorithm (see section 3.1) will be applied, which gives the check digit, in our example "8".3.3 Construction of a Custom WEID (Proprietary Namespaces)
The construction of a Custom WEID is vendor specific and hence outside the scope of this specification. Marschall / Wehowski [Page 7]VTS/WF STD. 3 Wehowski Identifier (WEID) 9 September 2024
4 Notation
4.1 Recommendations
The arcs in a WEID SHOULD be written in upper-case, but lowercase can be interpreted, too. The URN namespace (weid:, weid:pen:, weid:root:) is case insensitive, but it is RECOMMENDED to write it in lowercase. Padding with 0 characters is valid (e.g. weid:000EXAMPLE-3), but NOT RECOMMENDED. The paddings do not count toward the WeLuhn check digit.4.2 Wildcard Notation (No Check Digit)
An alternative syntax for WEID replaces the check digit with a wildcard in the form of a question mark symbol, for example, "weid:root:2-RR-?" instead of "weid:root:2-RR-2". One useful scenario can be the documentation of incomplete/template WEIDs, e.g. "weid:pen:SX0-Something-?". Another usage is converters (like our online converter) which can help you replace the wildcard with the correct check digit.4.3 Uniform Resource Names (URN) Namespace Notation
In accordiance with [RFC 3406], the URN namespace of WEID is "urn:x- weid:" (whereas "x-" stands for an unregistered experimental URN). Hence, "weid:2-RR-2" can be written as "urn:x-weid:2-RR-2".5 Additional Notes
Any WEID - except for Custom WEID - can be represented by an OID and vice-versa. Therefore, a WEID has all attributes of an OID (e.g. it can be used to generate a Version 5 SHA1 name-based UUID with the Namespace UUID "6ba7b812-9dad-11d1-80b4-00c04fd430c8" according to [RFC 4122]). Please note that some clients handling OIDs cannot handle arcs that have a specific size. Implementers of WEID strongly encourage allowing arbitrary length arcs (i.e. implementing BigInteger rather than 32-bit integers). At www.weid.info you can find more information and announcements of changes. The current version of the specification is 11, which is identified with the OID 1.3.6.1.4.1.37553.8.1.8.1.6.1.12 (weid:1-8-1-6-1-C-5). Marschall / Wehowski [Page 8]VTS/WF STD. 3 Wehowski Identifier (WEID) 9 September 2024
6 Security Considerations
None.7 RA Considerations
OID: 1.3.6.1.4.1.37553.8.1.8.1.6 WEID: weid:1-8-1-6-2 ASN1: { iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) frdlweb(37553) weid(8) org(1) webfan(8) technical-specifications(1) weid-spec(6) } IRI: /.../weid/Organization/Webfan/1/6 Subordinates 1st level: OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1 ASN1: { ... weid-spec-changes(1) } Subordinates 2nd level: OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1.1 ASN1: { ... weid-spec-change-2013-6-27-1-identifier(1) } OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1.2 ASN1: { ... weid-spec-change-2013-6-27-2-weix-canceled- and-replaced(2) } OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1.3 ASN1: { ... weid-spec-change-2013-6-27-3-rooting-url- look-up-url-meaning-revision(3) } OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1.4 ASN1: { ... weid-spec-change-2013-0-1-commercial-repository(4) } OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1.5 ASN1: { ... weid-spec-change-2013-6-27-4-determine-seperator- colon(5) } OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1.6 ASN1: { ... weid-spec-change-2013-10-2-camel-case-identifier(6) } OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1.7 ASN1: { ... weid-spec-change-2013-10-2-thesaurus(7) } OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1.8 ASN1: { ... weid-spec-change-2021-12-8-marschall-indi-version(8) } Marschall / Wehowski [Page 9]VTS/WF STD. 3 Wehowski Identifier (WEID) 9 September 2024
OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1.9
ASN1: { ... weid-spec-change-2022-03-08-marschall-checksum-
wildcard(9) }
OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1.10
ASN1: { ... weid-spec-change-2023-08-07-domain-weid(10) }
OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1.11
ASN1: { ... weid-spec-change-2023-08-07-custom-namespace(11) }
OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1.12
ASN1: { ... weid-spec-change-2024-09-09-urn(12) }
8 References
8.1 Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>. [RFC3406] Daigle, L., van Gulik, D., Iannella, R., and P. Faltstrom, "Uniform Resource Names (URN) Namespace Definition Mechanisms", RFC 3406, DOI 10.17487/RFC3406, October 2002, <https://www.rfc-editor.org/info/rfc3406>.8.2 Informative References
[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally Unique IDentifier (UUID) URN Namespace", RFC 4122, DOI 10.17487/RFC4122, July 2005, <https://www.rfc-editor.org/info/rfc4122>. Marschall / Wehowski [Page 10]VTS/WF STD. 3 Wehowski Identifier (WEID) 9 September 2024
Acknowledgements
I would like to thank Melanie Wehowski for her long time support in
OIDplus and WEID projects.
Thanks to the authors of these free tools which did a very good job
in validating various contents of this document:
This document was written in Nroff Internet Draft Editor by 3xA
Security.
https://aaa-sec.com/nroffedit/
https://misc.daniel-marschall.de/patches/nroffedit/ ("year 2020"
patch)
Authors' Addresses
Daniel Marschall
Postfach 11 53
69243 Bammental
Germany
Email: daniel-marschall@viathinksoft.de
URI: https://www.viathinksoft.com/
Marschall / Wehowski [Page 11]