| rfc9219v2.txt | rfc9219.txt | |||
|---|---|---|---|---|
| skipping to change at line 98 ¶ | skipping to change at line 98 ¶ | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| Type signatures, examples, and property descriptions in this document | Type signatures, examples, and property descriptions in this document | |||
| follow the conventions established in Section 1.1 of [RFC8620]. Data | follow the conventions established in Section 1.1 of [RFC8620]. Data | |||
| types defined in the core specification are also used in this | types defined in the core specification are also used in this | |||
| document. | document. | |||
| 3. Addition to the Capabilities Object | 3. Addition to the Capabilities Object | |||
| The capabilities object is returned as part of the standard JMAP | The *capabilities* object is returned as part of the standard JMAP | |||
| Session object; see Section 2 of [RFC8620]. Servers supporting | Session object; see Section 2 of [RFC8620]. Servers supporting this | |||
| _this_ specification MUST add a property called | specification MUST add a property called | |||
| "urn:ietf:params:jmap:smimeverify" to the capabilities object. | "urn:ietf:params:jmap:smimeverify" to the capabilities object. | |||
| The value of this property is an empty object in both the JMAP | The value of this property is an empty object in both the JMAP | |||
| Session _capabilities_ property and an account's | Session _capabilities_ property and an account's | |||
| _accountCapabilities_ property. | _accountCapabilities_ property. | |||
| 4. Extension for S/MIME Signature Verification | 4. Extension for S/MIME Signature Verification | |||
| 4.1. Extension to Email/get | 4.1. Extension to Email/get | |||
| skipping to change at line 139 ¶ | skipping to change at line 139 ¶ | |||
| it MUST be interpreted by the server as a request to return the | it MUST be interpreted by the server as a request to return the | |||
| "smimeErrors" response property. | "smimeErrors" response property. | |||
| *smimeVerifiedAt*: | *smimeVerifiedAt*: | |||
| If "smimeVerifiedAt" is included in the list of requested | If "smimeVerifiedAt" is included in the list of requested | |||
| properties, it MUST be interpreted by the server as a request to | properties, it MUST be interpreted by the server as a request to | |||
| return the "smimeVerifiedAt" response property. | return the "smimeVerifiedAt" response property. | |||
| The "smimeStatus" response property is defined as follows: | The "smimeStatus" response property is defined as follows: | |||
| smimeStatus: | *smimeStatus*: | |||
| "String|null" (server-set). null signifies that the message | "String|null" (server-set). null signifies that the message | |||
| doesn't contain any signature. Otherwise, this property contains | doesn't contain any signature. Otherwise, this property contains | |||
| the S/MIME signature and certificate verification status | the S/MIME signature and certificate verification status | |||
| calculated according to [RFC8551], [RFC8550], and [RFC5280]. | calculated according to [RFC8551], [RFC8550], and [RFC5280]. | |||
| Possible string values of the property are listed below. Servers | Possible string values of the property are listed below. Servers | |||
| MAY return other values not defined below, as defined in | MAY return other values not defined below, as defined in | |||
| extensions to this document. Clients MUST treat unrecognized | extensions to this document. Clients MUST treat unrecognized | |||
| values as "unknown" or "signed/failed". Note that the value of | values as "unknown" or "signed/failed". Note that the value of | |||
| this property might change over time. | this property might change over time. | |||
| unknown: | unknown: | |||
| An S/MIME message, but it was neither signed nor encrypted. This | An S/MIME message, but it was neither signed nor encrypted. | |||
| can also be returned for a multipart/signed message that contains | This can also be returned for a multipart/signed message that | |||
| an unrecognized signing protocol (for example, OpenPGP). | contains an unrecognized signing protocol (for example, | |||
| OpenPGP). | ||||
| signed: | signed: | |||
| An S/MIME signed message, but the signature was not yet verified. | An S/MIME signed message, but the signature was not yet | |||
| Some servers might not attempt to verify a signature until a | verified. Some servers might not attempt to verify a signature | |||
| particular message is requested by the client. (This is a useful | until a particular message is requested by the client. (This | |||
| optimization for a JMAP server to avoid doing work until exact | is a useful optimization for a JMAP server to avoid doing work | |||
| information is needed. A JMAP client that only needs to display | until exact information is needed. A JMAP client that only | |||
| an icon that signifies presence of an S/MIME signature can still | needs to display an icon that signifies presence of an S/MIME | |||
| use this value.) JMAP servers compliant with this document SHOULD | signature can still use this value.) JMAP servers compliant | |||
| attempt signature verification and return "signed/verified" or | with this document SHOULD attempt signature verification and | |||
| "signed/failed" instead of this signature status. | return "signed/verified" or "signed/failed" instead of this | |||
| signature status. | ||||
| signed/verified: | signed/verified: | |||
| An S/MIME signed message, and the sender's signature was | An S/MIME signed message, and the sender's signature was | |||
| successfully verified according to [RFC8551] and [RFC8550]. | successfully verified according to [RFC8551] and [RFC8550]. | |||
| Additionally, the signer email address extracted from the S/MIME | Additionally, the signer email address extracted from the S/ | |||
| certificate matches the From header field value, and the signer | MIME certificate matches the From header field value, and the | |||
| certificate SHOULD be checked for revocation. | signer certificate SHOULD be checked for revocation. | |||
| signed/failed: | signed/failed: | |||
| S/MIME signed message, but the signature failed to verify | S/MIME signed message, but the signature failed to verify | |||
| according to [RFC8551] and [RFC8550]. This might be because of a | according to [RFC8551] and [RFC8550]. This might be because of | |||
| policy-related decision (e.g., the message signer email address | a policy-related decision (e.g., the message signer email | |||
| doesn't match the From header field value), the message was | address doesn't match the From header field value), the message | |||
| modified, the signer's certificate has expired or was revoked, | was modified, the signer's certificate has expired or was | |||
| etc. | revoked, etc. | |||
| encrypted+signed/verified: | encrypted+signed/verified: | |||
| This value is reserved for future use. It is typically handled in | This value is reserved for future use. It is typically handled | |||
| the same way as "signed/verified". | in the same way as "signed/verified". | |||
| encrypted+signed/failed: | encrypted+signed/failed: | |||
| This value is reserved for future use. It is typically handled in | This value is reserved for future use. It is typically handled | |||
| the same way as "signed/failed". | in the same way as "signed/failed". | |||
| The "smimeStatusAtDelivery" response property has the same syntax as | The "smimeStatusAtDelivery" response property has the same syntax as | |||
| "smimeStatus" but is calculated in relationship to the "receivedAt" | "smimeStatus" but is calculated in relationship to the "receivedAt" | |||
| date/time. Unlike "smimeStatus", the "smimeStatusAtDelivery" | date/time. Unlike "smimeStatus", the "smimeStatusAtDelivery" | |||
| response property value doesn't change unless trust anchors are | response property value doesn't change unless trust anchors are | |||
| added. (For example, addition of a trust anchor can change the value | added. (For example, addition of a trust anchor can change the value | |||
| of a message "smimeStatusAtDelivery" property from "signed/failed" to | of a message "smimeStatusAtDelivery" property from "signed/failed" to | |||
| "signed/verified". Note that trust anchor removal doesn't affect | "signed/verified". Note that trust anchor removal doesn't affect | |||
| this response property.) The "smimeStatusAtDelivery" response | this response property.) The "smimeStatusAtDelivery" response | |||
| property value allows clients to compare the S/MIME signature | property value allows clients to compare the S/MIME signature | |||
| skipping to change at line 209 ¶ | skipping to change at line 211 ¶ | |||
| by "smimeStatus", for example, to help to answer questions like "was | by "smimeStatus", for example, to help to answer questions like "was | |||
| the signature valid at the time of delivery?". | the signature valid at the time of delivery?". | |||
| Note that the "smimeStatusAtDelivery" response property value doesn't | Note that the "smimeStatusAtDelivery" response property value doesn't | |||
| have to be calculated at delivery time. A JMAP server can defer its | have to be calculated at delivery time. A JMAP server can defer its | |||
| calculation until it is explicitly requested; however, once it is | calculation until it is explicitly requested; however, once it is | |||
| calculated, its value is remembered for later use. | calculated, its value is remembered for later use. | |||
| The "smimeErrors" response property is defined as follows: | The "smimeErrors" response property is defined as follows: | |||
| smimeErrors: | *smimeErrors*: | |||
| "String[]|null" (server-set). null signifies that the message | "String[]|null" (server-set). null signifies that the message | |||
| doesn't contain any signature or that there were no errors when | doesn't contain any signature or that there were no errors when | |||
| verifying the S/MIME signature. (That is, this property is non- | verifying the S/MIME signature. (That is, this property is non- | |||
| null only when the corresponding "smimeStatus" response property | null only when the corresponding "smimeStatus" response property | |||
| value is "signed/failed" or "encrypted+signed/failed". Note that | value is "signed/failed" or "encrypted+signed/failed". Note that | |||
| future extensions to this document can specify other "smimeStatus" | future extensions to this document can specify other "smimeStatus" | |||
| values that can be used with "smimeErrors".) Each string in the | values that can be used with "smimeErrors".) Each string in the | |||
| array is a human-readable description (in the language specified | array is a human-readable description (in the language specified | |||
| in the Content-Language header field, if any) of a problem with | in the Content-Language header field, if any) of a problem with | |||
| the signature, the signing certificate, or the signing certificate | the signature, the signing certificate, or the signing certificate | |||
| skipping to change at line 231 ¶ | skipping to change at line 233 ¶ | |||
| affected by the language selection.) In one example, the signing | affected by the language selection.) In one example, the signing | |||
| certificate might be expired and the message From email address | certificate might be expired and the message From email address | |||
| might not correspond to any of the email addresses in the signing | might not correspond to any of the email addresses in the signing | |||
| certificate. In another example, the certificate might be expired | certificate. In another example, the certificate might be expired | |||
| and the JMAP server might be unable to retrieve a Certificate | and the JMAP server might be unable to retrieve a Certificate | |||
| Revocation List (CRL) for the certificate. In both of these | Revocation List (CRL) for the certificate. In both of these | |||
| cases, there would be 2 elements in the array. | cases, there would be 2 elements in the array. | |||
| The "smimeVerifiedAt" response property is defined as follows: | The "smimeVerifiedAt" response property is defined as follows: | |||
| smimeVerifiedAt: | *smimeVerifiedAt*: | |||
| "UTCDate|null" (server-set). null signifies that the message | "UTCDate|null" (server-set). null signifies that the message | |||
| doesn't contain any S/MIME signature or that there is a signature, | doesn't contain any S/MIME signature or that there is a signature, | |||
| but there was no attempt to verify it. (Retrieval of the | but there was no attempt to verify it. (Retrieval of the | |||
| "smimeStatus" value can be used to distinguish these 2 cases). In | "smimeStatus" value can be used to distinguish these 2 cases). In | |||
| all other cases, it is set to the date and time of when the S/MIME | all other cases, it is set to the date and time of when the S/MIME | |||
| signature was most recently verified. Note that a request to | signature was most recently verified. Note that a request to | |||
| fetch "smimeStatus", "smimeStatusAtDelivery", and/or "smimeErrors" | fetch "smimeStatus", "smimeStatusAtDelivery", and/or "smimeErrors" | |||
| would force this response property to be set to a non-null value | would force this response property to be set to a non-null value | |||
| if an S/MIME signature exists. | if an S/MIME signature exists. | |||
| End of changes. 10 change blocks. | ||||
| 39 lines changed or deleted | 41 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||