<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>Apache OpenOffice - How to verify the integrity of the downloaded file?</title>
  <style>
  /* <![CDATA[ */
  /*-------------------- Exceptions on standard css -----------------------*/
  @import "styles.css";
  @import "exceptions.css";
  /* ]]> */
  </style>
</head>

<body>

<script>
  <!--
  // entourage.initialize();
  // -->
</script>

<h1>Apache OpenOffice - How to verify the integrity of the downloaded file?</h1>
<br />

<ul>
  <li><h3><a href="index.html"    title="Get the signatures and hash values for all Apache OpenOffice builds">
  Get all Apache OpenOffice signature and hash value files</a></h3></li>
  <li><h3><a href="#internet"     title="How to verify with SHA256 and MD5 hash values in the Internet">
  Internet - Verify with SHA256 and MD5</a></h3></li>
  <li><h3><a href="#pgp_win"      title="How to verify with PGP/ASC and KEYS signatures on Windows">
  Windows - Verify with PGP and KEYS</a></h3></li>
  <li><h3><a href="#hash_win"     title="How to verify with SHA256 and MD5 hash values on Windows">
  Windows - Verify with SHA256 and MD5</a></h3></li>
  <li><h3><a href="#pgp_linux"    title="How to verify with PGP/ASC and KEYS signatures on Linux">
  Linux - Verify with PGP and KEYS</a></h3></li>
  <li><h3><a href="#hash_linux"   title="How to verify with SHA256 and MD5 hash values on Linux">
  Linux - Verify with SHA256 and MD5</a></h3></li>
  <li><h3><a href="#pgp_mac"      title="How to verify with PGP/ASC and KEYS signatures on Mac OS">
  Mac OS - Verify with PGP and KEYS</a></h3></li>
  <li><h3><a href="#hash_mac"     title="How to verify with SHA256 and MD5 hash values on Mac OS">
  Mac OS - Verify with SHA26 and MD5</a></h3></li>
  <li><h3><a href="#no_match"     title="What to do when the values do not match?">
  What to do when the values do not match?</a></h3></li>
  <li><h3><a href="#notes"        title="Please read the important notes before downloading and using Apache OpenOffice">
  Important Notes</a></h3></li>
</ul>
<br />

<hr style="display: block;"/>

<h2>How to verify your download with PGP/ASC signatures and MD5, SHA256 hash values?</h2>

<p>A <a href="https://en.wikipedia.org/wiki/Checksum" title="What means to verify the file integrity?">hash value</a>
processed on the downloaded file is a way to make sure that the content is transferred OK and has not been damaged during
the download process.</p>
<p><b>Note:</b><br />
There is no need to do all the verifications. The best is to check the PGP signature (.asc) file. Failing that, use the
SHA256 hash, otherwise use the MD5 hash.</p>
<br />

<h3 id="internet">Verify in the Internet</h3>

<p><b>Internet - Verify with SHA256 and MD5</b></p>
<br />

<ul>
  <li>Online services in the Internet allows to verify downloaded files. It is not necessary to upload anything.
  The files will be checked locally in the browser. Therefore it is also very useful if you have a slow Internet connection.
  HTML5 support is needed to use most of these services. However, nowadays every browser should have this support
  built-in. Here are a few and not to prefer a specific tool:</li>
  <li>&nbsp;</li>
  <li><a href="https://md5file.com/calculator"
  title="HTML5 File Hash Online Calculator">HTML5 File Hash Online Calculator</a><br />
  The service is easy to use. Just drag & drop the respective file to the drop zone in the webpage and the hash calculation
  is starting automatically. Or click into the drop zone to select the file via a file open dialog.</li>
  <li>&nbsp;</li>
  <li><a href="http://onlinemd5.com/" title="OnlineMD5">OnlineMD5</a><br />
  The service is easy to use. Just drag & drop the respective file to the drop zone in the webpage or open the file dialog.
  Then choose SHA256 or MD5 as checksum type, insert the checksum from the file you got from <a href="index.html"
  title="Download checksum files for the downloaded file">download webpage</a>. Finally click on [Compare] to start the
  verification.</li>
  <li>&nbsp;</li>
  <li>If both hash values do not match, please see the <a href="#no_match" title="What to do when the values do not match?">
  section below</a>.</li>
