PageSourceSearch

https://opensource.contentauthenticity.org/assets/js/a1d04854.116f07a0.js

js contentauthenticity.org collected 2026-09-24 08:25:13 UTC 4,887 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkopensource_contentauth_org=globalThis.webpackChunkopensource_contentauth_org||[]).push([[2778],{1265:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>h,default:()=>g,frontMatter:()=>d,metadata:()=>r,toc:()=>p});const r=JSON.parse('{"id":"durable-cr/sb-algs","title":"Watermarking and fingerprinting algorithms","description":"The C2PA specification refers to watermarking and content fingerprinting as soft bindings, which can be used to find digital content, even if the underlying bits differ. The C2PA specification requires that soft bindings be generated using one of the algorithms approved by the C2PA Technical Working Group.","source":"@site/docs/durable-cr/soft-bindings.mdx","sourceDirName":"durable-cr","slug":"/durable-cr/sb-algs","permalink":"/docs/durable-cr/sb-algs","draft":false,"unlisted":false,"editUrl":"https://github.com/contentauth/opensource.contentauth.org/edit/main/docs/durable-cr/soft-bindings.mdx","tags":[],"version":"current","frontMatter":{"id":"sb-algs","title":"Watermarking and fingerprinting algorithms","hide_table_of_contents":true},"sidebar":"docs","previous":{"title":"Durable Content Credentials","permalink":"/docs/durable-cr/"},"next":{"title":"TrustMark watermarking","permalink":"/docs/durable-cr/trustmark-intro"}}');var i=n(4848),s=n(8453),o=n(6540);const a={alg:"Algorithm Name",decodedMediaTypes:"Media Types","entryMetadata.informationalUrl":"URL","entryMetadata.contact":"Contact"},c=(e,t)=>{const n=t.split(".").reduce((e,t)=>e&&void 0!==e[t]?e[t]:"N/A",e);return Array.isArray(n)?n.join(", "):n},l=()=>{const[e,t]=(0,o.useState)(null),[n,r]=(0,o.useState)(null);(0,o.useEffect)(()=>{fetch("/sb-alg-list.json").then(e=>{if(!e.ok)throw new Error("Failed to fetch the JSON file");return e.json()}).then(e=>{t(e),r(null)}).catch(e=>{r(e.message),t(null)})},[]);const s=e=>e.map((e,t)=>{const n=(e=>{let t={};for(const n in a)t[n]=c(e,n);return t})(e),r=n["entryMetadata.informationalUrl"],s=c(e,"entryMetadata.description");return(0,i.jsx)("tr",{children:Object.keys(a).map((e,t)=>(0,i.jsx)("td",{children:"entryMetadata.informationalUrl"===e?"N/A"!==r&&"N/A"!==s?(0,i.jsx)("a",{href:r,target:"_blank",rel:"noopener noreferrer",children:s}):"N/A":n[e]},t))},t)});if(n)return(0,i.jsx)("p",{style:{color:"red"},children:n});if(!e||!Array.isArray(e))return(0,i.jsx)("p",{children:"No data found in the JSON. Expected an array of objects."});const l=e.reduce((e,t)=>{const n=c(t,"type");return e[n]||(e[n]=[]),e[n].push(t),e},{});return(0,i.jsx)("div",{children:Object.entries(l).map(([e,t])=>{return(0,i.jsxs)("div",{style:{marginBottom:"30px"},children:[(0,i.jsxs)("h2",{children:[(n=e,n.split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "))," algorithms"]}),(0,i.jsxs)("table",{style:{borderCollapse:"collapse"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:Object.keys(a).map(e=>(0,i.jsx)("th",{children:a[e]},e))})}),(0,i.jsx)("tbody",{children:s(t)})]})]},e);var n})})},d={id:"sb-algs",title:"Watermarking and fingerprinting algorithms",hide_table_of_contents:!0},h=void 0,u={},p=[];function f(e){const t={a:"a",admonition:"admonition",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:["The C2PA specification refers to watermarking and content fingerprinting as ",(0,i.jsx)(t.a,{href:"https://c2pa.org/specifications/specifications/2.1/specs/C2PA_Specification.html#_soft_bindings",children:"soft bindings"}),", which can be used to find digital content, even if the underlying bits differ. The C2PA specification requires that soft bindings be generated using one of the ",(0,i.jsx)(t.a,{href:"https://c2pa.org/specifications/specifications/2.1/specs/C2PA_Specification.html#_soft_binding_algorithm_list",children:"algorithms"})," approved by the C2PA Technical Working Group."]}),"\n",(0,i.jsx)(t.admonition,{type:"note",children:(0,i.jsxs)(t.p,{children:["The table below is provided ",(0,i.jsx)(t.strong,{children:"for convenience only"})," and is created and automatically updated based on data from the ",(0,i.jsx)(t.a,{href:"https://github.com/c2pa-org/softbinding-algorithm-list/blob/main/softbinding-algorithm-list.json",children:"C2PA Soft Binding Algorithm List"}),", which is the single authoritative source of the information."]})}),"\n","\n",(0,i.jsx)(l,{})]})}function g(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(f,{...e})}):f(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>a});var r=n(6540);const i={},s=r.createContext(i);function o(e){const t=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),r.createElement(s.Provider,{value:t},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.