rfc-9796

SIP Call-Info Parameters for Rich Call Data

C. Wendt, J. Peterson
date2025-07 streamIETF areaart wgsipcore statusPROPOSED STANDARD pages29 canonicalhttps://www.rfc-editor.org/rfc/rfc9796 doi10.17487/RFC9796
This document specifies a usage of the SIP Call-Info header field that incorporates Rich Call Data (RCD) associated with the identity of the originating party in order to provide to the terminating party a description of the caller (including details about the reason for the session). RCD includes information about the caller beyond the telephone number (such as a calling name, logo, photo, or jCard object representing the caller), which can help the called party decide how to handle the session request. This document defines three new parameters 'call-reason', 'verified', and 'integrity' for the SIP Call-Info header field and also a new token ("jcard") for the 'purpose' parameter of the Call-Info header field. It also provides guidance on the use of the Call-Info 'purpose' parameter token, "icon".

Extracted elements (31)

design-rationale §6

A new 'call-reason' parameter was defined rather than reusing the SIP Subject header field because Subject has seen little historical use in SIP implementations and its specification describes its potential use in filtering, making a dedicated parameter more appropriate.

sip, realtime

design-rationale §3

A new "jcard" 'purpose' token was defined rather than reusing the existing "card" token in order to specifically denote the jCard profile defined in this document for RCD use, avoiding overlap with the broader and differently-scoped "card" token semantics.

sip, realtime

design-rationale §3

jCard was chosen for RCD because it is an extensible method of providing information about a person or business, has been defined in RFC 9795 and adopted by PASSporT (RFC 8225) due to its use of JSON Web Tokens. This made jCard a natural fit for the STIR RCD framework.

sip, json, realtime

design-rationale §4

RCD insertion is intended to be singular: the receiving party should not be required to make call-specific decisions based on redundant, duplicate, or conflicting RCD. Information should be added by an authoritative party or translated from a verified STIR RCD PASSporT and left unmodified.

sip, security, realtime

interoperability-note §7

Display-name information in the From or P-Asserted-ID header field is considered verified via RCD PASSporT procedures when a Call-Info header field is present with purpose="jcard", a null data URI ("data:"), and verified="true".

sip, security, realtime

interoperability-note §6

For 'call-reason' or 'verified' parameters that do not require an associated URI, the Call-Info header field URI should be set to the null data URI ("data:") with purpose="jcard" to avoid conflicts with existing implementations and previously defined purpose parameters.

sip, realtime

normative-requirement §5 MUST

A call and its single RCD-related Call-Info header field MUST only contain a single jCard object represented by an array with two elements, where the first element MUST be the string "vcard".

sip, json, realtime

normative-requirement §10.9.5 MUST

An end client receiving a jCard with a "url" property MUST only display the URL and MUST NOT automatically follow the URL or provide an automatic preview, and MUST adhere to good practice to make the user's choice clear.

sip, security, privacy

normative-requirement §4 MUST NOT

Any additional parties in the call path MUST NOT modify the Call-Info header field or add additional Call-Info header fields related to RCD. The trusted and verified caller RCD information MUST NOT be modified or altered.

sip, security, realtime

normative-requirement §10.2 SHOULD

For images such as "photo" and "logo" properties, the default image formats SHOULD be PNG or JPEG as these support 24-bit RGB images. SVG Tiny 1.2 SHOULD also be supported as an additional default format for vector images.

sip, realtime

normative-requirement §5 MUST

If not using the "data" or "cid" URI schemes, the Call-Info header field URI MUST use a transport that can validate the integrity of the source of the resource, such as HTTPS tied to a specific validated domain.

sip, security, realtime

normative-requirement §8 MUST

Implementations MUST support the hash algorithms SHA-256, SHA-384, and SHA-512, identified by "sha256", "sha384", and "sha512" respectively, for the 'integrity' parameter.

sip, security, crypto

normative-requirement §6 SHOULD

The 'call-reason' parameter SHOULD be no longer than 64 characters; displays supporting this specification may be forced to truncate messages that cannot fit on a screen.

sip, realtime

normative-requirement §10.4.1 MUST

The "fn" (formatted name) property MUST have a cardinality of 1*, meaning one or more instances per jCard MUST be present.

sip, json