</ul>

<p class="footer"><small><a href="#" title="Go to the start of the page">Start of page</a></small></p>
<br />

<h3 id="pgp_win">Verify on Windows</h3>

<p><b>How to verify with PGP/ASC signatures</b></p>
<br />

<ul>
  <li>There are a few tools available like <a href="https://www.gpg4win.org/download.html" title="Gpg4win">"Gpg4win"</a>,
  <a href="https://gnupg.org/download/" title="GnuPG by The GNU Project">"GnuPG"</a>
  just to name a few and not to prefer a specific tool. For the following instructions "GnuPG" will be used as an example
  to show for your convenience how the verification is working.</li>
  <li>&nbsp;</li>
  <li>For verifying signatures you need the software "GnuPg". This is a tool that runs not in the graphical mode but in the
  command prompt of Windows. Therefore you have to enter always the full path (default location after installation:
  <code>C:\Program Files\Gnu\GnuPg\gpg.exe</code>) until you add it to the <code>$PATH</code> system environment
  variable.</li>
  <li>&nbsp;</li>
  <li>Save the following file with your Internet browser to the location where the downloaded AOO and PGP/ASC file is
  stored:</li>
  <li><a href="https://downloads.apache.org/openoffice/KEYS" title="https://downloads.apache.org/openoffice/KEYS">
  https://downloads.apache.org/openoffice/KEYS</a></li>
  <li>Open the start menu and enter <code>cmd.exe</code> into the search box.</li>
  <li>Now change to the directory with the downloaded AOO, KEYS and PGP/ASC file, import and verify with the following
  commands:</li>
  <li><pre>cd &lt;path_to_AOO_and_KEYS_and_ASC_files&gt;</pre></li>
  <li><pre>C:\Program Files\Gnu\GnuPg\gpg.exe --import KEYS</pre></li>
  <li><pre>C:\Program Files\Gnu\GnuPg\gpg.exe --verify &lt;installation_file&gt;.asc</pre></li>
  <li>If the signature matches the file it is indicated with an "Good signature from &lt;Person who has created the
  signature&gt; statement. <br /> Otherwise with "BAD signature from ...".</li>
</ul>
<br />

<p id="hash_win"><b>How to verify SHA256 / MD5 hash values</b></p>
<br />

<ul>
  <li>There are several tools available like
  <a href="http://implbits.com/products/hashtab/" title="HashTab (by Implbits.com)">"HashTab"</a>,
  <a href="http://www.pc-tools.net/win32/md5sums/" title="MD5sums (by PC-Tools.Net)">"MD5sums"</a>,
  <a href="https://www.slavasoft.com/fsum/" title="FSUM (by SlavaSoft.com)">"FSUM"</a>,
  <a href="https://sourceforge.net/projects/quickhash/" title="Quick Hash GUI (by tedtechnology)">"Quick Hash GUI"</a>,
  <a href="https://kanguru.zendesk.com/entries/21747773-SHA256-Checksum-Utility" title="SHA256 Checksum Utility (by )">
  "SHA256 Checksum Utility"</a>,
  <a href="http://www.krylack.com/file-checksum-tool/" title="File Checksum Tool (by KRyLack Software)">
  "File Checksum Tool"</a>
  just to name a few and not to prefer a specific tool. For the following instructions "File Checksum Tool" will be used as
  an example to show for your convenience how the verification is working.</li>
  <li>&nbsp;</li>
  <li>Start the tool from where you have saved the downloaded file.</li>
  <li>Section "1) File to Verify": Insert the path and filename of the downloaded AOO file. The [Browse] button will
  help to locate it with the Windows Explorer.</li>
  <li>Section "2) Hashing Algorithm": Choose "SHA-256" or "MD5".</li>
  <li>Section "3) File Checksum": Click on [Calculate Hash].</li>
  <li>Section "4) Verify With": Paste the hash from the SHA256 / MD5 file you have downloaded. First you have to open it and
  copy the hash value.</li>
  <li>Finally, click on [Compare].</li>
  <li>&nbsp;</li>
  <li>When both hash values match a dialogbox shows "Checksums match". Otherwise "Checksums do not match".</li>
  <li>If they do not match, please see the <a href="#no_match" title="What to do when the values do not match?">
  section below</a>.</li>
