VIATHINKSOFT/WEBFAN D. Marschall | M. Wehowski
SPECIFICATION No. 3 ViaThinkSoft | Webfan
First Draft: 2011 6 January 2025
=== 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: 2025-01-06 (Spec Change 15 as of 2025-01-06)
State: In Force
Filename: viathinksoft-std-0003-weid.txt
URN: urn:x-viathinksoft:std:0003:2025-01-06
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-2025 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) 6 January 2025
Table of Contents
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1 Namespace "weid:" (Classic WEID, Class C) . . . . . . . . . 4
2.2 Sub-Namespace "weid:pen:" (PEN based, Class B) . . . . . . 4
2.2.1 Sub-Namespace "weid:pen:<pen-base10>:" . . . . . . . . 4
2.3 Sub-Namespace "weid:root:" (OID based, Class A) . . . . . . 4
2.4 Sub-Namespace "weid:<DomainName>:" (DNS based, Class D) . . 4
2.5 Sub-Namespace "weid:uuid:" (UUID based, Class B) . . . . . 5
2.5.1 Sub-Namespace "weid:uuid:<uuid-base16>:" . . . . . . . 5
2.6 Sub-Namespace "weid:x-<Name>:" (Proprietary Namespaces) . . 5
3 Construction of a WEID . . . . . . . . . . . . . . . . . . . . 6
3.1 Construction of a Regular WEID . . . . . . . . . . . . . . 6
3.2 Construction of a DNS based (Class D) WEID . . . . . . . . 7
3.3 Construction of an UUID based (Class B) WEID . . . . . . . 8
3.4 Construction of a Custom WEID (Proprietary Namespaces) . . 9
4 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.1 Recommendations . . . . . . . . . . . . . . . . . . . . . . 9
4.2 Wildcard Notation (No Check Digit) . . . . . . . . . . . . 9
4.3 Uniform Resource Names (URN) Namespace Notation . . . . . . 10
5 Additional Notes . . . . . . . . . . . . . . . . . . . . . . . 10
6 Security Considerations . . . . . . . . . . . . . . . . . . . . 10
7 RA Considerations . . . . . . . . . . . . . . . . . . . . . . . 10
8 References . . . . . . . . . . . . . . . . . . . . . . . . . . 12
8.1 Normative References . . . . . . . . . . . . . . . . . . . 12
8.2 Informative References . . . . . . . . . . . . . . . . . . 12
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . 12
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 12
Marschall / Wehowski [Page 2]
VTS/WF STD. 3 Wehowski Identifier (WEID) 6 January 2025
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. For WEID, the names "Class A", "Class B", "Class C", and "Class D" refer to the property of subsets. Class D is a subset of Class C, which is a subset of Class B, etc.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) 6 January 2025
2.1 Namespace "weid:" (Classic WEID, Class C)
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:" (PEN based, Class B)
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.2.1 Sub-Namespace "weid:pen:<pen-base10>:"
An alternative notation of "weid:pen:<pen-base-36>-ABC-?" is "weid:pen:<pen-base-10>:ABC-?". This means, the following identifiers are equal: - weid:pen:SX0-7PR-? - weid:pen:37476:7PR-? - oid:1.3.6.1.4.1.37476.99992.3 Sub-Namespace "weid:root:" (OID based, Class A)
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-?" (check digit wildcard).2.4 Sub-Namespace "weid:<DomainName>:" (DNS based, Class D)
All WEID sub-namespaces containing at least one dot (.) in the second Marschall / Wehowski [Page 4]VTS/WF STD. 3 Wehowski Identifier (WEID) 6 January 2025
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.
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:uuid:" (UUID based, Class B)
The root OID is "2.25". Example: OID "2.25.41187251803614235665922727894359447633" can be written as "weid:uuid:1U1FHP8PBAM0UTK1O9S7G1H01-?".2.5.1 Sub-Namespace "weid:uuid:<uuid-base16>:"
An alternative notation of "weid:uuid:<uuid-base-36>-ABC-?" is "weid:uuid:<uuid-base-16>:ABC-?". This means, the following identifiers are equal: - weid:uuid:1efc604b-dca1-6ad8-b7ac-4cf95d479851:HALLO-WELT-? (Base 16 UUID + Base 36 WEID arcs) - weid:uuid:1U1FHP8PBAM0UTK1O9S7G1H01-HALLO-WELT-? (Base 36 UUID + Base 36 WEID arcs) - weid:root:2-P-1U1FHP8PBAM0UTK1O9S7G1H01-HALLO-WELT-? (Base 36 UUID + Base 36 WEID arcs) - oid:2.25.41187251803614235665922727894359447633.29048028.1511921 (Base 10 UUID + Base 10 OID arcs)2.6 Sub-Namespace "weid:x-<Name>:" (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 Marschall / Wehowski [Page 5]VTS/WF STD. 3 Wehowski Identifier (WEID) 6 January 2025
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 Regular WEID
The construction of a regular WEID (class A/B/C, but not DNS, UUID, or Custom 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). 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. Marschall / Wehowski [Page 6]VTS/WF STD. 3 Wehowski Identifier (WEID) 6 January 2025
(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.
3.2 Construction of a DNS based (Class D) WEID
The construction of a DNS/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". Marschall / Wehowski [Page 7]VTS/WF STD. 3 Wehowski Identifier (WEID) 6 January 2025
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 an UUID based (Class B) WEID
The construction of a UUID WEID is demonstrated with the example UUID "1efc604b-dca1-6ad8-b7ac-4cf95d479851" and the payload "HALLO-WELT". (1) Prepend "weid:uuid:" in front of the UUID, and append a colon. This gives "weid:uuid:1efc604b-dca1-6ad8-b7ac-4cf95d479851:". (2) If you want to add a payload, then append a the payload together with a hyphen. This gives "weid:uuid:1efc604b-dca1-6ad8-b7ac- 4cf95d479851:HALLO-WELT-". (3) Add a question-mark to have a wildcard check digit (e.g. "weid:uuid:1efc604b-dca1-6ad8-b7ac-4cf95d479851:HALLO-WELT-?"), 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:uuid:1efc604b-dca1-6ad8-b7ac-4cf95d479851:HALLO-WELT-1". To calculate the check digit: (3.1) Convert the UUID to an UUID-OID (located in OID 2.25). To do this, you need to convert the UUID from a base 16 number to a base 10 number, and then prepend "2.25.". Example: "1efc604b- dca1-6ad8-b7ac-4cf95d479851" is equal to OID 2.25.41187251803614235665922727894359447633. Marschall / Wehowski [Page 8]VTS/WF STD. 3 Wehowski Identifier (WEID) 6 January 2025
(3.2) Convert this UUID-OID to a WEID and remove the WEID check
digit. In our example
"2.25.41187251803614235665922727894359447633" becomes
"weid:root:2-P-1U1FHP8PBAM0UTK1O9S7G1H01-".
(3.3) If available, add the actual payload, in our example "HALLO-
WELT". This gives "weid:root:2-P-1U1FHP8PBAM0UTK1O9S7G1H01-
HALLO-WELT"
(3.4) Remove "weid:root:" as well as the hyphens, and convert
everything to upper-case. This gives
"2P1U1FHP8PBAM0UTK1O9S7G1H01HALLOWELT".
(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 "1".
3.4 Construction of a Custom WEID (Proprietary Namespaces)
The construction of a Custom WEID is vendor specific and hence outside the scope of this specification.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:, weid:uuid:) 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 Marschall / Wehowski [Page 9]VTS/WF STD. 3 Wehowski Identifier (WEID) 6 January 2025
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 15, which is identified with the OID 1.3.6.1.4.1.37553.8.1.8.1.6.1.15 (weid:1-8-1-6-1-F-8).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 Marschall / Wehowski [Page 10]VTS/WF STD. 3 Wehowski Identifier (WEID) 6 January 2025
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) }
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) }
OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1.13
ASN1: { ... weid-spec-change-2025-01-01-uuid(13) }
OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1.14
ASN1: { ... weid-spec-change-2025-01-06-uuid-update1(14) }
OID: 1.3.6.1.4.1.37553.8.1.8.1.6.1.15
ASN1: { ... weid-spec-change-2025-01-06-uuid-update2(15) }
Marschall / Wehowski [Page 11]
VTS/WF STD. 3 Wehowski Identifier (WEID) 6 January 2025