RFC 9399
Internet X.509 Public Key Infrastructure: Logotypes in X.509 Certificates
Internet X.509 Public Key Infrastructure: Logotypes in X.509 Certificates π
okay bestie, RFC 9399 is here and it's giving standards track π₯ It's from the Internet Engineering Task Force (IETF) and was published in May 2023 as RFC number 9399 (ISSN 2070-1721). The authors are S. Santesson from IDsec Solutions, R. Housley from Vigil Security, T. Freeman from Amazon Web Services, and L. Rosenthol from Adobe. It obsoletes RFC 3709 and RFC 6170, so those are retired now π The title block doesn't list any Updates entry. π¦
Abstract β¨
this doc specifies a certificate extension for putting logotypes into public key certificates and attribute certificates πΌοΈ it also obsoletes RFCs 3709 and 6170, so yeah, those are out β¨
Status of This Memo πΈ
this is an Internet Standards Track document π
it's a product of the Internet Engineering Task Force (IETF), and it represents the consensus of the IETF community. it got public review and was approved for publication by the Internet Engineering Steering Group (IESG). if you want more info on Internet Standards, check Section 2 of RFC 7841 π
info about the current status of this doc, any errata, and how to send feedback is at https://www.rfc-editor.org/info/rfc9399 π§
Copyright Notice π
Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved.
this doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as in effect on the date of publication. please actually read these, because they explain your rights and restrictions for this document π any Code Components extracted from this doc must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Revised BSD License π
Table of Contents π
1. Introduction
1.1. Certificate-Based Identification
1.2. Selection of Certificates
1.3. Combination of Verification Techniques
1.4. Requirements Language
2. Different Types of Logotypes in Certificates
3. Logotype Data
4. Logotype Certificate Extension
4.1. Extension Format
4.2. Conventions for LogotypeImageInfo
4.3. Embedded Images
4.4. Other Logotypes
4.4.1. Loyalty Logotype
4.4.2. Certificate Background Logotype
4.4.3. Certificate Image Logotype
5. Type of Certificates
6. Use in Clients
7. Image Formats
8. Audio Formats
9. Security Considerations
10. Privacy Considerations
11. IANA Considerations
12. References
12.1. Normative References
12.2. Informative References
Appendix A. ASN.1 Modules
A.1. ASN.1 Modules with 1988 Syntax
A.2. ASN.1 Module with 2002 Syntax
Appendix B. Examples
B.1. Example from RFC 3709
B.2. Issuer Organization Logotype Example
B.3. Embedded Image Example
B.4. Embedded Certificate Image Example
B.5. Full Certificate Example
Appendix C. Changes since RFCs 3709 and 6170
Acknowledgments
Authors' Addresses
1. Introduction β¨
this spec supplements [RFC5280], which profiles public key certificates and certificate revocation lists (CRLs) for use on the Internet. it also supplements [RFC5755], which profiles attribute certificates for use on the Internet πΈ
this doc obsoletes [RFC3709] and [RFC6170]. Appendix C has a summary of the changes since [RFC3709] and [RFC6170] were published π
the basic job of a certificate is to bind a public key to the identity of an entity (the subject). from a purely technical view, you could get that done by signing the subject's identity together with its public key π but PKI (Public Key Infrastructure) has taken certificates way beyond that, because modern global networks and mixed information and operational technology setups need a lot more π
certificate users need to be able to figure out certificate policies, appropriate key usage, assurance level, and name form constraints π§ before a relying party can decide whether a certificate is trustworthy and relevant for what it's meant to do, the certificate might get checked from a bunch of different angles π
systematic processing is needed to decide whether a certificate meets the predefined prerequisites for an intended usage. a lot of the info in certificates is great for machines to process, but it isn't really suited to the human trust and recognition process π€
humans love structure and symbols π most people link complex parts of reality to easily recognizable logotypes and marks, and we tend to trust stuff we recognize from past experience. humans may also dig into info to confirm that first gut reaction. honestly, very few consumers read all the terms and conditions they agree to when they sign up for a service. they usually just act on trust built from past experience and recognition π
branding is a huge part of this. service providers and product vendors pour a lot of money and resources into building a strong link between good user experiences and easily recognizable trademarks, servicemarks, and logotypes π
branding shows up all over identification instruments too, like identification cards, passports, driver's licenses, credit cards, gasoline cards, and loyalty cards πͺͺ these instruments are meant to identify the holder as a particular person or as a member of a community. that community might be the subscribers of a service or any other group. physical identification instruments commonly use logotypes and symbols just to boost human recognition and trust in the instrument itself β¨ they may also include a registered trademark so there's legal recourse if someone copies them without permission βοΈ
certificates play the same kind of role in electronic exchanges, so we're going to look at putting logotypes into certificates π¦ we'll cover certificate-based identification and certificate selection too π
1.1. Certificate-Based Identification π
how much human recognition matters depends on how certificates get used and whether humans need to see them. if certificates are used in open environments, and in apps that make the user consciously aware of the result of a certificate-based identification process, then human recognition is super relevant and might be a total necessity π
some examples of those apps:
- Web server identification, where a user identifies the owner of the website.
- Peer email exchange in business-to-business (B2B), business-to-consumer (B2C), and private communications.
- Exchange of medical records and system for medical prescriptions.
- Unstructured e-business applications (i.e., non-EDI applications).
- Wireless client authenticating to a service provider.
most apps let the human user check out the results of a successful certificate-based identification process π when the user takes the steps needed to view those results, they get shown a view of a certificate. this setup has two big problems π first, the feature to view a certificate is often really hard for non-technical users to find. second, the presentation is super technical and not user friendly. it has no graphic symbols or logotypes to boost human recognition π©
a lot of investigations have shown that people using today's apps just don't take the steps to view certificates. this could be because of poor user interfaces. also, lots of apps are built to hide certificates from users, since the designers don't want to expose certificates to users at all π
1.2. Selection of Certificates π
one situation where software apps have to show certificates to human users is when the user has to pick one certificate out of a portfolio of certificates ποΈ sometimes the app can use info inside the certificates to filter the list for suitability. but if more than one certificate is suitable, the user has to be asked, and the human user has to pick one of them π«Ά
this is kinda like picking a plastic card out of your wallet. card color, location, and branding give you a ton of help there π³
so to give certificate selection that same kind of support, users need tools that make it easy to recognize and tell certificates apart π putting logotypes into certificates gives them exactly that graphic π¨
1.3. Combination of Verification Techniques π§©
using logotypes will, in lots of cases, affect the user's decision to trust and use a certificate π that's why it's so important to have a clear, distinct architectural and functional split between automated certificate verification and human recognition, both in their processes and their goals π§
logotypes are only aimed at human interpretation, and they contain data that's inappropriate for computer-based verification schemes. so the logotype certificate extension MUST NOT be an active component in automated certification path validation, as specified in Section 6 of [RFC5280] π«
automated certification path verification figures out whether the end entity certificate can be verified according to a defined policy. the algorithm for that is specified in [RFC5280] π€
automated processing gives you assurance that the certificate is valid. it doesn't tell you whether the subject is entitled to any particular info, or whether the subject ought to be trusted to perform a particular service. those are authorization decisions π automatic processing will make some authorization decisions, but others depend on the app context and involve the human user π©βπ»
in some situations, automated procedures fail to establish whether the certificate is suitable for the task. then the human user is the final arbiter of the authorization decisions after certificate verification. in the end, the human decides whether to accept an executable email attachment, release personal info, or follow instructions shown by a web browser. that decision is often based on recognition and past experience π«£
the difference between systematic processing and human processing is pretty straightforward, and they can complement each other π€ systematic processing focuses on certification path construction and verification, while the human acceptance process focuses on recognition and related past experience β¨
there are some situations where systematic processing and human processing get in each other's way. these issues are discussed in Section 9 π§
(part 1 of 10, more parts coming bestie ππ)
1.4. Requirements Language β¨
okay so the BIG capital words in this doc are the ones that matter π The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" are read as described in BCP 14 [RFC2119] [RFC8174], but only when they show up in all capitals, just like I'm doing here π
2. Different Types of Logotypes in Certificates π
so this spec sets up three standard logotype types π¦
- community logotype
- issuer organization logotype
- subject organization logotype
The community logotype is the general mark for a community. It's basically the service concept badge for entity identification and certificate issuance β¨ Lots of issuers use one to co-brand with a global community, so they get that worldwide recognition for their local service. It's SO common in the credit card world, where small local card issuers slap on a globally known brand like Visa or Mastercard π³ An issuer can also include more than one community logotype if it's part of more than one global community. Main character energy π
The issuer organization logotype is a logotype for the organization that's named as part of the issuer name in the certificate π’
The subject organization logotype is a logotype for the organization named in the subject name in the certificate πΈ
Beyond those three standard types, this spec also lets you include other logotype types. Each class of logotype gets its own object identifier, and that OID can be locally defined or come from Section 4.4 of this document π§
3. Logotype Data π
okay this part is about the two kinds of logotype data: image data and audio data πΌοΈπ Implementations MUST support image data, no skipping that one bestie π Audio support, though? That's totally OPTIONAL π«Ά
Logotype image and audio data can be given by reference. You include a URI that points to where the logotype data lives, plus a one-way hash of that referenced data, right in the certificate π Privacy is a whole thing here because four parties are involved: the certificate relying parties who use the extension info to fetch the logotype data, the certificate issuers who fill in the extension, the certificate subscribers who request certificates with the extension, and the server operators who host the logotype data π΅οΈββοΈ
Embedding the logotype data right in the certificate instead, using direct addressing (as defined in Section 4.3), gives you way better privacy and fewer parties to worry about π¦ The tradeoff is that the certificate can get a lot bigger π¦
One logotype image can be represented by several image objects showing the same visual content in different formats, sizes, and color palates π¨ At least one of those image objects SHOULD contain an image with a width between 60 pixels and 200 pixels and a height between 45 pixels and 150 pixels π
Audio works the same way. Several audio instances can represent the same audio sequence in different formats, resolutions, and languages π At least one of the audio objects for a logotype SHOULD provide text-based audio data that text-to-speech software can process π£οΈ
A typical use of that text-based audio is in web apps. You drop the audio text into the "alt" attribute of an HTML image (img) element, and then the language value from LogotypeAudioInfo goes into the "lang" attribute of that same image π
If a logotype of a certain type (as defined in Section 2) has more than one image object, then each image object MUST contain variants of roughly the same visual content π― Same goes for audio: if a logotype type has more than one audio object, the audio objects MUST contain variants of the same audio information π§ A spoken message in different languages counts as a variation of the same audio info π When a certificate has more than one image object or more than one audio object for the same logotype type, the certificate issuer is responsible for making sure they all have roughly the same content π
Compliant applications MUST NOT display more than one of the image objects, and MUST NOT play more than one of the audio objects, for any logotype type (see Section 2) at the same time. No stacking the vibes, bestie π ββοΈ
A client MAY display multiple logotypes of different logotype types at once π For example, it can show a subject organization logotype while also showing a community logotype π But it MUST NOT display multiple image variants of the same community logotype π
Each logotype present in a certificate MUST be represented by at least one image data object πΌοΈ
Client applications SHOULD boost their processing and off-line functionality by caching logotype data πΎβ¨
4. Logotype Certificate Extension π
this section is where we get into the nitty gritty of the logotype certificate extension π§ It covers the syntax and the semantics, so get ready to take notes, bestie π
4.1. Extension Format β¨
okay so the logotype certificate extension MAY be included in public key certificates [RFC5280] or attribute certificates [RFC5755] π the extension MUST be identified by this object identifier π:
id-pe-logotype OBJECT IDENTIFIER ::=
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-pe(1) 12 }
and bestie, this extension MUST NOT be marked critical π that's a hard no!!
Logotype data can be referenced with either direct or indirect addressing π¦. Client applications SHOULD support both direct and indirect addressing. Certificate issuing applications MUST support direct addressing, and certificate issuing applications SHOULD support indirect addressing. π
Direct addressing puts info about each logotype right inside the certificate, and the URIs point to the image and audio data objects πΈ. Multiple URIs MAY be included for locations for obtaining the same logotype object. Multiple hash values MAY be included, each computed with a different one-way hash function. Direct addressing is perfect when you only have one or a few alternative images and audio objects to reference β¨.
Indirect addressing includes one or more references to an external hashed data structure. That structure holds the type, content, and location of each image and audio object π§. It's the move when each logotype has many alternative audio or image objects, so it's giving organization π.
Both direct and indirect addressing can use alternative URIs to get exactly the same logotype data, and that replication is intended to improve availability π«Ά. So if a client can't fetch the item from one URI, the client SHOULD try another URI in the sequence. All direct addressing URIs SHOULD use the HTTPS scheme (https://...), the HTTP scheme (http://...), or the DATA scheme (data://...) [RFC3986]. However, the "data" URI scheme MUST NOT be used with the indirect addressing π. Clients MUST support retrieval of the referenced LogotypeData with HTTP [RFC9110], HTTP with TLS [RFC8446], or subsequent versions of these protocols. Client applications SHOULD also support the "data" URI scheme [RFC2397] for direct addressing with embedded logotype data within the extension π.
Note that the HTTPS scheme (https://...) requires the validation of other certificates to establish a secure connection π. For this reason, the HTTP scheme (http://...) may be easier for a client to handle. Also, the hash of the logotype data provides data integrity π.
The logotype certificate extension MUST have the following syntax π:
LogotypeExtn ::= SEQUENCE {
communityLogos [0] EXPLICIT SEQUENCE OF LogotypeInfo OPTIONAL,
issuerLogo [1] EXPLICIT LogotypeInfo OPTIONAL,
subjectLogo [2] EXPLICIT LogotypeInfo OPTIONAL,
otherLogos [3] EXPLICIT SEQUENCE OF OtherLogotypeInfo
OPTIONAL }
LogotypeInfo ::= CHOICE {
direct [0] LogotypeData,
indirect [1] LogotypeReference }
LogotypeData ::= SEQUENCE {
image SEQUENCE OF LogotypeImage OPTIONAL,
audio [1] SEQUENCE OF LogotypeAudio OPTIONAL }
LogotypeImage ::= SEQUENCE {
imageDetails LogotypeDetails,
imageInfo LogotypeImageInfo OPTIONAL }
LogotypeAudio ::= SEQUENCE {
audioDetails LogotypeDetails,
audioInfo LogotypeAudioInfo OPTIONAL }
LogotypeDetails ::= SEQUENCE {
mediaType IA5String, -- Media type name and optional
-- parameters
logotypeHash SEQUENCE SIZE (1..MAX) OF HashAlgAndValue,
logotypeURI SEQUENCE SIZE (1..MAX) OF IA5String }
LogotypeImageInfo ::= SEQUENCE {
type [0] LogotypeImageType DEFAULT color,
fileSize INTEGER, -- In octets, 0=unspecified
xSize INTEGER, -- Horizontal size in pixels
ySize INTEGER, -- Vertical size in pixels
resolution LogotypeImageResolution OPTIONAL,
language [4] IA5String OPTIONAL } -- RFC 5646 Language Tag
LogotypeImageType ::= INTEGER { grayScale(0), color(1) }
LogotypeImageResolution ::= CHOICE {
numBits [1] INTEGER, -- Resolution in bits per pixel
tableSize [2] INTEGER } -- Number of colors or grey tones
LogotypeAudioInfo ::= SEQUENCE {
fileSize INTEGER, -- In octets, 0=unspecified
playTime INTEGER, -- In milliseconds, 0=unspecified
channels INTEGER, -- 0=unspecified,
-- 1=mono, 2=stereo, 4=quad
sampleRate [3] INTEGER OPTIONAL, -- Samples per second
language [4] IA5String OPTIONAL } -- RFC 5646 Language Tag
OtherLogotypeInfo ::= SEQUENCE {
logotypeType OBJECT IDENTIFIER,
info LogotypeInfo }
LogotypeReference ::= SEQUENCE {
refStructHash SEQUENCE SIZE (1..MAX) OF HashAlgAndValue,
refStructURI SEQUENCE SIZE (1..MAX) OF IA5String }
-- Places to get the same LogotypeData
-- image or audio object
HashAlgAndValue ::= SEQUENCE {
hashAlg AlgorithmIdentifier,
hashValue OCTET STRING }
When you're using indirect addressing, the URI (refStructURI) pointing to the external data structure MUST point to a resource that contains the DER-encoded data with the syntax LogotypeData π¦.
At least one of the optional elements in the LogotypeExtn structure MUST be present π. When using direct addressing, at least one of the optional elements in the LogotypeData structure MUST be present β .
The LogotypeReference and LogotypeDetails structures explicitly identify one or more one-way hash functions used to authenticate referenced image or audio objects π. Certification Authorities (CAs) MUST include a hash value for each referenced object, calculated on the whole object. CAs MUST use the one-way hash function that is associated with the certificate signature to compute one hash value, and CAs MAY include other hash values. Clients MUST compute a one-way hash value using one of the identified functions, and clients MUST discard the logotype data if the computed hash value does not match the hash value in the certificate extension π.
A media type specifies the format of the image or audio object containing the logotype data π΅. The mediaType field MUST contain a string that is constructed according to the ABNF [RFC5234] rule for media-type provided in Section 8.3.1 of [RFC9110]. Media types MAY include parameters. To keep the mediaType field as small as possible, optional whitespace SHOULD NOT be included βοΈ.
Image format requirements are specified in Section 7, and audio format requirements are specified in Section 8 πΌοΈπ.
When language is specified, the language tag MUST use the syntax in [RFC5646] π.
The following logotype types are defined in this specification π:
- community logotype: If communityLogos is present, the logotypes MUST represent one or more communities with which the certificate issuer is affiliated. The communityLogos MAY be present in an end entity certificate, a CA certificate, or an attribute certificate. The communityLogos contains a sequence of community logotypes, each representing a different community. If more than one community logotype is present, they MUST be placed in order of preferred appearance. Some clients MAY choose to display a subset of the present community logos, so the placement within the sequence aids the client selection π¦. The most preferred logotype MUST be first in the sequence, and the least preferred logotype MUST be last in the sequence π.
- issuer organization logotype: If issuerLogo is present, the logotype MUST represent the issuer's organization. The logotype MUST be consistent with, and require the presence of, an organization name stored in the organization attribute in the issuer field (for either a public key certificate or attribute certificate). The issuerLogo MAY be present in an end entity certificate, a CA certificate, or an attribute certificate π’.
- subject organization logotype: If subjectLogo is present, the logotype MUST represent the subject's organization. The logotype MUST be consistent with, and require the presence of, an organization name stored in the organization attribute in the subject field (for either a public key certificate or attribute certificate). The subjectLogo MAY be present in an end entity certificate, a CA certificate, or an attribute certificate πΌ.
The relationship between the subject organization and the subject organization logotype, and the relationship between the issuer and either the issuer organization logotype or the community logotype, are relationships asserted by the issuer. The policies and practices the issuer uses to check subject organization logotypes or claims about its issuer and community logotypes are outside the scope of this document π€·ββοΈ.
4.2. Conventions for LogotypeImageInfo π
When the optional LogotypeImageInfo is included with a logotype image, the parameters MUST be used with the following semantics and restrictions π.
The xSize and ySize fields represent the recommended display size for the logotype image. When a value of 0 (zero) is present, no recommended display size is specified. When non-zero values are present and these values differ from the corresponding size values in the referenced image object, then the referenced image SHOULD be scaled to fit within the size parameters of LogotypeImageInfo while preserving the x and y ratio. Dithering may produce a more appropriate image than linear scaling πβ¨.
The resolution field is redundant for all logotype image formats listed in Section 7. The optional resolution field SHOULD be omitted when the image format already contains this information π .
4.3. Embedded Images β¨
okay so if the logotype image comes through direct addressing, the image MAY be stored right inside the logotype certificate extension using the "data" scheme [RFC2397] π¦. Here's the syntax, which bakes in Errata ID 2045 and uses modern ABNF [RFC5234] π :
dataurl = "data:" [ media-type ] [ ";base64" ] "," data
data = *(reserved / unreserved / escaped)
reserved = ";" / "/" / "?" / ":" / "@" / "&" / "=" / "+" /
"$" / ","
unreserved = alphanum / mark
alphanum = ALPHA / DIGIT
mark = "-" / "_" / "." / "!" / "~" / "*" / "'" / "(" / ")"
escaped = "%" hex hex
hex = HEXDIG / "a" / "b" / "c" / "d" / "e" / "f"
so media-type comes from Section 8.3.1 of [RFC9110], and ALPHA, DIGIT, and HEXDIG come from Appendix B.1 of [RFC5234] π§.
when you stuff the image data into the extension with the "data" URI scheme, these conventions apply:
- The value of mediaType in LogotypeDetails MUST be identical to the media type value in the "data" URL. π
- The hash of the image MUST be included in logotypeHash and MUST be calculated over the same data as it would have been if the image had been referenced through a link to an external resource. π₯
NOTE: since the "data" URI scheme gets handled as a data source rather than a URL, the image data usually isn't held to whatever URL length limit settings would normally apply to URLs in general. π NOTE: implementers, be careful about how big your images are! The certificate has to stay small enough that it can still do its job, or it won't be usable the way it's meant to be π.
4.4. Other Logotypes π
Logotypes identified by otherLogos (as defined in Section 4.1) can be used to jazz up the display of logotypes and marks that represent partners, products, services, or any other characteristic tied to the certificate or its intended application environment, especially when the standard logotype types aren't enough π.
the conditions and contexts for using these logotypes are up to the local client application, so it gets the final say π.
Three other logotype types are defined in the following subsections β¨.
4.4.1. Loyalty Logotype
When a loyalty logotype appears in otherLogos, it MUST be identified by the id-logo-loyalty object identifier. π¦
id-logo OBJECT IDENTIFIER ::= { id-pkix 20 }
id-logo-loyalty OBJECT IDENTIFIER ::= { id-logo 1 }
a loyalty logotype, if present, MUST contain a logotype associated with a loyalty program related to the certificate or its use. The relation between the certificate and the identified loyalty program is beyond the scope of this document π. The logotype certificate extension MAY contain more than one loyalty logotype π .
if more than one loyalty logotype is present, they MUST be placed in order of preferred appearance. Some clients MAY choose to display only a subset of the loyalty logotype data, so the placement in the sequence helps the client pick. The most preferred loyalty logotype data MUST be first in the sequence, and the least preferred loyalty logotype data MUST be last in the sequence π.
4.4.2. Certificate Background Logotype
When a certificate background logotype appears in otherLogos, it MUST be identified by the id-logo-background object identifier. πΈ
id-logo-background OBJECT IDENTIFIER ::= { id-logo 2 }
the certificate background logotype, if present, MUST contain a graphical image meant to be the background for the certificate and/or a general audio sequence for the certificate. The background image MUST let black text be clearly read when it's placed on top of the background image π€. The logotype certificate extension MUST NOT contain more than one certificate background logotype π«.
4.4.3. Certificate Image Logotype
When a certificate image logotype appears in otherLogos, it MUST be identified by the id-logo-certImage object identifier. π§
id-logo-certImage OBJECT IDENTIFIER ::= { id-logo 3 }
the certificate image logotype, if present, helps humans understand a certificate by giving meaningful visual info to the user interface (UI) π. The logotype certificate extension MUST NOT contain more than one certificate image logotype π«.
typical moments when a human needs to look at the visual version of a certificate are:
- A person sets up a secured channel with an authenticated service. The person needs to figure out who the service is based on the authenticated credentials. π
- A person checks the signature on critical info, like signed executable code, and needs to figure out who the signer is based on the signer's certificate. π
- A person has to pick the right certificate to use when authenticating to a service or identity management infrastructure. The person needs to see the available certificates so they can tell them apart while choosing π―.
showing certificate info to humans is tricky, because critical identity attributes don't have well-defined semantics. Unless the application has out-of-band knowledge about a particular certificate, it won't know the exact nature of the data stored in common identification attributes, like serialNumber, organizationName, country, and so on π. So the application can display the actual data, but it has to figure out how to label that data in the UI and tell the human what the data really means (its semantics). It's also hard for the application to decide which identification attributes matter enough to show, and how to put them in a logical order π΅βπ«.
when present, the certificate image MUST be a complete visual representation of the certificate. That means the display of this image shows all the information about the certificate that the issuer decides is relevant for a typical human user to see within the typical intended use of the certificate, giving adequate information about at least these three aspects of the certificate π«Ά:
- certificate context
- certificate issuer
- certificate subject
certificate context info is visual marks and/or text that help the typical user understand the typical usage and/or purpose of the certificate π.
it's up to the issuer to decide what info (text, graphical symbols, and elements) makes up a complete visual representation of the certificate. Still, the visual representation of the certificate subject and certificate issuer information MUST have the same meaning as the textual representation of that information in the certificate itself π.
Applications with a Graphical User Interface (GUI) for the certificate user MAY present a certificate image as the only visual representation of a certificate. However, the certificate user SHOULD be able to easily get the details of the certificate content π.
5. Type of Certificates π
Logotypes MAY be included in public key certificates and attribute certificates, at the discretion of the certificate issuer. However, the relying party MUST NOT use the logotypes as part of certification path validation or automated trust decisions π«. The sole purpose of logotypes is to enhance the display of a particular certificate, no matter where it sits in a certification path π .
6. Use in Clients π»
All PKI implementations need relying party software to have some way to figure out whether a trusted CA issued a particular certificate π. This matters for certification path validation, including consistent policy and name checking π§.
after a certification path is successfully validated, the replying party trusts the info the CA puts in the certificate, including any certificate extensions π€. The client software can choose to use that info, or it can ignore it π. If the client can't support a provided logotype, the client MUST NOT report an error. Instead, the client MUST behave as though no logotype certificate extension was included in the certificate π« . Current standards don't offer any mechanism for cross-certifying CAs to stop subordinate CAs from including private extensions (see Section 9) π΅οΈββοΈ.
so if relying party software accepts a CA, it should be ready to (no questions asked) display the associated logotypes to its human user, as long as it's set up to do so β¨. The info about logotypes is there so the replying party software can pick the one that best meets the human user's needs π. That choice depends on the abilities of the human user and on what the platform the replaying party software runs on can do π₯οΈ. If none of the provided logotypes meets the human user's needs or matches the platform's capabilities, the logotypes can be ignored π₯².
A client MAY, subject to local policy, choose to display none, one, or any number of the logotypes in the logotype certificate extension ποΈ. A lot of the time, a client is used somewhere with a good network connection and also somewhere with little or no connectivity. For example, a laptop can be docked to a high-speed LAN connection, or it can be totally disconnected from the network π»π. Because of this, the client MUST include the ability to disable the fetching of logotypes. Even so, locally cached logotypes can still be displayed when the user turns off fetching of additional logotypes ποΈ.
A client MAY, subject to local policy, choose any combination of audio and image presentation for each logotype. That means the client MAY display an image with or without playing a sound, and it MAY play a sound with or without displaying an image πΆ. A client MUST NOT play more than one logotype audio sequence at the same time π ββοΈ.
The logotype is meant to be displayed alongside the other identity info contained in the certificate. The logotype is not a replacement for that identity info π«Ά.
Be careful when designing replying party software so it provides an appropriate context for logotype info. This is especially tricky with audio logotypes π§. It's important that the human user can recognize the context of the logotype, even when other audio streams are playing π’.
If the relying party software can't successfully validate a particular certificate, it MUST NOT display any logotype data associated with that certificate ππ.
7. Image Formats π
okay so bestie, animated images SHOULD NOT be used π ββοΈ keep it still, babe β¨
this table is giving the lineup of common image formats, their media types, and what support is required for each one. It also lists the file name extensions people usually use. Implementations MAY support other image formats π
+========+==============+===========+============+============+
| Format | Media Type | Extension | References | Implement? |
+========+==============+===========+============+============+
| JPEG | image/jpeg | .jpg | [JPEG] | MUST |
| | | .jpeg | [RFC2046] | support |
+--------+--------------+-----------+------------+------------+
| GIF | image/gif | .gif | [GIF] | MUST |
| | | | [RFC2046] | support |
+--------+--------------+-----------+------------+------------+
| SVG | image/ | .svg | [SVGT] | SHOULD |
| | svg+xml | | [SVGR] | support |
+--------+--------------+-----------+------------+------------+
| SVG + | image/ | .svgz | [SVGT] | MUST |
| GZIP | svg+xml+gzip | .svg.gz | [SVGZR] | support |
+--------+--------------+-----------+------------+------------+
| PNG | image/png | .png | [ISO15948] | SHOULD |
| | | | [PNGR] | support |
+--------+--------------+-----------+------------+------------+
| PDF | application/ | .pdf | [ISO32000] | MAY |
| | pdf | | [ISO19005] | support |
| | | | [RFC8118] | |
+--------+--------------+-----------+------------+------------+
Table 1: Image Formats
| NOTE: The image/svg+xml-compressed media type is widely
| implemented, but it has not yet been registered with IANA.
When a Scalable Vector Graphics (SVG) image is used, whether it's compressed or not, the SVG Tiny profile [SVGT] MUST be followed, with these additional restrictions: π§
- The SVG image MUST NOT contain any Internationalized Resource Identifier (IRI) references to information stored outside of the SVG image of type B, C, or D, according to Section 14.1.4 of [SVGT].
- The SVG image MUST NOT contain any script element, according to Section 15.2 of [SVGT].
- The XML structure in the SVG file MUST use linefeed (0x0A) as the end-of-line (EOL) character when calculating a hash over the SVG image.
when a GZIP-compressed SVG image is fetched with HTTP, the client will receive a response that includes these headers:
Content-Type: image/svg+xml
Content-Encoding: gzip
In this case, the octet stream of type image/svg+xml is compressed with GZIP [RFC1952], as specified in [SVGR] πΈ
When an uncompressed SVG image is fetched with HTTP, the client will receive a response with the same Content-Type header but no Content-Encoding header.
Whether the SVG image is GZIP-compressed or uncompressed, the hash value for the SVG image is calculated over the uncompressed SVG content with canonicalized EOL characters, as specified above. the consistency is iconic π
When an SVG image is embedded in the certificate extension using the data URL scheme, the SVG image data MUST be provided in GZIP-compressed form, and the XML structure, prior to compression, SHOULD use linefeed (0x0A) as the end-of-line (EOL) character.
When a bitmap image is used, the PNG [ISO15948] format SHOULD be used π¦
According to [ISO32000], when a Portable Document Format (PDF) document is used, it MUST also be formatted according to the profile PDF/A [ISO19005] π
8. Audio Formats π§
Implementations that support audio MUST support the MP3 audio format [MP3] with a media type of audio/mpeg [RFC3003]. Implementations SHOULD support text-based audio data with a media type of text/plain;charset=UTF-8. Implementations MAY support other audio formats π
Text-based audio data using the media type of text/plain;charset=UTF-8 is intended to be used by text-to-speech software. When this audio type is used, the following requirements apply:
LogotypeAudioInfoMUST be present and specify the language of the text.- The
fileSize,playTime, andchannelselements ofLogotypeAudioInfoMUST have the value of 0. - The
sampleRateelement ofLogotypeAudioInfoMUST be absent.
so the robot voice gets the basics and nothing extra π€β¨
9. Security Considerations π
Implementations that simultaneously display multiple logotype types (subject organization, issuer organization, community, or other) MUST ensure that there is no ambiguity as to the binding between the image and the type of logotype that the image represents. "Logotype type" is defined in Section 1.1, and it refers to the type of entity or affiliation represented by the logotype, not the of binary format of the image or audio. π
Logotypes are very difficult to securely and accurately define. Names are also difficult in this regard, but logotypes are even worse. It is quite difficult to specify what is, and what is not, a legitimate logotype of an organization. There is an entire legal structure around this issue, and it will not be repeated here. However, issuers should be aware of the implications of including images associated with a trademark or servicemark before doing so. As logotypes can be difficult (and sometimes expensive) to verify, the possibility of errors related to assigning wrong logotypes to organizations is increased π
This is not a new issue for electronic identification instruments. It is already dealt with in a number of similar situations in the physical world, including physical employee identification cards. In addition, there are situations where identification of logotypes is rather simple and straightforward, such as logotypes for well-known industries and institutes. These issues should not stop those service providers who want to issue logotypes from doing so, where relevant π
It is impossible to prevent fraudulent creation of certificates by dishonest or badly performing issuers, containing names and logotypes that the issuer has no claim to or has failed to check correctly. Such certificates could be created in an attempt to socially engineer a user into accepting a certificate. The premise used for the logotype work is thus that logotype graphics in a certificate are trusted only if the certificate is successfully validated within a valid path. It is thus imperative that the representation of any certificate that fails to validate is not enhanced in any way by using the logotype data.
this is the big one bestie, a certificate that fails validation must never get a logotype glow-up π
This underlines the necessity for CAs to provide reliable services and the relying party's responsibility and need to carefully select which CAs are trusted to provide public key certificates. π«Ά
This also underlines the general necessity for relying parties to use up-to-date software libraries to render or dereference data from external sources, including logotype data in certificates, to minimize risks related to processing potentially malicious data before it has been adequately verified and validated. Implementers should review the guidance in Section 7 of [RFC3986] π₯
Referenced image objects are hashed in order to bind the image to the signature of the certificate. Some image types, such as SVG, allow part of the image to be collected from an external source by incorporating a reference to an external file that contains the image. If this feature were used within a logotype image, the hash of the image would only cover the URI reference to the external image file but not the referenced image data. Clients SHOULD verify that SVG images meet all requirements listed in Section 7 and reject images that contain references to external data. the main character move is checking the receipts π§Ύ
CAs issuing certificates with embedded logotype images should be cautious when accepting graphics from the certificate requester for inclusion in the certificate if the hash algorithm used to sign the certificate is vulnerable to collision attacks, as described in [RFC6151]. In such a case, the accepted image may contain data that could help an attacker to obtain colliding certificates with identical certificate signatures. π
Certification paths may also impose name constraints that are systematically checked during certification path processing, which, in theory, may be circumvented by logotypes.
Certificate path processing, as defined in [RFC5280], does not constrain the inclusion of logotype data in certificates. A parent CA can constrain certification path validation such that subordinate CAs cannot issue valid certificates to end entities outside a limited name space or outside specific certificate policies. A malicious CA can comply with these name and policy requirements and still include inappropriate logotypes in the certificates that it issues. These certificates will pass the certification path validation algorithm, which means the client will trust the logotypes in the certificates. Since there is no technical mechanism to prevent or control subordinate CAs from including the logotype certificate extension or its contents, where appropriate, a parent CA could employ a legal agreement to impose a suitable restriction on the subordinate CA. This situation is not unique to the logotype certificate extension. π
When a relying party fetches remote logotype data, a mismatch between the media type provided in the mediaType field of the LogotypeDetails and the Content-Type HTTP header of the retrieved object MUST be treated as a failure, and the fetched logotype data should not be presented to the user. However, if more than one location for the remote logotype data is provided in the certificate extension, the relying party MAY try to fetch the remote logotype data from an alternate location to resolve the failure. π§ββοΈ
When a subscriber requests the inclusion of remote logotype data in a certificate, the CA cannot be sure that any logotype data will be available at the provided URI for the entire validity period of the certificate. To mitigate this concern, the CA may provide the logotype data from a server under its control, rather than a subscriber-controlled server. πΈ
The controls available to a parent CA to protect itself from rogue subordinate CAs are non-technical. They include:
- Contractual agreements of suitable behavior, including terms of liability in case of material breach.
- Control mechanisms and procedures to monitor and follow the behavior of subordinate CAs, including Certificate Transparency [RFC9162].
- Use of certificate policies to declare an assurance level of logotype data, as well as to guide applications on how to treat and display logotypes.
- Use of revocation functions to revoke any misbehaving CA.
There is not a simple, straightforward, and absolute technical solution. Rather, involved parties must settle some aspects of PKI outside the scope of technical controls. As such, issuers need to clearly identify and communicate the associated risks. that's the whole tea, no cap ππ
β¨ okay bestie, let's get into it π
10. Privacy Considerations π¦
Okay so, certificates are basically public objects, right? πΈ That means you should lowkey avoid putting privacy-sensitive stuff in them. The more info you cram into a certificate, the higher the chance it spills something private. So logotype data needs to be thought about in that context, periodt π
Logotype data might get fetched from a server when it's needed. And if someone is watching network activity, they can figure out which clients are using certificates that contain particular logotype data π Clients are expected to cache logotype data locally, so traffic to the server won't show up every single time the certificate gets used. But when logotype data isn't cached, network activity might reveal how often a certificate is used π Even with caching, whether you use direct or indirect addressing, traffic monitoring could show when logotype data gets fetched for the very first time.
Implementations MAY encrypt fetches of logotype data using HTTPS and pad the data to a common size, so there's less visibility into what's being fetched π«Ά Servers MAY do the same thing: encrypt with HTTPS and pad to a few common sizes to reduce visibility into what's being returned π
Same vibe on the server side π When a client fetches logotype data, the server operator can work out which clients are using certificates with particular logotype data. Again, caching means the logotype data doesn't need to be fetched every time, and no caching would reveal usage frequency. Even when implementations do cache, whether direct or indirect addressing is used, the server operator could still see when logotype data gets fetched for the first time.
Also, an encrypted DNS mechanism like DNS over TLS (DoT) [RFC7858] or DNS over HTTPS (DoH) [RFC9230] hides the name resolution traffic π§ That's usually the first step in fetching remote logotype objects, so it's a big deal.
When the "data" URI scheme is used with direct addressing, there's no network traffic to fetch logotype data at all π That dodges all the network and server observations we just talked about. The tradeoff is that the certificate will be bigger than one that contains a URL. Because of that improved privacy posture, the "data" URI scheme with direct addressing will be the only one that some CAs support π Privacy-aware certificate subscribers MAY wish to insist that logotype data is embedded in the certificate with the "data" URI scheme with direct addressing π
If a relying party caches logotype data, the cache index should include the hash values of the associated logotype data π The goal is to fetch logotype data only once, even when several URIs reference it. The index should include hash values for all supported hash algorithms. The cached data should include the media type along with the logotype data. When multiple alternatives are offered in the LogotypeExtn certificate extension, implementations should give preference to logotype data that's already in the cache β¨
When the "data" URI scheme is used, the relying party MAY add the embedded logotype data to the local cache. That could save a fetch later if another certificate references the same logotype data by URL π
When fetching remote logotype data, relying parties should use the most privacy-preserving options available, to minimise the chances of servers "fingerprinting" clients π΅οΈββοΈ For example, avoid cookies, ETags, and client certificates π ββοΈ
When a relying party sees a new certificate and there's no network traffic to fetch logotype data, that might mean a certificate referencing the same logotype data was already processed and cached π§
TLS 1.3 [RFC8446] can encrypt the server's certificate in the TLS handshake, which helps hide the server's identity from anyone watching the network π But if the server's certificate includes remote logotype data, the client fetching that data might reveal the server identity that was otherwise protected π¬
11. IANA Considerations π
For the new ASN.1 module in Appendix A.2, IANA has assigned the following OID in the "SMI Security for PKIX Module Identifier" registry (1.3.6.1.5.5.7.0):
+=========+======================+============+
| Decimal | Description | References |
+=========+======================+============+
| 107 | id-mod-logotype-2022 | RFC 9399 |
+---------+----------------------+------------+
Table 2
IANA has updated the entries in the "Structure of Management Information (SMI) Numbers" registry that referred to [RFC3709] or [RFC6170] to refer to this document. These entries are noted in the tables below.
From the "SMI Security for PKIX Module Identifier" registry (1.3.6.1.5.5.7.0):
+=========+===========================+============+
| Decimal | Description | References |
+=========+===========================+============+
| 22 | id-mod-logotype | RFC 9399 |
+---------+---------------------------+------------+
| 68 | id-mod-logotype-certimage | RFC 9399 |
+---------+---------------------------+------------+
Table 3
From the "SMI Security for PKIX Certificate Extension" registry (1.3.6.1.5.5.7.1):
+=========+================+============+
| Decimal | Description | References |
+=========+================+============+
| 12 | id-pe-logotype | RFC 9399 |
+---------+----------------+------------+
Table 4
From the "SMI Security for PKIX Other Logotype Identifiers" registry (1.3.6.1.5.5.7.20):
+=========+====================+============+
| Decimal | Description | References |
+=========+====================+============+
| 1 | id-logo-loyalty | RFC 9399 |
+---------+--------------------+------------+
| 2 | id-logo-background | RFC 9399 |
+---------+--------------------+------------+
| 3 | id-logo-certImage | RFC 9399 |
+---------+--------------------+------------+
Table 5
12. References π
12.1. Normative References
[GIF] CompuServe Incorporated, "Graphics Interchange Format",
Version 89a, July 1990,
<https://www.w3.org/Graphics/GIF/spec-gif89a.txt>.
[ISO15948] ISO/IEC, "Information technology -- Computer graphics and
image processing -- Portable Network Graphics (PNG):
Functional specification", ISO/IEC 15948:2004, March 2004.
[JPEG] ITU-T, "Information technology -- Digital compression and
coding of continuous-tone still images: JPEG File
Interchange Format (JFIF)", ITU-T Recommendation T.871,
ISO/IEC 10918-5:2013, May 2013.
[MP3] ISO/IEC, "Information technology -- Generic coding of
moving pictures and associated audio information -- Part
3: Audio", ISO/IEC 13818-3:1998, April 1998.
[NEW-ASN1] ITU-T, "Information technology -- Abstract Syntax Notation
One (ASN.1): Specification of basic notation", ITU-T
Recommendation X.680, ISO/IEC 8824-1:2021, February 2021,
<https://www.itu.int/rec/T-REC-X.680>.
[RFC1952] Deutsch, P., "GZIP file format specification version 4.3",
RFC 1952, DOI 10.17487/RFC1952, May 1996,
<https://www.rfc-editor.org/info/rfc1952>.
[RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part Two: Media Types", RFC 2046,
DOI 10.17487/RFC2046, November 1996,
<https://www.rfc-editor.org/info/rfc2046>.
[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>.
[RFC2397] Masinter, L., "The "data" URL scheme", RFC 2397,
DOI 10.17487/RFC2397, August 1998,
<https://www.rfc-editor.org/info/rfc2397>.
[RFC3003] Nilsson, M., "The audio/mpeg Media Type", RFC 3003,
DOI 10.17487/RFC3003, November 2000,
<https://www.rfc-editor.org/info/rfc3003>.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66,
RFC 3986, DOI 10.17487/RFC3986, January 2005,
<https://www.rfc-editor.org/info/rfc3986>.
[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>.
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
Housley, R., and W. Polk, "Internet X.509 Public Key
Infrastructure Certificate and Certificate Revocation List
(CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008,
<https://www.rfc-editor.org/info/rfc5280>.
[RFC5646] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying
Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646,
September 2009, <https://www.rfc-editor.org/info/rfc5646>.
[RFC5755] Farrell, S., Housley, R., and S. Turner, "An Internet
Attribute Certificate Profile for Authorization",
RFC 5755, DOI 10.17487/RFC5755, January 2010,
<https://www.rfc-editor.org/info/rfc5755>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>.
[RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
Ed., "HTTP Semantics", STD 97, RFC 9110,
DOI 10.17487/RFC9110, June 2022,
<https://www.rfc-editor.org/info/rfc9110>.
[SVGT] World Wide Web Consortium, "Scalable Vector Graphics (SVG)
Tiny 1.2 Specification", W3C REC-SVGTiny12-20081222,
December 2008,
<http://www.w3.org/TR/2008/REC-SVGTiny12-20081222/>.
12.2. Informative References π
- [ISO19005] ISO, "Document management -- Electronic document file format for long-term preservation -- Part 1: Use of PDF 1.4 (PDF/A-1)", ISO 19005-1:2005, October 2005.
- [ISO32000] ISO, "Document management -- Portable document format -- Part 1: PDF 1.7", ISO 32000-1:2008, July 2008.
- [OLD-ASN1] CCITT, "Specification of Abstract Syntax Notation One (ASN.1)", CCITT Recommendation X.208, November 1988,
https://www.itu.int/rec/T-REC-X.208/en. - [PNGR] World Wide Web Consortium, "Media Type Registration for image/png",
https://www.iana.org/assignments/media-types/image/png. - [RFC3709] Santesson, S., Housley, R., and T. Freeman, "Internet X.509 Public Key Infrastructure: Logotypes in X.509 Certificates", RFC 3709, DOI 10.17487/RFC3709, February 2004,
https://www.rfc-editor.org/info/rfc3709. - [RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, DOI 10.17487/RFC5912, June 2010,
https://www.rfc-editor.org/info/rfc5912. - [RFC6151] Turner, S. and L. Chen, "Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms", RFC 6151, DOI 10.17487/RFC6151, March 2011,
https://www.rfc-editor.org/info/rfc6151. - [RFC6170] Santesson, S., Housley, R., Bajaj, S., and L. Rosenthol, "Internet X.509 Public Key Infrastructure -- Certificate Image", RFC 6170, DOI 10.17487/RFC6170, May 2011,
https://www.rfc-editor.org/info/rfc6170. - [RFC6268] Schaad, J. and S. Turner, "Additional New ASN.1 Modules for the Cryptographic Message Syntax (CMS) and the Public Key Infrastructure Using X.509 (PKIX)", RFC 6268, DOI 10.17487/RFC6268, July 2011,
https://www.rfc-editor.org/info/rfc6268. - [RFC7858] Hu, Z., Zhu, L., Heidemann, J., Mankin, A., Wessels, D., and P. Hoffman, "Specification for DNS over Transport Layer Security (TLS)", RFC 7858, DOI 10.17487/RFC7858, May 2016,
https://www.rfc-editor.org/info/rfc7858. - [RFC8118] Hardy, M., Masinter, L., Markovic, D., Johnson, D., and M. Bailey, "The application/pdf Media Type", RFC 8118, DOI 10.17487/RFC8118, March 2017,
https://www.rfc-editor.org/info/rfc8118. - [RFC9162] Laurie, B., Messeri, E., and R. Stradling, "Certificate Transparency Version 2.0", RFC 9162, DOI 10.17487/RFC9162, December 2021,
https://www.rfc-editor.org/info/rfc9162. - [RFC9216] Gillmor, D. K., Ed., "S/MIME Example Keys and Certificates", RFC 9216, DOI 10.17487/RFC9216, April 2022,
https://www.rfc-editor.org/info/rfc9216. - [RFC9230] Kinnear, E., McManus, P., Pauly, T., Verma, T., and C.A. Wood, "Oblivious DNS over HTTPS", RFC 9230, DOI 10.17487/RFC9230, June 2022,
https://www.rfc-editor.org/info/rfc9230. - [SVGR] World Wide Web Consortium, "Media Type Registration for image/svg+xml",
https://www.iana.org/assignments/media-types/image/svg+xml. - [SVGZR] "A separate MIME type for svgz files is needed",
https://github.com/w3c/svgwg/issues/701.
Appendix A. ASN.1 Modules π§
A.1. ASN.1 Modules with 1988 Syntax
Okay so this appendix is hosting two ASN.1 modules, and both are written in the old syntax [OLD-ASN1]. π
The first module is the one that gives us the syntax for the logotype certificate extension. The only thing that changed compared to [RFC3709] is the comments, and the IMPORTS now pull from [RFC5280]. π
The second module is where the certificate image object identifier lives. It's totally unchanged from [RFC6170], so no drama there. π¦
<CODE BEGINS>
LogotypeCertExtn
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0)
id-mod-logotype(22) }
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
IMPORTS
AlgorithmIdentifier FROM PKIX1Explicit88 -- RFC 5280
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0)
id-pkix1-explicit(18) };
-- Logotype Certificate Extension OID
id-pe-logotype OBJECT IDENTIFIER ::=
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-pe(1) 12 }
-- Logotype Certificate Extension Syntax
LogotypeExtn ::= SEQUENCE {
communityLogos [0] EXPLICIT SEQUENCE OF LogotypeInfo OPTIONAL,
issuerLogo [1] EXPLICIT LogotypeInfo OPTIONAL,
subjectLogo [2] EXPLICIT LogotypeInfo OPTIONAL,
otherLogos [3] EXPLICIT SEQUENCE OF OtherLogotypeInfo
OPTIONAL }
-- Note: At least one of the OPTIONAL components MUST be present
LogotypeInfo ::= CHOICE {
direct [0] LogotypeData,
indirect [1] LogotypeReference }
LogotypeData ::= SEQUENCE {
image SEQUENCE OF LogotypeImage OPTIONAL,
audio [1] SEQUENCE OF LogotypeAudio OPTIONAL }
-- Note: At least one of the OPTIONAL components MUST be present
LogotypeImage ::= SEQUENCE {
imageDetails LogotypeDetails,
imageInfo LogotypeImageInfo OPTIONAL }
LogotypeAudio ::= SEQUENCE {
audioDetails LogotypeDetails,
audioInfo LogotypeAudioInfo OPTIONAL }
LogotypeDetails ::= SEQUENCE {
mediaType IA5String, -- Media type name and optional
-- parameters
logotypeHash SEQUENCE SIZE (1..MAX) OF HashAlgAndValue,
logotypeURI SEQUENCE SIZE (1..MAX) OF IA5String }
LogotypeImageInfo ::= SEQUENCE {
type [0] LogotypeImageType DEFAULT color,
fileSize INTEGER, -- In octets, 0=unspecified
xSize INTEGER, -- Horizontal size in pixels
ySize INTEGER, -- Vertical size in pixels
resolution LogotypeImageResolution OPTIONAL,
language [4] IA5String OPTIONAL } -- RFC 5646 Language Tag
LogotypeImageType ::= INTEGER { grayScale(0), color(1) }
LogotypeImageResolution ::= CHOICE {
numBits [1] INTEGER, -- Resolution in bits per pixel
tableSize [2] INTEGER } -- Number of colors or grey tones
LogotypeAudioInfo ::= SEQUENCE {
fileSize INTEGER, -- In octets, 0=unspecified
playTime INTEGER, -- In milliseconds, 0=unspecified
channels INTEGER, -- 0=unspecified,
-- 1=mono, 2=stereo, 4=quad
sampleRate [3] INTEGER OPTIONAL, -- Samples per second
language [4] IA5String OPTIONAL } -- RFC 5646 Language Tag
OtherLogotypeInfo ::= SEQUENCE {
logotypeType OBJECT IDENTIFIER,
info LogotypeInfo }
LogotypeReference ::= SEQUENCE {
refStructHash SEQUENCE SIZE (1..MAX) OF HashAlgAndValue,
refStructURI SEQUENCE SIZE (1..MAX) OF IA5String }
-- Places to get the same LogotypeData
-- image or audio object
-- Note: The referenced LogotypeData binary file contains a
-- DER-encoded LogotypeData type
HashAlgAndValue ::= SEQUENCE {
hashAlg AlgorithmIdentifier,
hashValue OCTET STRING }
-- Other logotype type OIDs
id-logo OBJECT IDENTIFIER ::= { iso(1) identified-organization(3)
dod(6) internet(1) security(5) mechanisms(5) pkix(7) 20 }
id-logo-loyalty OBJECT IDENTIFIER ::= { id-logo 1 }
id-logo-background OBJECT IDENTIFIER ::= { id-logo 2 }
END
CERT-IMAGE-MODULE { iso(1) identified-organization(3) dod(6)
internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
id-mod-logotype-certimage(68) }
DEFINITIONS EXPLICIT TAGS ::=
BEGIN
EXPORTS ALL; -- export all items from this module
id-logo-certImage OBJECT IDENTIFIER ::=
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-logo(20) 3 }
END
<CODE ENDS>
A.2. ASN.1 Module with 2002 Syntax β¨
okay so some devs are obsessed with the newest ASN.1 standards π this appendix gives you an ASN.1 module to make that happen π it's written in the syntax from [NEW-ASN1] and follows the conventions from [RFC5912] and [RFC6268] πΈ
this module pulls in the module from [RFC3709] and the module from [RFC6170] π§
ngl [NEW-ASN1] only came out in 2021, but everything this module uses is backward compatible with the spec from 2002 π«Ά
LogotypeCertExtn-2022
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0)
id-mod-logotype-2022(107) }
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
IMPORTS
EXTENSION
FROM PKIX-CommonTypes-2009 -- RFC 5912
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0)
id-mod-pkixCommon-02(57) }
AlgorithmIdentifier{}, DIGEST-ALGORITHM
FROM AlgorithmInformation-2009
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0)
id-mod-algorithmInformation-02(58) } ;
-- Logotype Certificate Extension
ext-logotype EXTENSION ::= {
SYNTAX LogotypeExtn
IDENTIFIED BY id-pe-logotype }
-- Logotype Certificate Extension OID
id-pe-logotype OBJECT IDENTIFIER ::=
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-pe(1) 12 }
-- Logotype Certificate Extension Syntax
LogotypeExtn ::= SEQUENCE {
communityLogos [0] EXPLICIT SEQUENCE OF LogotypeInfo OPTIONAL,
issuerLogo [1] EXPLICIT LogotypeInfo OPTIONAL,
subjectLogo [2] EXPLICIT LogotypeInfo OPTIONAL,
otherLogos [3] EXPLICIT SEQUENCE OF OtherLogotypeInfo
OPTIONAL }
-- At least one of the OPTIONAL components MUST be present
( WITH COMPONENTS { ..., communityLogos PRESENT } |
WITH COMPONENTS { ..., issuerLogo PRESENT } |
WITH COMPONENTS { ..., subjectLogo PRESENT } |
WITH COMPONENTS { ..., otherLogos PRESENT } )
LogotypeInfo ::= CHOICE {
direct [0] LogotypeData,
indirect [1] LogotypeReference }
LogotypeData ::= SEQUENCE {
image SEQUENCE OF LogotypeImage OPTIONAL,
audio [1] SEQUENCE OF LogotypeAudio OPTIONAL }
-- At least one image component MUST be present
( WITH COMPONENTS { ..., image PRESENT } )
LogotypeImage ::= SEQUENCE {
imageDetails LogotypeDetails,
imageInfo LogotypeImageInfo OPTIONAL }
LogotypeAudio ::= SEQUENCE {
audioDetails LogotypeDetails,
audioInfo LogotypeAudioInfo OPTIONAL }
LogotypeDetails ::= SEQUENCE {
mediaType IA5String, -- Media type name and optional
-- parameters
logotypeHash SEQUENCE SIZE (1..MAX) OF HashAlgAndValue,
logotypeURI SEQUENCE SIZE (1..MAX) OF IA5String }
LogotypeImageInfo ::= SEQUENCE {
type [0] LogotypeImageType DEFAULT color,
fileSize INTEGER, -- In octets, 0=unspecified
xSize INTEGER, -- Horizontal size in pixels
ySize INTEGER, -- Vertical size in pixels
resolution LogotypeImageResolution OPTIONAL,
language [4] IA5String OPTIONAL } -- RFC 5646 Language Tag
LogotypeImageType ::= INTEGER { grayScale(0), color(1) }
LogotypeImageResolution ::= CHOICE {
numBits [1] INTEGER, -- Resolution in bits
tableSize [2] INTEGER } -- Number of colors or grey tones
LogotypeAudioInfo ::= SEQUENCE {
fileSize INTEGER, -- In octets, 0=unspecified
playTime INTEGER, -- In milliseconds, 0=unspecified
channels INTEGER, -- 0=unspecified
-- 1=mono, 2=stereo, 4=quad
sampleRate [3] INTEGER OPTIONAL, -- Samples per second
language [4] IA5String OPTIONAL } -- RFC 5646 Language Tag
OtherLogotypeInfo ::= SEQUENCE {
logotypeType OBJECT IDENTIFIER,
info LogotypeInfo }
LogotypeReference ::= SEQUENCE {
refStructHash SEQUENCE SIZE (1..MAX) OF HashAlgAndValue,
refStructURI SEQUENCE SIZE (1..MAX) OF IA5String }
-- Places to get the same LogotypeData
-- image or audio object
-- Note: The referenced LogotypeData binary file contains a
-- DER-encoded LogotypeData type
HashAlgAndValue ::= SEQUENCE {
hashAlg AlgorithmIdentifier{DIGEST-ALGORITHM, {...}},
hashValue OCTET STRING }
-- Other logotype type OIDs
id-logo OBJECT IDENTIFIER ::= { iso(1) identified-organization(3)
dod(6) internet(1) security(5) mechanisms(5) pkix(7) 20 }
id-logo-loyalty OBJECT IDENTIFIER ::= { id-logo 1 }
id-logo-background OBJECT IDENTIFIER ::= { id-logo 2 }
id-logo-certImage OBJECT IDENTIFIER ::= { id-logo 3 }
END
Appendix B. Examples β¨
B.1. Example from RFC 3709
bestie, this example shows a logotype certificate extension with one issuer organization logotype using direct addressing π¦ the logo is image/gif, it's referenced through one URI, and it's hashed with SHA-256 π this one is adapted from [RFC3709] so it uses SHA-256 instead of SHA-1 π₯
the left side has the ASN.1 tag in hex and the length in decimal π§
30 122: SEQUENCE {
06 8: OBJECT IDENTIFIER logotype (1 3 6 1 5 5 7 1 12)
04 110: OCTET STRING, encapsulates {
30 108: SEQUENCE {
A1 106: [1] {
A0 104: [0] {
30 102: SEQUENCE {
30 100: SEQUENCE {
30 98: SEQUENCE {
16 9: IA5String 'image/gif'
30 49: SEQUENCE {
30 47: SEQUENCE {
30 11: SEQUENCE {
06 9: OBJECT IDENTIFIER
: sha-256 (2 16 840 1 101 3 4 2 1)
: }
04 32: OCTET STRING
: 6A 58 50 2E 59 67 F9 DD D1 8A FE BD 0D B1 FE 60
: A5 13 1B DF 0F B2 BE F0 B5 73 45 50 BA 1B BF 19
: }
: }
30 34: SEQUENCE {
16 32: IA5String 'http://logo.example.com/logo.gif'
: }
: }
: }
: }
: }
: }
: }
: }
: }
B.2. Issuer Organization Logotype Example
this one's a sibling of B.1 π
it's another issuer organization logotype with direct addressing, but this time the image is image/jpeg π it's referenced through one URI, and the image is hashed with SHA-256 π
same deal with the columns: ASN.1 tag in hex on the left, length in decimal β
30 124: SEQUENCE {
06 8: OBJECT IDENTIFIER logotype (1 3 6 1 5 5 7 1 12)
04 112: OCTET STRING, encapsulates {
30 110: SEQUENCE {
A1 108: [1] {
A0 106: [0] {
30 104: SEQUENCE {
30 102: SEQUENCE {
30 100: SEQUENCE {
16 10: IA5String 'image/jpeg'
30 49: SEQUENCE {
30 47: SEQUENCE {
30 11: SEQUENCE {
06 9: OBJECT IDENTIFIER
: sha-256 (2 16 840 1 101 3 4 2 1)
: }
04 32: OCTET STRING
: 1E 8F 96 FD D3 50 53 EF C6 1C 9F FC F0 00 2E 53
: B4 9C 24 9A 32 C5 E9 0C 2C 39 39 D3 AD 6D A9 09
: }
: }
30 35: SEQUENCE {
16 33: IA5String 'http://logo.example.com/logo.jpeg'
: }
: }
: }
: }
: }
: }
: }
: }
: }
B.3. Embedded Image Example β¨
okay so this one is giving direct addressing π It shows a logotype certificate extension with one subject organization logotype. The image is image/svg+xml+gzip, and it's embedded right in the extension with a "data:" URI. The image gets hashed with SHA-256 too π Yes, the extension ends up huge, but the upside is reduced latency and improved privacy. Major glow-up energy π
The numbers on the left are the ASN.1 tag (in hex) and the length (in decimal) π§
30 2148: SEQUENCE {
06 8: OBJECT IDENTIFIER logotype (1 3 6 1 5 5 7 1 12)
04 2134: OCTET STRING, encapsulates {
30 2130: SEQUENCE {
A2 2126: [2] {
A0 2122: [0] {
30 2118: SEQUENCE {
30 2114: SEQUENCE {
30 2110: SEQUENCE {
16 18: IA5String 'image/svg+xml+gzip'
30 49: SEQUENCE {
30 47: SEQUENCE {
30 11: SEQUENCE {
06 9: OBJECT IDENTIFIER
: sha-256 (2 16 840 1 101 3 4 2 1)
: }
04 32: OCTET STRING
: C5 AC 94 1A 0A 25 1F B3 16 6F 97 C5 52 40 9B 49
: 9E 7B 92 61 5A B0 A2 6C 19 BF B9 D8 09 C5 D9 E7
: }
: }
30 2035: SEQUENCE {
16 2031: IA5String
: 'data:image/svg+xml+gzip;base64,H4sICIGpy2EAA2xvZ'
: '28tY29weS5zdmcApVbbbhs3EH3nV0y3Lw2Q9fK2JLewHDROU'
: 'BRo2iBxW+RRlTa2UFkypIWV5ut7zlB2UqF9cuLlUktyLmfOz'
: 'PD8xafbtdyPu/1qu5k17sw2sp/mm+V8vd2Ms2azbV5cmPNvX'
: 'v16efXh7WvZ31/L299e/vzTpTRt1/0RLrvu1dUref/7j+Ktd'
: 'Xawsete/9IYaW6m6e77rjscDmeHcLbdXXdX7zpu6t69vmxxo'
: 'n08AREdRDt7tpyWDRRSz7+tgp2b/ew/hEKI5WGoPKyW082s8'
: 'SmeWf13NzVyM66ub6ZZk+xXH+9X4+Hl9tOssWLly3553ARpd'
: '7txP+7uxx/2d+NiejefVttZ8+nNavkBj9yO40RLb8dpvpxP8'
: 'wtzuRvn07iUP/+Wu+20my9GcWfOPpfDbjVN44YLb8dp3Mn7c'
: 'b3aXGNCAICCc+a8+yLo/FpwfLP/uN3dzhqdriH5uwfbnj9a+'
: 'Uz2i/maK66utA+zZ435uFqvZ823R38Q1t32Lw3pZqThd/PpR'
: 'paz5o2LNkocvCzaIm0vrQvSpog359lLy3my0ga+e3Hp+B4In'
: 'jVFPD9awdhnrGEFW30Sl/Pnpvta2QBVxUEVxFbJ2VUFfYC01'
: 'pUs+O4GK84V/k6CHUFyhvhiDVQF8Y5aPDbmnsrXbS74DANjg'
: 'uwgENZLPwjUYVTRJQgEpiLR0ctiWj+Ig8rCvZAArxKExEEWM'
: 'JLqMA1F+ggnsQDXgpQeomJPCVhtCRycNrAWxgAI+g1Qsr6IU'
: 'xlomBswjydYBEgOeVCDoRreBjiFjX2SdSA60BP5DgQM63xoP'
: 'lWHbNq+egAEeAzxyNAdCQz+sDEMOhaGisKJdSlS6gtWWm4M1'
: 'rQwP0egEBIhhFLoXuCJhR4mT5RJBaiLKqqFROUEzYr1idG0g'
: 'ahwCzEnk+AMJLdp0FevQQ6VZ+SKOwGlOIJOh1MVjo0eB6DRA'
: '10SRpSY6il/eFFKAm+MKSIWNFqSo4OFnORfwH5wJHCMNM0ql'
: 'DRlcIwUEkDlgiSBhiEpBgMKOx5FdAYqI3KYewKKkAItTABTk'
: 'p5khI86kgbOgRywEBR0VGcwAjf8t9wqvdUMG6gLAbI0QQ8Cb'
: 'zCTtCSn/DEhCbm++duQaiRG1mQkdWHnminHA+r5wpLvsJbCA'
: 'LUKsDW5NAj43J+AD5vpfamUzJqiRJACmCWwIMhQq4HmYGKai'
: 'iJPmIvpS80UzTtAjdSraApQZogslgFcJHw0y5WoEXDYr/aTq'
: 'fxk2qhcg3z6ETQL+S18llvHOZQvlEOVEVpzqCozE9V6JZhh/'
: 'lCslg7mUFY4AR7IlcApmgV6gz3DCSDe56fQ0SRS7el0NJWO8'
: 'mQ6mkc6ylPpaL7QUZ5IR/M/dEwoJiEp+L6iT4cdSyIp4ljDk'
: 'oaZpQlgMoz0ApahjTiTWbZYu9v+MUqVjY61j2Bxr68bPF3uS'
: '1232qAyAQDMhr4MRyVZq5l2QcuwgY/oTozbgoIKycH+yQxhz'
: 'QsPJQ/ne9OmRKvYH1AeKA/EQRtzrmaYUiHUhpJOW4breSaxZ'
: '/TVc3ZAQJKOagAJiw6pRHVkBMIBa5E+SUMWi0ZNW1Rfn/xQX'
: 'ywHXyMHN5G8WF6gZ2IVjANHMIJQ1lAJQE8MJjZHJiUtQZAWz'
: 'mkisDywTVWSqLkkQG2NNB3wwyaerqRGLNKpvwUOhaQFiYcqv'
: 'iSjvp1n8WnRRzXFs9IXDxiiDd8HU/ROoAGn9+QgTPEVu6HaN'
: '6i0VPuv1SCzwyZeHwBA1EjFYoAk2jJ3OFeJ5Gp1E+3Dlf3Aj'
: '70bbvmag5oyKHunVyGPq6+EnvTua/JUn3iadMHlqUapsK2T8'
: 'SwCBJUF1JnEmhu0ntBthJoQpZqumsBk5mA1hRc0LR5ZFerdj'
: 'ksaCqt3IUWXcXW16vb6xdWyHLTgCaKXWKUKK1kOp9HK5B3EL'
: 'jSdXb0loB5RYtS01L6h9yTPW51Wpqwgosr5I927aw6401+Yf'
: 'wDria4WoQwAAA=='
: }
: }
: }
: }
: }
: }
: }
: }
: }
B.4. Embedded Certificate Image Example π
this one is also direct addressing, but now it's a certificate image logotype π¦ Same deal: image/svg+xml+gzip, embedded with a "data:" URI, hashed with SHA-256. The fun part is that the image is the one from Appendix B of [RFC6170], and the media type is super explicit that it's GZIP compressed [RFC1952]. no cap, that's honest labelling π«Ά
The numbers on the left are the ASN.1 tag (in hex) and the length (in decimal) πΈ
30 2902: SEQUENCE {
06 8: OBJECT IDENTIFIER logotype (1 3 6 1 5 5 7 1 12)
04 2888: OCTET STRING, encapsulates {
30 2884: SEQUENCE {
A3 2880: [3] {
30 2876: SEQUENCE {
30 2872: SEQUENCE {
06 8: OBJECT IDENTIFIER '1 3 6 1 5 5 7 20 3'
A0 2858: [0] {
30 2854: SEQUENCE {
30 2850: SEQUENCE {
30 2846: SEQUENCE {
16 18: IA5String 'image/svg+xml+gzip'
30 49: SEQUENCE {
30 47: SEQUENCE {
30 11: SEQUENCE {
06 9: OBJECT IDENTIFIER
: sha-256 (2 16 840 1 101 3 4 2 1)
: }
04 32: OCTET STRING
: 83 14 B3 26 9B D3 8B 0B 2A E6 6E 42 74 E2 A7 57
: 7A 40 B7 E1 2E 53 42 44 CC 7C AE 14 68 1B 0E B6
: }
: }
30 2771: SEQUENCE {
16 2767: IA5String
: 'data:image/svg+xml+gzip;base64,H4sICLXutU0AA0Nlc'
: 'nRJbWFnZURlbW8uc3ZnANVaW2/bOBZ+n19BqBigwdoS7xK9j'
: 'meapB0EWHQHzez2WZZoR1tZMiQ5jvvr95CSL7Gl1Em8C9d9i'
: 'ERSPOd85+O5EB3+9jhL0YMuyiTPLh3iYgfpLMrjJJteOv/66'
: '1M/cFBZhVkcpnmmL50sd34b/TIsH6YoiS+da11UySSJwkqj2'
: '1k41Q6CDbNyUMSTS+e+quYDz1sul+6SuXkx9YhSysPUo7QPK'
: '/rlKqvCx35Wvmu+a/uGYow9EOigh0Qvr/LHSwcjjDjGiGHQ9'
: '14n0/sKlMf4Vwctk7i6X7/sGEYdNA5L/WeRT5IUDKmSbLVWN'
: 'oo2cqNCh1XyoKN8Nsuz0iqwVW8Qb1fOF0Vqp+PI06me6awqP'
: 'eISzxn9goYzXYVxWIUWpfWLCMwcGoLpgy83n8wzGkbR4Gtef'
: 'ENmMBznC7DEroKpOBpM8mIWVqPEYGtA+BvoMfS2E5uF1Wqu7'
: 'R6FLvNFEelWReNolpiV3l2VpGntMW9nk6RKdf0+9BrFrMbeV'
: 'uWhtzbHvMR6UlobPyVpBWjXBk7six2vH5nCwY6nXCo5xb7Yu'
: 'svFVPqCOGh16fSxSxglmPkScLfvmDDmC4FlDc1wov8IF2WZh'
: 'NlVumgEPRliimDD3PhGPyTgUUMC6lKqKAjxaptq1boUJvQFs'
: 'vi+LOJyxZkPE/vCwHuAmXmoj1AarnRBatzqkbv7cK5Ls2ORf'
: 'wM/vsOG5lURZqXxOnDXPKZw5t5jVzIhFKO0B6D6hARSXDR6F'
: 'zqq7H7mQeJAOQiUSPvFIrUHOfuui3zrFI5dYVeAmpcOcOb9u'
: '63vLjae4kYX4yRifYPrTa2SlMigYdO+cEWeGADMLZLH96SH4'
: 'R9xRYApl6q3Y02f+NzlRAl+cZSKhB6qSIVa80fsqMnWOqZJp'
: 'msXwAPoyNaQ95uNIGasKPwhxGzQzOXzMIIzBKabmLIil470z'
: 'fSjWWn+kvpvLQ9g1l3yRIc8gukz0uysEcakcDfy3KMk+l0SO'
: 'XlOopltJL7EPtUlzZfP4tnM70k8xkKCySt92MwfIXPoTe0pn'
: 'u4dYbp7hJ/kxWySN0ey0o/1qbiCsxDXJMWWo37QekBcAUFPS'
: 'GkPCnUJF5wwBacDK5cGlEp4BC2lYoJcrNNGVc7DzIqxT4CKs'
: 'PlrAG8mL8whRejiQe9EmImIAoz3sds9NxP4RZEzugqzb7c3Q'
: '89u3WQKY9aegbsA/AUJB/bJs6pfJt9BHFEuk5DWITzOH5uZS'
: 'ThLUsDjQ5GE6RMsyihMTaQLfA6BIiAQMAhnHHN1sd61WtUhD'
: 'VJiuhkrdBXd740+hLB9Vm1HjQe4ywLOBLWOMMiyQAXNB8sm9'
: 'Gx2qdGgGkMG6wY8aLfqgH4dfnmrVc+pPrE/Z/QnZOs8C1Okb'
: '2/ggwLdxlDC1D6DFPZDD98txv8xQf5TEc7Ax6ZyaDf6BC4Sy'
: 'lWKCMqtizp80+UMchATal63qHq0M3ZTs83Ob/XO6LYsFzpGV'
: 'Y5+iLxdWvwY+NaKoR/0iJIXL3dBjT2hG+wO+NXm53XStSh1e'
: 'ogfeojV35BTOaqh/cmPUe2Mdp91pQp2CjWOO2k7OamhjU1HB'
: '3DLGm66n6iajz4bqn2oICmNFxDR/x2mC5s+rKhlkUA3Ne3P8'
: 'lgP0qJfjf9uvu+HWXSfFwNoH4uqGUmTadYMtOc7yjEEd9EUh'
: 'kwEEOcDSHKQ+yhnSvUYRH8miQo2FK5TCjWZZGWKB8iHPud16'
: 'wApnCvTOzjIFAj9TQdCxa+ddOTizaa1xJvD0qMrKx+Ydaj6i'
: 'wJQG0vaSdYWpTv4HwVRAP3Z6ONjOJunEIeKRVmhujpA2+wPm'
: 'QR9WFQAFhh9bGQzFEXX+WwOnXq8pV35P2Acdn0pGebcMg7Og'
: 'QKaEdOKEAkFlk/9HuEKGBVwucc4AjnJ/LBYU09hVwWY1F0Hl'
: 'BUC2lbyIuYF58O8p+adMwUt9YAoX/IwRtAC9NAdBAyGuEB3V'
: 'R59u8/TGYx9/Xjz8bPB/Z/F9B0SghBK+4xxfiwtr0GXECqed'
: 'QQ9PRVpEAQ+26MidbGSmPm8RwRzcQsT17EPSmoorH3+av4Jc'
: 'j78O/vIp/uzMEkHKAE6/F7VHHSj8HddR0Q3ymcGZfRVjwfmO'
: 'nNn3GuWR+FzhcPmPqiptHcayacT28T8j3Cs0/LQCwo6J2iYx'
: 'P4R58AsobjFegusoJhuq7VNS2evRPcqASvQki+gbkBYwETNP'
: 't/1A2pT6UErR1zMzUITZRvF5Lp5basO1fk2U4aBSjkji8quL'
: '3cDyW7TpI3unxezMcSTNhQJhfpGctKgKN2Amo7/7ShSev4oX'
: 'icPSYS+6GkCm9a1Qw3VEchCUA+z5HtTcbQhK6F14YFUp+Yn7'
: 'WgmzwpZCDf5DDiXT9B7U6RdHAHpdb7IqmLVjqZSLnTW61zjQ'
: '7/G7D3hm9E846uTDZoNMADmLlm7IG2ieXfUtu1US9TeNGUHi'
: 'bE9Nv//2jRJGZfQmK3v7ykJJOv1IXjBsDCPpmgWppe6sHxR3'
: 'KVSQKqp+WIqammuJbtqkxZmMHry4oS/9pLhdCXKq8uR0R+LD'
: 'EqCKRxqc5VXdvPvIP+ggwR0RkyBfO9iKZvrWGAKVdz31cuoc'
: 'voO/qemClFMYEFEH7oI+vpkek4s4bCMBqK+5mHQUlDpE/oyl'
: 'py+2/6pWXK31PEYagP04epV1cE50UMy6IQZeQM7+Ol74Z+eH'
: 'fpHNc7OjffQ/HeV0X8BopoDkGEkAAA='
: }
: }
: }
: }
: }
: }
: }
: }
: }
: }
: }
B.5. Full Certificate Example π
okay bestie, this is the big one π Alice's certificate here is basically a renewal of the one from [RFC9216], so same vibe, just a new serial number and new issue dates π. The new thing is a logotype certificate extension β¨. It has URLs for two community logotype images and two subject organization logotype images, and every one of those URLs is fictional. An implementation would display at most three of these images: both community logotypes and one subject organization logotype. Direct addressing is used for all the images, and they're all hashed with SHA-256 π₯.
-----BEGIN CERTIFICATE-----
MIIFpTCCBI2gAwIBAgITN0EFee11f0Kpolw69Phqzpqx1zANBgkqhkiG9w0BAQ0F
ADBVMQ0wCwYDVQQKEwRJRVRGMREwDwYDVQQLEwhMQU1QUyBXRzExMC8GA1UEAxMo
U2FtcGxlIExBTVBTIFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAgFw0yMjA2
MTUxODE4MThaGA8yMDUyMDkyNzA2NTQxOFowOzENMAsGA1UEChMESUVURjERMA8G
A1UECxMITEFNUFMgV0cxFzAVBgNVBAMTDkFsaWNlIExvdmVsYWNlMIIBIjANBgkq
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtPSJ6Fg4Fj5Nmn9PkrYo0jTkfCv4TfA/
pdO/KLpZbJOAEr0sI7AjaO7B1GuMUFJeSTulamNfCwDcDkY63PQWl+DILs7GxVwX
urhYdZlaV5hcUqVAckPvedDBc/3rz4D/esFfs+E7QMFtmd+K04s+A8TCNO12DRVB
DpbP4JFD9hsc8prDtpGmFk7rd0q8gqnhxBW2RZAeLqzJOMayCQtws1q7ktkNBR2w
ZX5ICjecF1YJFhX4jrnHwp/iELGqqaNXd3/Y0pG7QFecN7836IPPdfTMSiPR+peC
rhJZwLSewbWXLJe3VMvbvQjoBMpEYlaJBUIKkO1zQ1Pq90njlsJLOwIDAQABo4IC
hDCCAoAwDAYDVR0TAQH/BAIwADAXBgNVHSAEEDAOMAwGCmCGSAFlAwIBMAEwHgYD
VR0RBBcwFYETYWxpY2VAc21pbWUuZXhhbXBsZTATBgNVHSUEDDAKBggrBgEFBQcD
BDAOBgNVHQ8BAf8EBAMCBsAwHQYDVR0OBBYEFLv2zLItHQYSHJeuKWqQENMgZmZz
MB8GA1UdIwQYMBaAFJEwjnwHFwyn8QkoZTYaZxxodvRZMIIB0AYIKwYBBQUHAQwE
ggHCMIIBvqCB4zCB4KBvMG0wazBpFgppbWFnZS9qcGVnMDEwLzALBglghkgBZQME
AgEEIK/8EBZGy1YltJl95Yk+rjqEb1oC04LW2o7U7vh8vR3tMCgWJmh0dHA6Ly93
d3cuZXhhbXBsZS5uZXQvaW1hZ2VzL2xvZ28uanBnoG0wazBpMGcWCWltYWdlL2dp
ZjAxMC8wCwYJYIZIAWUDBAIBBCCIkIGBrftmri9m0EmgTY6g7E6oZEI4WzZKvyyL
0unpZjAnFiVodHRwOi8vd3d3LmV4YW1wbGUub3JnL2xvZ28taW1hZ2UuZ2lmooHV
oIHSMIHPMGUwYxYJaW1hZ2UvZ2lmMDEwLzALBglghkgBZQMEAgEEIGpYUC5ZZ/nd
0Yr+vQ2x/mClExvfD7K+8LVzRVC6G78ZMCMWIWh0dHA6Ly93d3cuc21pbWUuZXhh
bXBsZS9sb2dvLmdpZjBmMGQWCmltYWdlL2pwZWcwMTAvMAsGCWCGSAFlAwQCAQQg
vct7dXJtjBszpCzerHly2krZ8nmEClhYas4vAoDq16UwIxYhaHR0cDovL3d3dy5z
bWltZS5leGFtcGxlL2xvZ28uanBnMA0GCSqGSIb3DQEBDQUAA4IBAQBbjdCNVFA/
emCc5uKX5WSPrdvRFZSs57SEhE0odxvhTrOs13VM8Om0TxhNJ0Pl6d9CJdbUxtFw
SSnSu9fnghDO7OZDJnPiIYLNY5eTTzY6sx85mde9TLaBTE7RZf0W7NV0hqDqcfM+
9HnQrU4TtPSvtPS5rr5SvqkaMM0k89bpbkgZlh9HH14+x+DIeT0dLythiXJvkVod
qEfyZTcdplQHQ4szWO7lsjmvHrUIbS1tdAJnah8AZRZfqiJEFeiUp06hvAWnPc3y
1TMwYI8onfwPIVzyT6YLgjiT6PuLwSB/wtlhI+vWfdINaHdotegjawLm/3jZ+ceN
tu39FvbV0uKJ
-----END CERTIFICATE-----
Next up, the logotype certificate extension from Alice's certificate, decoded so you can actually read it π§ The values on the left are the ASN.1 tag (in hexadecimal) and the length (in decimal).
30 464: SEQUENCE {
06 8: OBJECT IDENTIFIER logotype (1 3 6 1 5 5 7 1 12)
04 450: OCTET STRING, encapsulates {
30 446: SEQUENCE {
A0 227: [0] {
30 224: SEQUENCE {
A0 111: [0] {
30 109: SEQUENCE {
30 107: SEQUENCE {
30 105: SEQUENCE {
16 10: IA5String 'image/jpeg'
30 49: SEQUENCE {
30 47: SEQUENCE {
30 11: SEQUENCE {
06 9: OBJECT IDENTIFIER
: sha-256 (2 16 840 1 101 3 4 2 1)
: }
04 32: OCTET STRING
: AF FC 10 16 46 CB 56 25 B4 99 7D E5 89 3E AE 3A
: 84 6F 5A 02 D3 82 D6 DA 8E D4 EE F8 7C BD 1D ED
: }
: }
30 40: SEQUENCE {
16 38: IA5String 'http://www.example.net/images/logo.jpg'
: }
: }
: }
: }
: }
A0 109: [0] {
30 107: SEQUENCE {
30 105: SEQUENCE {
30 103: SEQUENCE {
16 9: IA5String 'image/gif'
30 49: SEQUENCE {
30 47: SEQUENCE {
30 11: SEQUENCE {
06 9: OBJECT IDENTIFIER
: sha-256 (2 16 840 1 101 3 4 2 1)
: }
04 32: OCTET STRING
: 88 90 81 81 AD FB 66 AE 2F 66 D0 49 A0 4D 8E A0
: EC 4E A8 64 42 38 5B 36 4A BF 2C 8B D2 E9 E9 66
: }
: }
30 39: SEQUENCE {
16 37: IA5String 'http://www.example.org/logo-image.gif'
: }
: }
: }
: }
: }
: }
: }
A2 213: [2] {
A0 210: [0] {
30 207: SEQUENCE {
30 101: SEQUENCE {
30 99: SEQUENCE {
16 9: IA5String 'image/gif'
30 49: SEQUENCE {
30 47: SEQUENCE {
30 11: SEQUENCE {
06 9: OBJECT IDENTIFIER
: sha-256 (2 16 840 1 101 3 4 2 1)
: }
04 32: OCTET STRING
: 6A 58 50 2E 59 67 F9 DD D1 8A FE BD 0D B1 FE 60
: A5 13 1B DF 0F B2 BE F0 B5 73 45 50 BA 1B BF 19
: }
: }
30 35: SEQUENCE {
16 33: IA5String 'http://www.smime.example/logo.gif'
: }
: }
: }
30 102: SEQUENCE {
30 100: SEQUENCE {
16 10: IA5String 'image/jpeg'
30 49: SEQUENCE {
30 47: SEQUENCE {
30 11: SEQUENCE {
06 9: OBJECT IDENTIFIER
: sha-256 (2 16 840 1 101 3 4 2 1)
: }
04 32: OCTET STRING
: BD CB 7B 75 72 6D 8C 1B 33 A4 2C DE AC 79 72 DA
: 4A D9 F2 79 84 0A 58 58 6A CE 2F 02 80 EA D7 A5
: }
: }
30 35: SEQUENCE {
16 33: IA5String 'http://www.smime.example/logo.jpg'
: }
: }
: }
: }
: }
: }
: }
: }
: }
Appendix C. Changes since RFCs 3709 and 6170 β¨
okay so this appendix is basically the "what's new" recap π It sums up every change since [RFC3709]. Here's the tea:
- Combine RFCs 3709 and 6170 into one document, and encourage implementers to support the "data" URI scheme (data:...) that was originally specified in RFC 6170. Merging 3709 and 6170 led to a ton of editorial changes throughout the document π§Ή
- Drop SHA-1 as the mandatory-to-implement hash algorithm, and encourage use of the one-way hash function that is employed by the certificate signature algorithm π
- RFC 3709 required client applications to support both direct and indirect addressing. This requirement is changed to SHOULD support both direct and indirect addressing to allow implementations to be more privacy preserving π
- Update the reference for language tags to be RFC 5646 instead of the now obsolete RFC 3066 π³οΈβπ
- Update the reference for the URI Generic Syntax to be RFC 3986 instead of the now obsolete RFC 2396 πΈ
- Update the reference for the application/pdf media type to be RFC 8118 instead of the now obsolete RFC 3778 π
- No longer require support for the FTP scheme (ftp://...) URI. Bye bye, ftp π
- Require support for the HTTP scheme (http://...) URI and the HTTPS scheme (https://...) URI π
- Provide syntax of the "data" URI scheme using modern ABNF β¨
- Require support for the compressed SVG image format with the image/svg+xml+gzip media type π¦
- Media types MUST follow the ABNF [RFC5234] that is provided in Section 8.3.1 of [RFC9110]. This change resolves Errata ID 2679. This one is a hard rule, no cap π
- Remove the requirement that the LogotypeData file name have a file extension of ".LTD". This change resolves Errata ID 2325 ποΈ
- Encourage, instead of requiring, each logotype to be represented by at least one image πΌοΈ
- Encourage the inclusion of text-based audio data suitable for processing by a text-to-speech software using the media type of "text/plain;charset=UTF-8" π§
- Encourage the use of dithering if an image needs to be scaled π
- Require that the logotype certificate extension not contain more than one certificate image logotype π
- Privacy-related topics that were previously discussed in the Security Considerations section are now covered in a separate Privacy Considerations section. Additional topics are covered in both sections π«Ά
- Provide ASN.1 modules for both the older syntax [OLD-ASN1] and the most recent ASN.1 syntax [NEW-ASN1] π§
- Provide additional references π
- Provide additional examples π
- Several editorial changes to improve clarity π
- The example in Appendix B.1 was changed to use SHA-256 instead of SHA-1 π₯
Acknowledgments π«Ά
- Acknowledgments from RFC 3709
This document is the result of contributions from many professionals. The authors appreciate contributions from all members of the IETF PKIX Working Group. We extend a special thanks to Al Arsenault, David Cross, Tim Polk, Russel Weiser, Terry Hayes, Alex Deacon, Andrew Hoag, Randy Sabett, Denis Pinkas, Magnus Nystrom, Ryan Hurst, and Phil Griffin for their efforts and support.
Russ Housley thanks the management at RSA Laboratories, especially Burt Kaliski, who supported the development of this specification. The vast majority of the work on this specification was done while Russ was employed at RSA Laboratories.
- Acknowledgments from RFC 6170
The authors recognize valuable contributions from members of the PKIX working group, the CA Browser Forum, and James Manger, for their review and sample data.
- Additional Acknowledgments
Combining RFCs 3709 and 6170 has produced an improved specification. The authors appreciate contributions from all members of the IETF LAMPS Working Group. We extend a special thanks to Alexey Melnikov for his guidance on media types. We extend a special thanks to Tim Geiser for his careful checking of the new examples in Appendices B.4 and B.5. We extend a special thanks to Corey Bonnell, Daniel Kahn Gillmor, Roman Danyliw, Paul Wouters, Paul Kyzivat, Shuping Peng, Sheng Jiang, Rob Wilton, Γric Vyncke, Donald Eastlake 3rd, and Dan Harkins for their careful review and helpful comments.
Authors' Addresses π¦
Stefan Santesson IDsec Solutions AB Forskningsbyn Ideon SE-223 70 Lund Sweden Email: sts@aaa-sec.com
Russ Housley Vigil Security, LLC 516 Dranesville Road Herndon, VA 20170 United States of America Email: housley@vigilsec.com
Trevor Freeman Amazon Web Services 1918 8th Ave Seattle, WA 98101 United States of America Email: frtrevor@amazon.com
Leonard Rosenthol Adobe 345 Park Avenue San Jose, CA 95110 United States of America Email: lrosenth@adobe.com
That's the whole spec, bestie! πβ¨π
π¦ where this page comes from
- ietf: rfc9399 2023-05
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms