title: Simple Electronic Signature: "Signing" PDF Without Certificate for Post-Signature Tamper-Protection
body: <p>First of all, a bit of background - the actual questions are at the bottom.</p>
  
  <p>I'm currently working on a web-based app (sort of SaaS) which allows users to send forms to their own customers.</p>
  
  <p>These forms are simple, small contracts for small jobs where their customers say "Yeah sure, I'll do this and here's my confirmation".</p>
  
  <p>The sort of thing that is being "signed" does not require a fully qualified digital signature and an <em>electronic</em> signature will suffice.</p>
  
  <p>While, in this case, a simple checkbox saying "Yeah, I'll do this" would legally be sufficient, I'm keen to implement it with a signature pad.  To be honest, it's just for the factor of being seemingly more binding and, well, "neat".</p>
  
  <h3>The current workflow looks like this:</h3>
  
  <ol>
  <li>User's customer opens web-form (the party being asked to sign is the only person in the universe to know the direct link)</li>
  <li>Ticks a few boxes and enters text</li>
  <li>Clicks "Sign" which opens an HTML5 signature pad (mobile) or a simple input (PC) to type their name</li>
  <li>Clicks "Accept"</li>
  <li>A PDF is generated for download and stored on the server (along with timestamp, IP, and a couple of other bits of information)</li>
  </ol>
  
  <p>As you can see, the agreement in its entirety constitutes a simple electronic signature - even without the bells and whistles.</p>
  
  <h3>What I would like to do</h3>
  
  <p>As with any <em>simple</em> electronic signature, it's easy for any party to say that a document may have been tampered with.</p>
  
  <p>So what I did is properly sign the PDF according to the specifications (using tcpdf): that entailed first generating the PDF and <em>then</em> adding the signature to the <code>/Sig</code> dictionary, then generating a digest across all byte-ranges (excluding the signature), linking it up with a <code>.crt</code> file and voilá: the document is signed with the lovely benefit of the signature becoming invalid if even a single byte is changed.</p>
  
  <h2>Now to the questions:</h2>
  
  <ol>
  <li>Is it possible to benefit from the "tamper-validation" <strong>without</strong> using a certificate?  Like I say, these are not supposed to be <em>digital</em> signatures but rather simple, electronic signatures.  Still, I'd like to benefit from any post-signature changes being highlighted.</li>
  <li>Alternatively, I could also simply use a proper certificate for the signing process.  But this certificate would be <em>mine</em> rather than my users' or even my users' customers'.  In that sense, would it do more harm than good? I.e. the certificate belongs to the wrong party and therefore becomes meaningless; I, rather than the signatory vouches; "The document was changed and re-signed after I signed"; etc.</li>
  </ol>