</ul>

<p class="footer"><small><a href="#" title="Go to the start of the page">Start of page</a></small></p>
<br />

<h3 id="pgp_linux">Verify on Linux</h3>

<p><b>How to verify with PGP/ASC signatures</b></p>
<br />

<ul>
  <li>Open a terminal and change to the directory with the downloaded AOO and PGP/ASC file.</li>
  <li>Type in the following commands:</li>
  <li>&nbsp;</li>
  <li><pre>cd &lt;path_to_AOO_and_ASC_files&gt;</pre></li>
  <li><pre>wget https://downloads.apache.org/openoffice/KEYS</pre></li>
  <li><pre>gpg --import KEYS</pre></li>
  <li><pre>gpg --verify &lt;installation_file&gt;.asc</pre></li>
  <li>&nbsp;</li>
  <li>If the signature matches the file it is indicated with an "Good signature from &lt;Person who has created the
  signature&gt; statement. <br /> Otherwise with "BAD signature from ...".</li>
</ul>
<br />

<p id="hash_linux"><b>How to verify SHA256 / MD5 hash values</b></p>
<br />

<ul>
  <li>The instructions to compare SHA256 and MD5 hash values are very similar. Therefore both are mentioned together.</li>
  <li>&nbsp;</li>
  <li>Open a terminal and change to the directory with the downloaded AOO and SHA256 / MD5 file.</li>
  <li>Type in the following commands:</li>
  <li>&nbsp;</li>
  <li><pre>cd &lt;path_to_AOO_and_SHA256/MD5_files&gt;</pre></li>
  <li><pre>md5sum -c &lt;AOO file&gt;.tar.gz.md5</pre></li>
  <li>or</li>
  <li><pre>sha256sum -c &lt;AOO file&gt;.tar.gz.sha256</pre></li>
  <li>&nbsp;</li>
  <li>If the hash matches this is indicated by "&lt;AOO file&gt;.tar.gz: OK".
  <br />Otherwise "WARNING: 1 of 1 computed checksum did NOT match".</li>
  <li>If they do not match, please see the <a href="#no_match" title="What to do when the values do not match?">
  section below</a>.</li>
</ul>

<p class="footer"><small><a href="#" title="Go to the start of the page">Start of page</a></small></p>
<br />

<h3 id="pgp_mac">Verify on Mac OS</h3>

<p><b>How to verify with PGP/ASC signatures</b></p>
<br />

<ul>
  <li>A requirement is that you have installed <a href="https://gpgtools.org/">GnuPG</a>.</li>
  <li>Open a terminal (usually from here: "/Applications/Utilities") and change to the directory with the downloaded
  AOO and PGP/ASC file.</li>
  <li>Type in the following commands:</li>
  <li>&nbsp;</li>
  <li><pre>cd &lt;path_to_AOO_and_ASC_files&gt;</pre></li>
  <li><pre>curl https://downloads.apache.org/openoffice/KEYS -o KEYS</pre></li>
  <li><pre>gpg --import KEYS</pre></li>
  <li><pre>gpg --verify &lt;installation_file&gt;.asc</pre></li>
  <li>&nbsp;</li>
  <li>If the signature matches the file it is indicated with an "Good signature from &lt;Person who has created the
  signature&gt; statement. <br /> Otherwise with "BAD signature from ...".</li>
</ul>
<br />

<p id="hash_mac"><b>How to verify SHA256 / MD5 hash values</b></p>
<br />

