#Licensed to the Apache Software Foundation (ASF) under one
#or more contributor license agreements.  See the NOTICE file
#distributed with this work for additional information
#regarding copyright ownership.  The ASF licenses this file
#to you under the Apache License, Version 2.0 (the
#"License"); you may not use this file except in compliance
#with the License.  You may obtain a copy of the License at
#http://www.apache.org/licenses/LICENSE-2.0
#Unless required by applicable law or agreed to in writing,
#software distributed under the License is distributed on an
#"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#KIND, either express or implied.  See the License for the
#specific language governing permissions and limitations
#under the License.
msgid ""
msgstr ""
"Project-Id-Version: 0\n"
"POT-Creation-Date: 2013-02-02T20:12:00\n"
"PO-Revision-Date: 2013-02-02T20:12:00\n"
"Last-Translator: Automatically generated\n"
"Language-Team: None\n"
"MIME-Version: 1.0\n"
"Content-Type: application/x-publican; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#. Tag: title
#, no-c-format
msgid "Verifying the downloaded release"
msgstr ""

#. Tag: para
#, no-c-format
msgid "There are a number of mechanisms to check the authenticity and validity of a downloaded release."
msgstr ""

#. Tag: title
#, no-c-format
msgid "Getting the KEYS"
msgstr ""

#. Tag: para
#, no-c-format
msgid "To enable you to verify the GPG signature, you will need to download the <ulink url=\"http://www.apache.org/dist/incubator/cloudstack/KEYS\">KEYS</ulink> file."
msgstr ""

#. Tag: para
#, no-c-format
msgid "You next need to import those keys, which you can do by running the following command:"
msgstr ""

#. Tag: programlisting
#, no-c-format
msgid "<prompt>#</prompt> <command>gpg</command> --import KEYS"
msgstr ""

#. Tag: title
#, no-c-format
msgid "GPG"
msgstr ""

#. Tag: para
#, no-c-format
msgid "The &PRODUCT; project provides a detached GPG signature of the release. To check the signature, run the following command:"
msgstr ""

#. Tag: programlisting
#, no-c-format
msgid "<prompt>$</prompt> <command>gpg</command> --verify apache-cloudstack-4.0.0-incubating-src.tar.bz2.asc"
msgstr ""

#. Tag: para
#, no-c-format
msgid "If the signature is valid you will see a line of output that contains 'Good signature'."
msgstr ""

#. Tag: title
#, no-c-format
msgid "MD5"
msgstr ""

#. Tag: para
#, no-c-format
msgid "In addition to the cryptographic signature, &PRODUCT; has an MD5 checksum that you can use to verify the download matches the release. You can verify this hash by executing the following command:"
msgstr ""

#. Tag: programlisting
#, no-c-format
msgid "<prompt>$</prompt> <command>gpg</command> --print-md MD5 apache-cloudstack-4.0.0-incubating-src.tar.bz2 | <command>diff</command> - apache-cloudstack-4.0.0-incubating-src.tar.bz2.md5"
msgstr ""

#. Tag: para
#, no-c-format
msgid "If this successfully completes you should see no output. If there is any output from them, then there is a difference between the hash you generated locally and the hash that has been pulled from the server."
msgstr ""

#. Tag: title
#, no-c-format
msgid "SHA512"
msgstr ""

#. Tag: para
#, no-c-format
msgid "In addition to the MD5 hash, the &PRODUCT; project provides a SHA512 cryptographic hash to aid in assurance of the validity of the downloaded release. You can verify this hash by executing the following command:"
msgstr ""

#. Tag: programlisting
#, no-c-format
msgid "<prompt>$</prompt> <command>gpg</command> --print-md SHA512 apache-cloudstack-4.0.0-incubating-src.tar.bz2 | <command>diff</command> - apache-cloudstack-4.0.0-incubating-src.tar.bz2.sha"
msgstr ""

#. Tag: para
#, no-c-format
msgid "If this command successfully completes you should see no output. If there is any output from them, then there is a difference between the hash you generated locally and the hash that has been pulled from the server."
msgstr ""

