Internet DRAFT - draft-snell-multihash
draft-snell-multihash
Individual Submission J. Snell, Ed.
Internet-Draft NearForm Research
Intended status: Standards Track N. Greco
Expires: August 27, 2020 J. Benet
D. Dalrymple
D. Dias
L. Gierth
Protocol Labs
February 24, 2020
Multiformats
draft-snell-multihash-00
Abstract
Defines Multiformats, a collection of data formats that aim to
future-proof systems by adding self-description to format values; and
defines the Multihash and Multibase Multiformat data formats.
Status of This Memo
This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on August 27, 2020.
Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document.
Snell, et al. Expires August 27, 2020 [Page 1]
Internet-Draft Multiformats February 2020
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Unsigned Variable Length Integer . . . . . . . . . . . . . . 3
2.1. ABNF Definition . . . . . . . . . . . . . . . . . . . . . 4
3. Multibase . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1. Examples . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2. Multibase ABNF . . . . . . . . . . . . . . . . . . . . . 4
4. Multihash . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.1. Example Multihashes . . . . . . . . . . . . . . . . . . . 5
4.2. Multihash ABNF . . . . . . . . . . . . . . . . . . . . . 5
5. Security Considerations . . . . . . . . . . . . . . . . . . . 5
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6
6.1. The Codec Registry . . . . . . . . . . . . . . . . . . . 6
6.1.1. Codec Registration . . . . . . . . . . . . . . . . . 6
6.1.2. Initial Contents . . . . . . . . . . . . . . . . . . 7
6.2. The Multibase Registry . . . . . . . . . . . . . . . . . 15
6.2.1. Base-Encoding Registration . . . . . . . . . . . . . 15
6.2.2. Initial Contents . . . . . . . . . . . . . . . . . . 16
7. Normative References . . . . . . . . . . . . . . . . . . . . 17
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18
1. Introduction
Multiformats are a collection of data formats that aim to future-
proof systems by adding self-description to format values; allowing
interoperability and protocol agility while avoiding lock in.
The self-describing aspects of the Multiformat values have a few
stipulations:
o They MUST be in-band (encoded within and carried with the value).
o They MUST avoid lock-in and promote extensibility.
o They MUST be compact and have a binary-packed representation.
o They MUST have a human-readable representation.
This specification defines the Multihash and Multibase formats.
This specification also defines extensible registries for codec and
base-encoding identifiers.
New Multiformat data formats SHOULD be registered within the Codec
Registry using the "multiformat" type identifier.
Snell, et al. Expires August 27, 2020 [Page 2]
Internet-Draft Multiformats February 2020
In this document, the key words "MUST", "MUST NOT", "REQUIRED",
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
and "OPTIONAL" are to be interpreted as described in [RFC2119].
This specification uses the Augmented Backus-Naur Form (ABNF)
notation of [RFC5234]
2. Unsigned Variable Length Integer
The various Multiformats defined in this specification make use of
the Unsigned Variable Length Integer encoding defined in Appendix C
of the [LEB128] standard.
As suggested by the name, this variable length encoding is only
capable of representing unsigned integers. Further, while there is
no theoretical maximum integer value that can be represented by the
format, implementations MUST NOT encode more than nine (9) bytes
giving a practical limit of integers in a range between 0 and 2^63 -
1.
Specific Multiformats using the Unsigned Variable Length Integer
encoding MAY explicitly declare a more restricted range of encoded
values but MUST NOT require values greater than 2^63 - 1.
All integer values between 0 and 127 are encoded as a single byte
that is identical to the input. That is, the value 1 is encoded as
00000001, and the value 127 is encoded as 01111111.
Values greater than 127 require two or more bytes as illustrated in
the examples below.
Numbers MUST be encoded using the least number of bytes possible.
+---------+----------------------------+
| Integer | Encoding |
+---------+----------------------------+
| 1 | 00000001 |
| 127 | 01111111 |
| 128 | 10000000 00000001 |
| 255 | 11111111 00000001 |
| 300 | 10101100 00000010 |
| 16384 | 10000000 10000000 00000001 |
+---------+----------------------------+
Snell, et al. Expires August 27, 2020 [Page 3]
Internet-Draft Multiformats February 2020
2.1. ABNF Definition
Specifications signal use of the Unsigned Variable Length Encoded
Integer format by referencing the unsigned-varint ABNF grammar rule
defined below.
varint-terminator = %x00-7f
varint-continuation = %x80-ff
unsigned-varint = *8varint-continuation varint-terminator
3. Multibase
Multibase is a format for differentiating outputs from various well-
established text base-encoding algorithms.
A Multibase consists simply of a single prefix character that
identifies the base-encoding of the remaining characters. All valid
Multibase prefix characters are registered in The Multibase Registry.
The prefix character for each base are selected such that they are
included in the alphabets of the base they represent. For example,
"f" is the base code for base16 (hex) because "f" is in hex's 16
character alphabet.
3.1. Examples
Given the sample text, "Multibase is awesome! \o/", the following
example Multibase encodings may be generated.
+------------+-----------------------------------------------------+
| Base | Multibase |
+------------+-----------------------------------------------------+
| 16 (upper) | F4D756C74696261736520697320617765736F6D6521205C6F2F |
| 16 (lower) | f4d756c74696261736520697320617765736f6d6521205c6f2f |
| 32 | BJV2WY5DJMJQXGZJANFZSAYLXMVZW63LFEEQFY3ZP |
| 58 | zYAjKoNbau5KiqmHPmSxYCvn66dA1vLmwbt |
| 64 | MTXVsdGliYXNlIGlzIGF3ZXNvbWUhIFxvLw== |
+------------+-----------------------------------------------------+
3.2. Multibase ABNF
ABNF
base-identifier = <ascii character>
multibase = base-identifier {base-encoded-data}
Snell, et al. Expires August 27, 2020 [Page 4]
Internet-Draft Multiformats February 2020
4. Multihash
Multihash is a format for differentiating outputs from various well-
established cryptographic hash functions while adressing output
length and encoding considerations.
Multihash values encode the hash function output prefixed by an id
identifying the hash function encoded as an unsigned variable length
integer, and the length of the hash function output encoded as an
unsigned variable length integer. All valid Multihash function
identifiers are registered in the Codec Registry.
Multihash values are byte sequences that MAY be encoded in multiple
base-encodings including hex, base64, base32, or others. When
representing a Multihash using a base-encoding, the Multibase format
SHOULD be used.
4.1. Example Multihashes
Given the sample text "multihash", the following example Multihash
values may be generated:
+--------+-----+----------------------------------------------------+
| Functi | ID | Multihash (Multibase/Base16) |
| on | | |
+--------+-----+----------------------------------------------------+
| sha1 | 0x1 | f111488c2f11fb2ce392acb5b2986e640211c4690073e |
| | 1 | |
| sha2-2 | 0x1 | f12209cbc07c3f991725836a3aa2a581ca2029198aa420b9d9 |
| 56 | 2 | 9bc0e131d9f3e2cbe47 |
+--------+-----+----------------------------------------------------+
4.2. Multihash ABNF
Multihash
hash-function-code = unsigned-varint
hash-digest-size = unsigned-varint
hash = {hash function output}
multihash = hash-function-code hash-digest-size hash
5. Security Considerations
There are no additional security considerations introduced by the use
of Multiformat data formats. Note, however, that various hash
functions that may be used with multiformats may be vulnerable to
Snell, et al. Expires August 27, 2020 [Page 5]
Internet-Draft Multiformats February 2020
various known security issues and limitations (e.g. sha1) and thus
SHOULD be avoided.
6. IANA Considerations
6.1. The Codec Registry
6.1.1. Codec Registration
Codec identifiers can be registered using the procedure described
herein.
Codecs are registered using the Expert Review policy (see Section 4.5
of [RFC8126]). The goal of the registry is to reflect common use of
codecs on the Internet. Therefore, the expert(s) should be strongly
biased towards approving registrations, unless they are abusive,
frivolous, not likely to be used on the Internet, or actively harmful
to the Internet and/or the Web (not merely aesthetically displeasing
or architecturally dubious). Expert(s) can withhold registration of
codecs that are too general for the proposal application.
Expert(s) will clearly identify any issues that cause a registration
to be refused. Advice about the semantics of a proposed codec can be
given, but if it does not block registration, this should be
explicitly stated.
When a request if approved, the expert(s) shall inform IANA, and the
regstration will be processed. The IESG is the final arbiter of any
objection.
The Codec Registry is located at https://www.iana.org/assignments/
multiformat-codecs. Registration requests can be made by following
instructions located there or by sending an email to the multiformat-
codecs@ietf.org mailing list.
Registration requests consist of at least the following information:
o *Codec Name*: The name of codec
o *Type*: The type of applicable multiformat
o *Code*: The requested identity code
o *Description*: An optional short text description of the codec.
o *Reference*: A reference to the document that specifies the codec,
preferably including a URI that can be used to retrieve a copy of
Snell, et al. Expires August 27, 2020 [Page 6]
Internet-Draft Multiformats February 2020
the document. An indication of the relevant section(s) can also
be included but is not required.
Multiformat data formats themselves MAY be registered within The
Codec Registry using a Type field value of "multiformat". For all
other registrations, the Type field MUST refer to an entry in The
Codec Registry whose Type is "multiformat".
The expert(s) can define additional fields to be collected in the
registry.
Registrations SHOULD reference a freely available, stable
specification.
Note that codecs can be registere by third parties (including the
expert(s)), if the expert(s) determine that an unregistered codec is
widely deployed and not likely to be registered in a timely manner
otherwise. Such registrations still are subject to the requirements
defined.
6.1.2. Initial Contents
The initial contents of the Codec Registry include:
+----------------+-------------+--------+---------------------------+
| Name | Type | Code | Description |
+----------------+-------------+--------+---------------------------+
| identity | multihash | 0x00 | raw binary |
| sha1 | multihash | 0x11 | |
| sha2-256 | multihash | 0x12 | |
| sha2-512 | multihash | 0x13 | |
| sha3-512 | multihash | 0x14 | |
| sha3-384 | multihash | 0x15 | |
| sha3-256 | multihash | 0x16 | |
| sha3-224 | multihash | 0x17 | |
| shake-128 | multihash | 0x18 | |
| shake-256 | multihash | 0x19 | |
| keccak-224 | multihash | 0x1a | keccak has variable |
| | | | output length. The number |
| | | | specifies the core length |
| keccak-256 | multihash | 0x1b | |
| keccak-384 | multihash | 0x1c | |
| keccak-512 | multihash | 0x1d | |
| murmur3-128 | multihash | 0x22 | |
| murmur3-32 | multihash | 0x23 | |
| multicodec | multiformat | 0x30 | |
| multihash | multiformat | 0x31 | |
| multibase | multiformat | 0x33 | |
Snell, et al. Expires August 27, 2020 [Page 7]
Internet-Draft Multiformats February 2020
| dbl-sha2-256 | multihash | 0x56 | |
| md4 | multihash | 0xd4 | |
| md5 | multihash | 0xd5 | |
| bmt | multihash | 0xd6 | Binary Merkle Tree Hash |
| x11 | multihash | 0x1100 | |
| blake2b-8 | multihash | 0xb201 | Blake2b consists of 64 |
| | | | output lengths that give |
| | | | different hashes |
| blake2b-16 | multihash | 0xb202 | |
| blake2b-24 | multihash | 0xb203 | |
| blake2b-32 | multihash | 0xb204 | |
| blake2b-40 | multihash | 0xb205 | |
| blake2b-48 | multihash | 0xb206 | |
| blake2b-56 | multihash | 0xb207 | |
| blake2b-64 | multihash | 0xb208 | |
| blake2b-72 | multihash | 0xb209 | |
| blake2b-80 | multihash | 0xb20a | |
| blake2b-88 | multihash | 0xb20b | |
| blake2b-96 | multihash | 0xb20c | |
| blake2b-104 | multihash | 0xb20d | |
| blake2b-112 | multihash | 0xb20e | |
| blake2b-120 | multihash | 0xb20f | |
| blake2b-128 | multihash | 0xb210 | |
| blake2b-136 | multihash | 0xb211 | |
| blake2b-144 | multihash | 0xb212 | |
| blake2b-152 | multihash | 0xb213 | |
| blake2b-160 | multihash | 0xb214 | |
| blake2b-168 | multihash | 0xb215 | |
| blake2b-176 | multihash | 0xb216 | |
| blake2b-184 | multihash | 0xb217 | |
| blake2b-192 | multihash | 0xb218 | |
| blake2b-200 | multihash | 0xb219 | |
| blake2b-208 | multihash | 0xb21a | |
| blake2b-216 | multihash | 0xb21b | |
| blake2b-224 | multihash | 0xb21c | |
| blake2b-232 | multihash | 0xb21d | |
| blake2b-240 | multihash | 0xb21e | |
| blake2b-248 | multihash | 0xb21f | |
| blake2b-256 | multihash | 0xb220 | |
| blake2b-264 | multihash | 0xb221 | |
| blake2b-272 | multihash | 0xb222 | |
| blake2b-280 | multihash | 0xb223 | |
| blake2b-288 | multihash | 0xb224 | |
| blake2b-296 | multihash | 0xb225 | |
| blake2b-304 | multihash | 0xb226 | |
| blake2b-312 | multihash | 0xb227 | |
| blake2b-320 | multihash | 0xb228 | |
| blake2b-328 | multihash | 0xb229 | |
Snell, et al. Expires August 27, 2020 [Page 8]
Internet-Draft Multiformats February 2020
| blake2b-336 | multihash | 0xb22a | |
| blake2b-344 | multihash | 0xb22b | |
| blake2b-352 | multihash | 0xb22c | |
| blake2b-360 | multihash | 0xb22d | |
| blake2b-368 | multihash | 0xb22e | |
| blake2b-376 | multihash | 0xb22f | |
| blake2b-384 | multihash | 0xb230 | |
| blake2b-392 | multihash | 0xb231 | |
| blake2b-400 | multihash | 0xb232 | |
| blake2b-408 | multihash | 0xb233 | |
| blake2b-416 | multihash | 0xb234 | |
| blake2b-424 | multihash | 0xb235 | |
| blake2b-432 | multihash | 0xb236 | |
| blake2b-440 | multihash | 0xb237 | |
| blake2b-448 | multihash | 0xb238 | |
| blake2b-456 | multihash | 0xb239 | |
| blake2b-464 | multihash | 0xb23a | |
| blake2b-472 | multihash | 0xb23b | |
| blake2b-480 | multihash | 0xb23c | |
| blake2b-488 | multihash | 0xb23d | |
| blake2b-496 | multihash | 0xb23e | |
| blake2b-504 | multihash | 0xb23f | |
| blake2b-512 | multihash | 0xb240 | |
| blake2s-8 | multihash | 0xb241 | Blake2s consists of 32 |
| | | | output lengths that give |
| | | | different hashes |
| blake2s-16 | multihash | 0xb242 | |
| blake2s-24 | multihash | 0xb243 | |
| blake2s-32 | multihash | 0xb244 | |
| blake2s-40 | multihash | 0xb245 | |
| blake2s-48 | multihash | 0xb246 | |
| blake2s-56 | multihash | 0xb247 | |
| blake2s-64 | multihash | 0xb248 | |
| blake2s-72 | multihash | 0xb249 | |
| blake2s-80 | multihash | 0xb24a | |
| blake2s-88 | multihash | 0xb24b | |
| blake2s-96 | multihash | 0xb24c | |
| blake2s-104 | multihash | 0xb24d | |
| blake2s-112 | multihash | 0xb24e | |
| blake2s-120 | multihash | 0xb24f | |
| blake2s-128 | multihash | 0xb250 | |
| blake2s-136 | multihash | 0xb251 | |
| blake2s-144 | multihash | 0xb252 | |
| blake2s-152 | multihash | 0xb253 | |
| blake2s-160 | multihash | 0xb254 | |
| blake2s-168 | multihash | 0xb255 | |
| blake2s-176 | multihash | 0xb256 | |
| blake2s-184 | multihash | 0xb257 | |
Snell, et al. Expires August 27, 2020 [Page 9]
Internet-Draft Multiformats February 2020
| blake2s-192 | multihash | 0xb258 | |
| blake2s-200 | multihash | 0xb259 | |
| blake2s-208 | multihash | 0xb25a | |
| blake2s-216 | multihash | 0xb25b | |
| blake2s-224 | multihash | 0xb25c | |
| blake2s-232 | multihash | 0xb25d | |
| blake2s-240 | multihash | 0xb25e | |
| blake2s-248 | multihash | 0xb25f | |
| blake2s-256 | multihash | 0xb260 | |
| skein256-8 | multihash | 0xb301 | Skein256 consists of 32 |
| | | | output lengths that give |
| | | | different hashes |
| skein256-16 | multihash | 0xb302 | |
| skein256-24 | multihash | 0xb303 | |
| skein256-32 | multihash | 0xb304 | |
| skein256-40 | multihash | 0xb305 | |
| skein256-48 | multihash | 0xb306 | |
| skein256-56 | multihash | 0xb307 | |
| skein256-64 | multihash | 0xb308 | |
| skein256-72 | multihash | 0xb309 | |
| skein256-80 | multihash | 0xb30a | |
| skein256-88 | multihash | 0xb30b | |
| skein256-96 | multihash | 0xb30c | |
| skein256-104 | multihash | 0xb30d | |
| skein256-112 | multihash | 0xb30e | |
| skein256-120 | multihash | 0xb30f | |
| skein256-128 | multihash | 0xb310 | |
| skein256-136 | multihash | 0xb311 | |
| skein256-144 | multihash | 0xb312 | |
| skein256-152 | multihash | 0xb313 | |
| skein256-160 | multihash | 0xb314 | |
| skein256-168 | multihash | 0xb315 | |
| skein256-176 | multihash | 0xb316 | |
| skein256-184 | multihash | 0xb317 | |
| skein256-192 | multihash | 0xb318 | |
| skein256-200 | multihash | 0xb319 | |
| skein256-208 | multihash | 0xb31a | |
| skein256-216 | multihash | 0xb31b | |
| skein256-224 | multihash | 0xb31c | |
| skein256-232 | multihash | 0xb31d | |
| skein256-240 | multihash | 0xb31e | |
| skein256-248 | multihash | 0xb31f | |
| skein256-256 | multihash | 0xb320 | |
| skein512-8 | multihash | 0xb321 | Skein512 consists of 64 |
| | | | output lengths that give |
| | | | different hashes |
| skein512-16 | multihash | 0xb322 | |
| skein512-24 | multihash | 0xb323 | |
Snell, et al. Expires August 27, 2020 [Page 10]
Internet-Draft Multiformats February 2020
| skein512-32 | multihash | 0xb324 | |
| skein512-40 | multihash | 0xb325 | |
| skein512-48 | multihash | 0xb326 | |
| skein512-56 | multihash | 0xb327 | |
| skein512-64 | multihash | 0xb328 | |
| skein512-72 | multihash | 0xb329 | |
| skein512-80 | multihash | 0xb32a | |
| skein512-88 | multihash | 0xb32b | |
| skein512-96 | multihash | 0xb32c | |
| skein512-104 | multihash | 0xb32d | |
| skein512-112 | multihash | 0xb32e | |
| skein512-120 | multihash | 0xb32f | |
| skein512-128 | multihash | 0xb330 | |
| skein512-136 | multihash | 0xb331 | |
| skein512-144 | multihash | 0xb332 | |
| skein512-152 | multihash | 0xb333 | |
| skein512-160 | multihash | 0xb334 | |
| skein512-168 | multihash | 0xb335 | |
| skein512-176 | multihash | 0xb336 | |
| skein512-184 | multihash | 0xb337 | |
| skein512-192 | multihash | 0xb338 | |
| skein512-200 | multihash | 0xb339 | |
| skein512-208 | multihash | 0xb33a | |
| skein512-216 | multihash | 0xb33b | |
| skein512-224 | multihash | 0xb33c | |
| skein512-232 | multihash | 0xb33d | |
| skein512-240 | multihash | 0xb33e | |
| skein512-248 | multihash | 0xb33f | |
| skein512-256 | multihash | 0xb340 | |
| skein512-264 | multihash | 0xb341 | |
| skein512-272 | multihash | 0xb342 | |
| skein512-280 | multihash | 0xb343 | |
| skein512-288 | multihash | 0xb344 | |
| skein512-296 | multihash | 0xb345 | |
| skein512-304 | multihash | 0xb346 | |
| skein512-312 | multihash | 0xb347 | |
| skein512-320 | multihash | 0xb348 | |
| skein512-328 | multihash | 0xb349 | |
| skein512-336 | multihash | 0xb34a | |
| skein512-344 | multihash | 0xb34b | |
| skein512-352 | multihash | 0xb34c | |
| skein512-360 | multihash | 0xb34d | |
| skein512-368 | multihash | 0xb34e | |
| skein512-376 | multihash | 0xb34f | |
| skein512-384 | multihash | 0xb350 | |
| skein512-392 | multihash | 0xb351 | |
| skein512-400 | multihash | 0xb352 | |
| skein512-408 | multihash | 0xb353 | |
Snell, et al. Expires August 27, 2020 [Page 11]
Internet-Draft Multiformats February 2020
| skein512-416 | multihash | 0xb354 | |
| skein512-424 | multihash | 0xb355 | |
| skein512-432 | multihash | 0xb356 | |
| skein512-440 | multihash | 0xb357 | |
| skein512-448 | multihash | 0xb358 | |
| skein512-456 | multihash | 0xb359 | |
| skein512-464 | multihash | 0xb35a | |
| skein512-472 | multihash | 0xb35b | |
| skein512-480 | multihash | 0xb35c | |
| skein512-488 | multihash | 0xb35d | |
| skein512-496 | multihash | 0xb35e | |
| skein512-504 | multihash | 0xb35f | |
| skein512-512 | multihash | 0xb360 | |
| skein1024-8 | multihash | 0xb361 | Skein1024 consists of 128 |
| | | | output lengths that give |
| | | | different hashes |
| skein1024-16 | multihash | 0xb362 | |
| skein1024-24 | multihash | 0xb363 | |
| skein1024-32 | multihash | 0xb364 | |
| skein1024-40 | multihash | 0xb365 | |
| skein1024-48 | multihash | 0xb366 | |
| skein1024-56 | multihash | 0xb367 | |
| skein1024-64 | multihash | 0xb368 | |
| skein1024-72 | multihash | 0xb369 | |
| skein1024-80 | multihash | 0xb36a | |
| skein1024-88 | multihash | 0xb36b | |
| skein1024-96 | multihash | 0xb36c | |
| skein1024-104 | multihash | 0xb36d | |
| skein1024-112 | multihash | 0xb36e | |
| skein1024-120 | multihash | 0xb36f | |
| skein1024-128 | multihash | 0xb370 | |
| skein1024-136 | multihash | 0xb371 | |
| skein1024-144 | multihash | 0xb372 | |
| skein1024-152 | multihash | 0xb373 | |
| skein1024-160 | multihash | 0xb374 | |
| skein1024-168 | multihash | 0xb375 | |
| skein1024-176 | multihash | 0xb376 | |
| skein1024-184 | multihash | 0xb377 | |
| skein1024-192 | multihash | 0xb378 | |
| skein1024-200 | multihash | 0xb379 | |
| skein1024-208 | multihash | 0xb37a | |
| skein1024-216 | multihash | 0xb37b | |
| skein1024-224 | multihash | 0xb37c | |
| skein1024-232 | multihash | 0xb37d | |
| skein1024-240 | multihash | 0xb37e | |
| skein1024-248 | multihash | 0xb37f | |
| skein1024-256 | multihash | 0xb380 | |
| skein1024-264 | multihash | 0xb381 | |
Snell, et al. Expires August 27, 2020 [Page 12]
Internet-Draft Multiformats February 2020
| skein1024-272 | multihash | 0xb382 | |
| skein1024-280 | multihash | 0xb383 | |
| skein1024-288 | multihash | 0xb384 | |
| skein1024-296 | multihash | 0xb385 | |
| skein1024-304 | multihash | 0xb386 | |
| skein1024-312 | multihash | 0xb387 | |
| skein1024-320 | multihash | 0xb388 | |
| skein1024-328 | multihash | 0xb389 | |
| skein1024-336 | multihash | 0xb38a | |
| skein1024-344 | multihash | 0xb38b | |
| skein1024-352 | multihash | 0xb38c | |
| skein1024-360 | multihash | 0xb38d | |
| skein1024-368 | multihash | 0xb38e | |
| skein1024-376 | multihash | 0xb38f | |
| skein1024-384 | multihash | 0xb390 | |
| skein1024-392 | multihash | 0xb391 | |
| skein1024-400 | multihash | 0xb392 | |
| skein1024-408 | multihash | 0xb393 | |
| skein1024-416 | multihash | 0xb394 | |
| skein1024-424 | multihash | 0xb395 | |
| skein1024-432 | multihash | 0xb396 | |
| skein1024-440 | multihash | 0xb397 | |
| skein1024-448 | multihash | 0xb398 | |
| skein1024-456 | multihash | 0xb399 | |
| skein1024-464 | multihash | 0xb39a | |
| skein1024-472 | multihash | 0xb39b | |
| skein1024-480 | multihash | 0xb39c | |
| skein1024-488 | multihash | 0xb39d | |
| skein1024-496 | multihash | 0xb39e | |
| skein1024-504 | multihash | 0xb39f | |
| skein1024-512 | multihash | 0xb3a0 | |
| skein1024-520 | multihash | 0xb3a1 | |
| skein1024-528 | multihash | 0xb3a2 | |
| skein1024-536 | multihash | 0xb3a3 | |
| skein1024-544 | multihash | 0xb3a4 | |
| skein1024-552 | multihash | 0xb3a5 | |
| skein1024-560 | multihash | 0xb3a6 | |
| skein1024-568 | multihash | 0xb3a7 | |
| skein1024-576 | multihash | 0xb3a8 | |
| skein1024-584 | multihash | 0xb3a9 | |
| skein1024-592 | multihash | 0xb3aa | |
| skein1024-600 | multihash | 0xb3ab | |
| skein1024-608 | multihash | 0xb3ac | |
| skein1024-616 | multihash | 0xb3ad | |
| skein1024-624 | multihash | 0xb3ae | |
| skein1024-632 | multihash | 0xb3af | |
| skein1024-640 | multihash | 0xb3b0 | |
| skein1024-648 | multihash | 0xb3b1 | |
Snell, et al. Expires August 27, 2020 [Page 13]
Internet-Draft Multiformats February 2020
| skein1024-656 | multihash | 0xb3b2 | |
| skein1024-664 | multihash | 0xb3b3 | |
| skein1024-672 | multihash | 0xb3b4 | |
| skein1024-680 | multihash | 0xb3b5 | |
| skein1024-688 | multihash | 0xb3b6 | |
| skein1024-696 | multihash | 0xb3b7 | |
| skein1024-704 | multihash | 0xb3b8 | |
| skein1024-712 | multihash | 0xb3b9 | |
| skein1024-720 | multihash | 0xb3ba | |
| skein1024-728 | multihash | 0xb3bb | |
| skein1024-736 | multihash | 0xb3bc | |
| skein1024-744 | multihash | 0xb3bd | |
| skein1024-752 | multihash | 0xb3be | |
| skein1024-760 | multihash | 0xb3bf | |
| skein1024-768 | multihash | 0xb3c0 | |
| skein1024-776 | multihash | 0xb3c1 | |
| skein1024-784 | multihash | 0xb3c2 | |
| skein1024-792 | multihash | 0xb3c3 | |
| skein1024-800 | multihash | 0xb3c4 | |
| skein1024-808 | multihash | 0xb3c5 | |
| skein1024-816 | multihash | 0xb3c6 | |
| skein1024-824 | multihash | 0xb3c7 | |
| skein1024-832 | multihash | 0xb3c8 | |
| skein1024-840 | multihash | 0xb3c9 | |
| skein1024-848 | multihash | 0xb3ca | |
| skein1024-856 | multihash | 0xb3cb | |
| skein1024-864 | multihash | 0xb3cc | |
| skein1024-872 | multihash | 0xb3cd | |
| skein1024-880 | multihash | 0xb3ce | |
| skein1024-888 | multihash | 0xb3cf | |
| skein1024-896 | multihash | 0xb3d0 | |
| skein1024-904 | multihash | 0xb3d1 | |
| skein1024-912 | multihash | 0xb3d2 | |
| skein1024-920 | multihash | 0xb3d3 | |
| skein1024-928 | multihash | 0xb3d4 | |
| skein1024-936 | multihash | 0xb3d5 | |
| skein1024-944 | multihash | 0xb3d6 | |
| skein1024-952 | multihash | 0xb3d7 | |
| skein1024-960 | multihash | 0xb3d8 | |
| skein1024-968 | multihash | 0xb3d9 | |
| skein1024-976 | multihash | 0xb3da | |
| skein1024-984 | multihash | 0xb3db | |
| skein1024-992 | multihash | 0xb3dc | |
| skein1024-1000 | multihash | 0xb3dd | |
| skein1024-1008 | multihash | 0xb3de | |
| skein1024-1016 | multihash | 0xb3df | |
| skein1024-1024 | multihash | 0xb3e0 | |
+----------------+-------------+--------+---------------------------+
Snell, et al. Expires August 27, 2020 [Page 14]
Internet-Draft Multiformats February 2020
For each of the above entries, this document serves as the reference.
6.2. The Multibase Registry
6.2.1. Base-Encoding Registration
Base-encoding identifiers can be registered using the procedure
described herein.
Base-encodings are registered using the Expert Review policy (see
Section 4.5 of [RFC8126]). The goal of the registry is to reflect
common use of codecs on the Internet. Therefore, the expert(s)
should be strongly biased towards approving registrations, unless
they are abusive, frivolous, not likely to be used on the Internet,
or actively harmful to the Internet and/or the Web (not merely
aesthetically displeasing or architecturally dubious). Expert(s) can
withhold registration of codecs that are too general for the proposal
application.
Expert(s) will clearly identify any issues that cause a registration
to be refused. Advice about the semantics of a proposed codec can be
given, but if it does not block registration, this should be
explicitly stated.
When a request if approved, the expert(s) shall inform IANA, and the
regstration will be processed. The IESG is the final arbiter of any
objection.
The Multibase Registry is located at
https://www.iana.org/assignments/multiformat-base. Registration
requests can be made by following instructions located there or by
sending an email to the multiformat-codecs@ietf.org mailing list.
Registration requests consist of at least the following information:
o *Name*: The name of base-encoding
o *Prefix*: The requested prefix identifier
o *Description*: An optional short text description of the base
encoding.
o *Status*: An indicator of the current implementation status of the
encoding and prefix. MUST be one of "draft", "candidate", or
"default".
o *Reference*: A reference to the document that specifies the base
encoding, preferably including a URI that can be used to retrieve
Snell, et al. Expires August 27, 2020 [Page 15]
Internet-Draft Multiformats February 2020
a copy of the document. An indication of the relevant section(s)
can also be included but is not required.
Each of the Status field values indicates the following meanings:
o *draft*: The encoding has been proposed but is not widely
implemented and may be removed in the future.
o *candidate*: The encoding is mature and widely implemented by many
but not all implementations.
o *default*: The encoding SHOULD be implemented by all
implementations and are widely used.
The expert(s) can change the Status of a registration at any time.
The expert(s) can define additional fields to be collected in the
registry.
Registrations SHOULD reference a freely available, stable
specification.
Note that base encoding can be registered by third parties (including
the expert(s)), if the expert(s) determine that an unregistered base
encoding is widely deployed and not likely to be registered in a
timely manner otherwise. Such registrations still are subject to the
requirements defined.
6.2.2. Initial Contents
The initial contents of the Multibase Registry are as follows:
Snell, et al. Expires August 27, 2020 [Page 16]
Internet-Draft Multiformats February 2020
+-------------------+------+----------------------------+-----------+
| Encoding | Code | Description | Status |
+-------------------+------+----------------------------+-----------+
| identity | 0x00 | 8-bit binary (encoder and | default |
| | | decoder keeps data | |
| | | unmodified) | |
| base2 | 0 | binary (01010101) | candidate |
| base8 | 7 | octal | draft |
| base10 | 9 | decimal | draft |
| base16 | f | hexadecimal | default |
| base16upper | F | hexadecimal | default |
| base32hex | v | rfc4648 no padding - | candidate |
| | | highest char | |
| base32hexupper | V | rfc4648 no padding - | candidate |
| | | highest char | |
| base32hexpad | t | rfc4648 with padding | candidate |
| base32hexpadupper | T | rfc4648 with padding | candidate |
| base32 | b | rfc4648 no padding | default |
| base32upper | B | rfc4648 no padding | default |
| base32pad | c | rfc4648 with padding | candidate |
| base32padupper | C | rfc4648 with padding | candidate |
| base32z | h | z-base-32 (used by Tahoe- | draft |
| | | LAFS) | |
| base58flickr | Z | base58 flicker | candidate |
| base58btc | z | base58 bitcoin | default |
| base64 | m | rfc4648 no padding | default |
| base64pad | M | rfc4648 with padding - | candidate |
| | | MIME encoding | |
| base64url | u | rfc4648 no padding | default |
| base64urlpad | U | rfc4648 with padding | default |
+-------------------+------+----------------------------+-----------+
For each of the above entries, this document serves as the reference.
7. Normative References
[LEB128] DWARF Debugging Information Format Workgroup, "DWARF
Debugging Information Format", December 2005,
<http://dwarfstd.org/doc/Dwarf3.pdf>.
[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>.
Snell, et al. Expires August 27, 2020 [Page 17]
Internet-Draft Multiformats February 2020
[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", STD 68, RFC 5234,
DOI 10.17487/RFC5234, January 2008,
<https://www.rfc-editor.org/info/rfc5234>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>.
Authors' Addresses
James M Snell (editor)
NearForm Research
Email: jasnell@gmail.com
Nicola Greco
Protocol Labs
Email: me@nicola.io
Juan Benet
Protocol Labs
Email: juan@benet.ai
David A. Dalrymple
Protocol Labs
Email: david.dalrymple@protocol.ai
David Dias
Protocol Labs
Email: mail@daviddias.me
Lars Gierth
Protocol Labs
Email: lars.gierth@gmail.com
Snell, et al. Expires August 27, 2020 [Page 18]