<ul>
  <li>The instructions to compare SHA256 and MD5 hash values are very similar. Therefore both are mentioned together.</li>
  <li>&nbsp;</li>
  <li>Open a terminal (usually from here: "/Applications/Utilities").</li>
  <li>Type in the following commands:</li>
  <li>&nbsp;</li>
  <li><pre>cd &lt;path_to_AOO_and_SHA256/MD5_files&gt;</pre></li>
  <li><pre>openssl dgst -md5 &lt;AOO file&gt;.dmg</pre></li>
  <li><pre>cat &lt;MD5 file&gt;.md5</pre></li>
  <li>or</li>
  <li><pre>openssl dgst -sha256 &lt;AOO file&gt;.dmg</pre></li>
  <li><pre>cat &lt;SHA256 file&gt;.sha256</pre></li>
  <li>&nbsp;</li>
  <li>Now compare the hash generated by OpenSSL with the value in the file.</li>
  <li>If they do not match, please see the <a href="#no_match" title="What to do when the values do not match?">
  section below</a>.</li>
</ul>

<p class="footer"><small><a href="#" title="Go to the start of the page">Start of page</a></small></p>
<br />

<hr style="display: block;" />

<h2 id="no_match">What to do when the values do not match?</h2>

<ul>
  <li>If the values do not match, your downloaded AOO file is broken. Please try the download again, and recheck.</li>
  <li>If the check still fails, try another browser if possible. If you are using a proxy server to get connected to the
  Internet try to disable this if your Internet Service Provider is allowing this. Or enable it if it is disabled at the
  moment. Please consult the relevant help topics for the used Internet browser where to find this setting. Finally try
  to download again, and recheck.</li>
  <li>If you still get no matching values and you are sure it is not caused by an error during downloading, please
  notify the Apache OpenOffice project. Before doing this, make sure you have the following information at hand:<br /><br />
  <b>1)</b> The exact file name of the downloaded installation file.<br />
  <b>2)</b> The value of the downloaded signature/hash file.<br />
  <b>3)</b> The processed signature/hash from your computer.<br />
  <b>4)</b> The exact size of the installation file in byte.<br />
  <b>5)</b> Have you used a proxy server (yes/no)?<br />
  <b>6)</b> The exact URL from the server from where the files was downloaded.<br /><br /></li>
  <li>With this information send a mail via the following ways:</li>
  <li><a href="mailto:users@openoffice.apache.org"
  title="User's mailing list (to receive answers you need to be subscribed)">User's mailing list</a>&nbsp;<b>*)</b></li>
  <li><a href="https://forum.openoffice.org/" title="User forums (different languages)">
  User forums (different languages)</a></li>
</ul>

<p><b>*)</b> Please note that all mails go to a public mailing list, not an individual person. Mails will be archived and
can be accessed also by other users. To receive answers, you will need to subscribe to the mailing list before sending
mails. For instructions, see: <a href="https://openoffice.apache.org/mailing-lists.html"
title="Learn more about how to use mailing lists">Learn more about how to use mailing lists</a>.</p>

<p class="footer"><small><a href="#" title="Go to the start of the page">Start of page</a></small></p>
<br />

<hr style="display: block;" />

<h2 id="notes">Important Notes</h2>

<h3>Report broken links</h3>

<p>Please report any broken link or things you think that needs to be corrected on this webpage by sending a mail to:
<a href="mailto:dev@openoffice.apache.org&#63;subject=Possible%20broken%20link&#58;%20Checksums"
title="Development mailing list (to receive answers you need to be subscribed)">
Development mailing list</a>.&nbsp;<b>*)</b></p>

<h3>Where to get help when I have a problem?</h3>

<p>If you encounter problems with installation or using Apache OpenOffice, please contact us via the following ways:</p>
<ul>
  <li><a href="mailto:users@openoffice.apache.org"
  title="User's mailing list (to receive answers you need to be subscribed)">User's mailing list</a>&nbsp;<b>*)</b></li>
  <li><a href="https://forum.openoffice.org" title="User forums (different languages)">
  User forums (different languages)</a></li>
</ul>
<br />

<p><b>*)</b> Please note that all mails go to a public mailing list, not an individual person. Mails will be archived and
can be accessed also by other users. To receive answers, you will need to subscribe to the mailing list before sending
mails. For instructions, see: <a href="https://openoffice.apache.org/mailing-lists.html"
title="Learn more about how to use mailing lists">Learn more about how to use mailing lists</a>.</p>

<p class="footer"><small><a href="#" title="Go to the start of the page">Start of page</a></small></p>

</body>
</html>