normative-requirement §10.9.6 MUST

The jCard "version" property MUST be included and MUST carry exactly one instance per jCard (cardinality 1) with a value of "4.0".

sip, json

normative-requirement §5 MUST

The media type for jCard content referenced or carried via the Call-Info header field MUST be set as application/json with an encoding of UTF-8 (RFC 8259).

sip, json, realtime

normative-requirement §10.4.4 SHOULD

The "photo" property SHOULD correspond to a square image with dimensions of 128x128, 256x256, 512x512, or 1024x1024 pixels to promote interoperability and proper rendering.

sip, realtime

normative-requirement §5 MUST

The values represented in the RCD MUST match the corresponding information in the SIP message to enable proper verification of calling name or icon, consistent with RFC 8224 and RFC 9795 verification procedures.

sip, security, realtime

normative-requirement §10.1 MUST NOT

When URIs are used within a jCard, the content referenced by those URIs MUST NOT contain any URI references; the client MUST ensure that those URI references are not followed, and any URIs present in URI-linked content are not rendered.

sip, security, json

protocol-element §6

The 'call-reason' Call-Info parameter carries a short textual message conveying the caller's intention for the call, intended for display to the end user during call alerting. It is an optional parameter and operates independently of URI and 'purpose' tokens.

sip, realtime

protocol-element §8

The 'integrity' Call-Info parameter associates an integrity hash string with the resource referenced by the Call-Info URI, using the format "<algorithm>-<hash>" (e.g., "sha256-..."). It corresponds conceptually to W3C Subresource Integrity and mirrors the "rcdi" claim in the RCD PASSporT.

sip, security, crypto, realtime

protocol-element §5

The "jcard" Call-Info 'purpose' token indicates that the URI in the Call-Info header field points to a jCard JSON object (RFC 7095) representing the calling party's Rich Call Data. It is distinct from the existing "card" token and is specific to the jCard profile defined for RCD use in SIP.

sip, realtime

protocol-element §7

The 'verified' Call-Info parameter, with the sole valid value of "true", indicates to the recipient that the party inserting the Call-Info header field has successfully performed verification procedures as defined in RFC 9795 Section 8. Its scope is limited to the specific Call-Info header field on which it appears.

sip, security, realtime

registry §12.2

IANA has registered the 'call-reason' parameter for the SIP Call-Info header field in the "Header Field Parameters and Parameter Values" registry (RFC 3968). The parameter takes the value of a quoted string with no predefined values.

sip, registry

registry §12.4

IANA has registered the 'integrity' parameter for the SIP Call-Info header field in the "Header Field Parameters and Parameter Values" registry (RFC 3968). The parameter takes the value of a quoted string (the integrity hash) with no predefined values.

sip, registry, crypto

registry §12.1

IANA has registered the "jcard" value for the 'purpose' parameter of the SIP Call-Info header field in the "Header Field Parameters and Parameter Values" registry within the "Session Initiation Protocol (SIP) Parameters" registry group.

sip, registry

registry §12.3

IANA has registered the 'verified' parameter for the SIP Call-Info header field in the "Header Field Parameters and Parameter Values" registry (RFC 3968). The parameter takes a quoted string value; the only valid value is "true" (predefined values: Yes).

sip, registry

security-consideration §13

Inclusion of media directly, via Base64 encoding, or via remote URIs in RCD poses threat vectors: maliciously crafted documents could trigger parsing bugs or install malware, and remote URI access could expose user agent information. Sensitive users should be able to control or disable these mechanisms.

sip, security, privacy

security-consideration §13

Revealing information such as name, location, and affiliation in RCD entails privacy risks. Transport-level security can protect Call-Info and jCard data from eavesdroppers. RCD information should generally be considered public as this specification defines no confidentiality mechanism beyond SIP signaling itself.

sip, security, privacy

security-consideration §13

The Call-Info mechanism can enable actors to impersonate a calling party they are not authorized to represent. A management and policy layer that validates participants in the ecosystem and their use of telephone number identifiers is required to mitigate this risk.

sip, security

wire-format §5

A jCard object carried in a Call-Info header field MUST be a JSON array with exactly two elements: the string "vcard" as the first element, and an array of jCard property arrays as the second element. It is encoded as application/json with UTF-8.

sip, json, realtime