Author: pierre
Date: Wed Jun 25 12:46:52 2014
New Revision: 2920

Log:
Regenerate cacerts patch for icedtea

Added:
   trunk/icedtea/icedtea-2.5.0-add_cacerts-1.patch

Added: trunk/icedtea/icedtea-2.5.0-add_cacerts-1.patch
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ trunk/icedtea/icedtea-2.5.0-add_cacerts-1.patch     Wed Jun 25 12:46:52 
2014        (r2920)
@@ -0,0 +1,557 @@
+Submitted By: Fernando de Oliveira <famobr at yahoo dot com dot br>
+Date: 2013-07-13
+Initial Package Version: 2.4.1
+Update:  Modify instruction creating certificates to use LC_ALL=C
+         2013-07-20         
+         Regenerate for version 2.5.0 (P. Labastie, 2014-06-25)
+Upstream Status: Not Submitted
+Origin: DJ Lucas <dj AT linuxfromscratch DOT org>, Bruce Dubbs (mydate 
function)
+Description: Allows the build to generate a valid JDK cacerts file using the
+             system installed CA certificates.
+
+diff -Naur icedtea-2.5.0/acinclude.m4 icedtea-2.5.0.new/acinclude.m4
+--- icedtea-2.5.0/acinclude.m4 2014-06-14 02:08:14.982041984 +0200
++++ icedtea-2.5.0.new/acinclude.m4     2014-06-24 21:31:27.837026211 +0200
+@@ -322,6 +322,178 @@
+   AM_CONDITIONAL(OPENJDK_SRC_DIR_HARDLINKABLE, test 
"x${openjdk_src_dir_hardlinkable}" = "xyes")
+ ])
+ 
++AC_DEFUN([IT_WITH_CACERTS],
++[
++  AC_MSG_CHECKING([whether a cacerts file is provided for distribution])
++  AC_ARG_WITH([cacerts],
++              [AS_HELP_STRING(--with-cacerts=FILE,specify the location of a 
pre-generated cacerts file for distribution)],
++  [
++    if test -f "${withval}"; then
++      CACERTS_FILE="${withval}"
++      cacerts_file_set=yes
++    else
++      CACERTS_FILE=
++    fi
++  ],
++  [
++    CACERTS_FILE=
++  ])
++  if test x"${CACERTS_FILE}" = "x"; then
++    cacerts_file_set=no
++    CACERTS_FILE="no"
++  fi
++  AC_MSG_RESULT(${CACERTS_FILE})
++  AC_SUBST(CACERTS_FILE)
++  AM_CONDITIONAL([CACERTS_FILE_SET], test x"${cacerts_file_set}" = "xyes")
++])
++
++AC_DEFUN([IT_GENERATE_CACERTS],
++[
++  AC_REQUIRE([IT_WITH_CACERTS])
++  AC_MSG_CHECKING([whether to generate a cacerts file for distribution])
++  AC_ARG_ENABLE([cacerts-generation],
++              [AS_HELP_STRING(--enable-cacerts-generation, generate a cacerts 
file for distribution [[default=auto]])],
++  [
++    case "${enableval}" in
++      no)
++        generate_cacerts=no
++        ;;
++      *)
++        generate_cacerts=yes
++        ;;
++    esac
++  ],
++  [
++    if test x"${cacerts_file_set}" = "xno"; then
++      generate_cacerts=forced
++    else
++      if test x"${cacerts_file_set}" = "xyes"; then
++        generate_cacerts=no
++      else
++        generate_cacerts=yes
++      fi
++    fi
++  ])
++  AC_MSG_RESULT([$generate_cacerts])
++  AM_CONDITIONAL([GENERATE_CACERTS], test x"${generate_cacerts}" = "xyes" -o 
x"${generate_cacerts}" = "xforced")
++])
++
++AC_DEFUN([IT_GET_LOCAL_CACERTS],
++[
++  AC_MSG_CHECKING([for a local x509 certificate directory])
++  AC_ARG_WITH([ca-dir],
++              [AS_HELP_STRING(--with-ca-dir=DIR, specify a top-level local 
x509 certificate directory for cacerts generation)],
++  [
++    if test -d "${withval}"; then
++      CADIR="${withval}"
++    else
++      if test x"${withval}" = "xno"; then
++        CADIR=no
++      else
++        CADIR=
++      fi
++    fi
++  ],
++  [
++    CADIR=
++  ])
++  if test x"${CADIR}" = "x"; then
++    for dir in /etc/pki/tls/certs \
++      /usr/share/ca-certificates \
++      /etc/ssl/certs \
++      /etc/certs ; do
++        if test -d "${dir}"; then
++          CADIR="${dir}"
++          break
++        fi
++    done
++    if test x"${CADIR}" = "x"; then
++      CADIR=no
++    fi
++  fi
++  AC_MSG_RESULT(${CADIR})
++  AC_SUBST(CADIR)
++
++  AC_MSG_CHECKING([for a local x509 certificate file])
++  AC_ARG_WITH([ca-file],
++              [AS_HELP_STRING(--with-ca-file=FILE, specify a local x509 
certificate file for cacerts generation)],
++  [
++    if test -f "${withval}"; then
++      CAFILE="${withval}"
++    else
++      if test x"${withval}" = "xno"; then
++        CAFILE=no
++      else
++        CAFILE=
++      fi
++    fi
++  ],
++  [
++    CAFILE=
++  ])
++  if test x"${CAFILE}" = "x"; then
++    for file in /etc/pki/tls/certs/ca-bundle.crt \
++      /etc/ssl/certs/ca-bundle.crt \
++      /etc/ssl/ca-bundle.crt \
++      /etc/ca-bundle.crt ; do
++        if test -e "${file}"; then
++          CAFILE=$file
++          break
++        fi
++    done
++    if test x"${CAFILE}" = "x"; then
++      CAFILE=no
++    fi
++  fi
++  AC_MSG_RESULT(${CAFILE})
++  AC_SUBST(CAFILE)
++  if test "${CADIR}x" = "nox" -a "${CAFILE}x" = "nox"; then
++    AC_MSG_ERROR([You must supply a cacerts file or a list of CA certificates 
to generate one.])
++  fi
++])
++
++AC_DEFUN([IT_FIND_OPENSSL],
++[
++  AC_MSG_CHECKING([for openssl])
++  AC_ARG_WITH([openssl],
++              [AS_HELP_STRING(--with-openssl=PATH, specify the path of the 
openssl utility)],
++  [
++    if test -x "${withval}" -a -f "${withval}"; then
++      OPENSSL="${withval}"
++    else
++      if test x"${withval}" = "xno"; then
++        OPENSSL="no"
++      else
++        OPENSSL=
++      fi
++    fi
++  ],
++  [
++    OPENSSL=
++  ])
++  if test x"${OPENSSL}" = "x"; then
++
++    OPENSSL=$(
++      IFS=":"
++      for dir in ${withval}:${PATH}; do
++        if test -x "${dir}/openssl" -a -f "${dir}/openssl"; then
++          FOUNDSSL="${dir}/openssl"
++          break
++        fi
++      done
++      echo "${FOUNDSSL}"
++      )
++    if test x"${OPENSSL}" = "x"; then
++      OPENSSL=no
++    fi
++  fi
++  AC_MSG_RESULT(${OPENSSL})
++  AC_SUBST(OPENSSL)
++  if test x"${OPENSSL}" = "xno"; then
++    AC_MSG_ERROR([You must supply a cacerts file or have openssl available to 
generate one.])
++  fi
++])
++
+ AC_DEFUN_ONCE([IT_CAN_HARDLINK_TO_SOURCE_TREE],
+ [
+   AC_CACHE_CHECK([if we can hard link rather than copy from 
${abs_top_srcdir}], it_cv_hardlink_src, [
+diff -Naur icedtea-2.5.0/configure.ac icedtea-2.5.0.new/configure.ac
+--- icedtea-2.5.0/configure.ac 2014-06-14 02:08:14.982041984 +0200
++++ icedtea-2.5.0.new/configure.ac     2014-06-24 21:33:33.413029093 +0200
+@@ -67,6 +67,15 @@
+ AM_CONDITIONAL([ENABLE_DOCS], [test x$ENABLE_DOCS = xyes])
+ AC_MSG_RESULT(${ENABLE_DOCS})
+ 
++IT_GENERATE_CACERTS
++
++if test x"${generate_cacerts}" = "xyes" -o x"${generate_cacerts}" = "xforced";
++then
++    IT_GET_LOCAL_CACERTS
++    IT_FIND_OPENSSL
++fi
++
++
+ IT_GET_PKGVERSION
+ IT_GET_LSB_DATA
+ 
+diff -Naur icedtea-2.5.0/Makefile.am icedtea-2.5.0.new/Makefile.am
+--- icedtea-2.5.0/Makefile.am  2014-06-14 02:08:14.966041752 +0200
++++ icedtea-2.5.0.new/Makefile.am      2014-06-24 21:53:07.452056043 +0200
+@@ -786,7 +786,8 @@
+  clean-icedtea-debug-stage2 clean-icedtea-stage1 clean-add-zero 
clean-add-zero-debug \
+  clean-add-cacao clean-add-cacao-debug clean-rt clean-rewrite-rhino 
clean-rewriter \
+  clean-add-systemtap clean-add-systemtap-debug clean-add-nss 
clean-add-tzdata-support \
+- clean-add-tzdata-support-debug clean-cryptocheck
++ clean-add-tzdata-support-debug clean-cryptocheck \
++ clean-cacerts clean-cacerts-debug
+       if [ -e bootstrap ]; then \
+         rmdir bootstrap ; \
+       fi
+@@ -822,7 +823,8 @@
+       clean-add-tzdata-support-boot \
+       clean-check-crypto clean-check-crypto-debug clean-check-crypto-boot \
+       clean-add-archive clean-add-archive-debug clean-add-archive-boot 
clean-cryptocheck \
+-      clean-download-hotspot
++      clean-download-hotspot \
++      clean-cacerts clean-cacerts-debug
+ 
+ env:
+       @echo 'unset JAVA_HOME'
+@@ -1706,6 +1708,14 @@
+ if ENABLE_JAMVM
+       printf -- '-jamvm ALIASED_TO -server\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
+ endif
++if GENERATE_CACERTS
++      $(ARCH_PREFIX) $(MAKE) add-cacerts
++else
++if CACERTS_FILE_SET
++      $(ARCH_PREFIX) $(MAKE) add-cacerts
++endif
++endif
++
+       @echo "IcedTea is served:" $(BUILD_OUTPUT_DIR)
+       mkdir -p stamps
+       touch $@
+@@ -1816,6 +1826,14 @@
+ if ENABLE_JAMVM
+       printf -- '-jamvm ALIASED_TO -server\n' >> 
$(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg
+ endif
++if GENERATE_CACERTS
++      $(ARCH_PREFIX) $(MAKE) add-cacerts-debug
++else
++if CACERTS_FILE_SET
++      $(ARCH_PREFIX) $(MAKE) add-cacerts-debug
++endif
++endif
++
+       @echo "IcedTea (debug build) is served:" \
+         $(DEBUG_BUILD_OUTPUT_DIR)
+       mkdir -p stamps
+@@ -2059,6 +2077,69 @@
+       @echo "HotSpot is served:" $(BUILD_OUTPUT_DIR)/j2sdk-image
+ endif
+ 
++# CA Certs
++stamps/generate-cacerts.stamp:
++if GENERATE_CACERTS
++      if test -n "${CADIR}"; then \
++        sh scripts/mkcacerts.sh -d "${CADIR}" \
++          -k $(BUILD_OUTPUT_DIR)/j2sdk-image/bin/keytool \
++          -s $(OPENSSL) \
++          -o $(BUILD_OUTPUT_DIR)/j2re-image/lib/security/cacerts; \
++      else \
++        sh scripts/mkcacerts.sh -f "${CAFILE}" \
++          -k $(BUILD_OUTPUT_DIR)/j2sdk-image/bin/keytool \
++          -s $(OPENSSL) \
++          -o $(BUILD_OUTPUT_DIR)/j2re-image/lib/security/cacerts; \
++      fi
++endif
++      touch stamps/generate-cacerts.stamp
++
++stamps/add-cacerts.stamp: stamps/generate-cacerts.stamp
++if CACERTS_FILE_SET
++      cp $(CACERTS_FILE) $(BUILD_OUTPUT_DIR)/j2re-image/lib/security/cacerts
++endif
++      cp $(BUILD_OUTPUT_DIR)/j2re-image/lib/security/cacerts \
++         $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/security/cacerts
++      touch stamps/add-cacerts.stamp
++
++clean-cacerts:
++      rm -f $(BUILD_OUTPUT_DIR)/j2re-image/lib/security/cacerts
++      rm -f $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/security/cacerts
++      rm -f stamps/add-cacerts.stamp
++      rm -f stamps/generate-cacerts.stamp
++
++stamps/generate-cacerts-debug.stamp:
++if GENERATE_CACERTS
++      if test -n "${CADIR}"; then \
++        sh scripts/mkcacerts.sh -d "${CADIR}" \
++          -k $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/bin/keytool \
++          -s $(OPENSSL) \
++          -o $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/security/cacerts; \
++      else \
++        sh scripts/mkcacerts.sh -f "${CAFILE}" \
++          -k $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/bin/keytool \
++          -s $(OPENSSL) \
++          -o $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/security/cacerts; \
++      fi
++endif
++      touch stamps/generate-cacerts-debug.stamp
++
++stamps/add-cacerts-debug.stamp: stamps/generate-cacerts-debug.stamp
++if CACERTS_FILE_SET
++      cp $(CACERTS_FILE) 
$(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/security/cacerts
++endif
++      cp $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/security/cacerts \
++         $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/security/cacerts
++      touch stamps/add-cacerts-debug.stamp
++
++clean-cacerts-debug:
++      rm -f $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/security/cacerts
++      rm -f $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/security/cacerts
++      rm -f stamps/add-cacerts-debug.stamp
++      rm -f stamps/generate-cacerts-debug.stamp
++
++# end of CA Certs
++
+ # Rhino support
+ 
+ stamps/rewriter.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP)
+@@ -2557,6 +2638,10 @@
+ 
+ add-tzdata-support-debug: stamps/add-tzdata-support-debug.stamp
+ 
++add-cacerts: stamps/add-cacerts.stamp
++
++add-cacerts-debug: stamps/add-cacerts-debug.stamp
++
+ add-zero: stamps/add-zero.stamp
+ 
+ add-zero-debug: stamps/add-zero-debug.stamp
+diff -Naur icedtea-2.5.0/scripts/mkcacerts.sh 
icedtea-2.5.0.new/scripts/mkcacerts.sh
+--- icedtea-2.5.0/scripts/mkcacerts.sh 1970-01-01 01:00:00.000000000 +0100
++++ icedtea-2.5.0.new/scripts/mkcacerts.sh     2014-06-25 08:01:16.031893645 
+0200
+@@ -0,0 +1,207 @@
++#!/bin/sh
++# Simple script to extract x509 certificates and create a JRE cacerts file.
++
++function get_args()
++    {
++        if test -z "${1}" ; then
++            showhelp
++            exit 1
++        fi
++
++        while test -n "${1}" ; do
++            case "${1}" in
++                -f | --cafile)
++                    check_arg $1 $2
++                    CAFILE="${2}"
++                    shift 2
++                    ;;
++                -d | --cadir)
++                    check_arg $1 $2
++                    CADIR="${2}"
++                    shift 2
++                    ;;
++                -o | --outfile)
++                    check_arg $1 $2
++                    OUTFILE="${2}"
++                    shift 2
++                    ;;
++                -k | --keytool)
++                    check_arg $1 $2
++                    KEYTOOL="${2}"
++                    shift 2
++                    ;;
++                -s | --openssl)
++                    check_arg $1 $2
++                    OPENSSL="${2}"
++                    shift 2
++                    ;;
++                -h | --help)
++                    showhelp
++                    exit 0
++                    ;;
++                *)
++                    showhelp
++                    exit 1
++                    ;;
++            esac
++        done
++    }
++
++function check_arg()
++    {
++        echo "${2}" | grep -v "^-" > /dev/null
++        if [ -z "$?" -o ! -n "$2" ]; then
++            echo "Error:  $1 requires a valid argument."
++            exit 1
++        fi
++    }
++
++# The date binary is not reliable on 32bit systems for dates after 2038
++function mydate()
++    {
++        local y=$( echo $1 | cut -d" " -f4 )
++        local M=$( echo $1 | cut -d" " -f1 )
++        local d=$( echo $1 | cut -d" " -f2 )
++        local m
++
++        if [ ${d} -lt 10 ]; then d="0${d}"; fi
++
++        case $M in
++            Jan) m="01";;
++            Feb) m="02";;
++            Mar) m="03";;
++            Apr) m="04";;
++            May) m="05";;
++            Jun) m="06";;
++            Jul) m="07";;
++            Aug) m="08";;
++            Sep) m="09";;
++            Oct) m="10";;
++            Nov) m="11";;
++            Dec) m="12";;
++        esac
++
++        certdate="${y}${m}${d}"
++    }
++
++function showhelp()
++    {
++        echo "\`basename ${0}\` creates a valid cacerts file for use with 
IcedTea."
++        echo ""
++        echo "        -f  --cafile        The path to a file containing PEM 
formated CA"
++        echo "                            certificates.  May not be used with 
-d/--cadir."
++        echo "        -d  --cadir         The path to a diectory of PEM 
formatted CA"
++        echo "                            certificates.  May not be used with 
-f/--cafile."
++        echo "        -o  --outfile       The path to the output file."
++        echo ""
++        echo "        -k  --keytool       The path to the java keytool 
utility."
++        echo ""
++        echo "        -s  --openssl       The path to the openssl utility."
++        echo ""
++        echo "        -h  --help          Show this help message and exit."
++        echo ""
++        echo ""
++    }
++
++# Initialize empty variables so that the shell does not pollute the script
++CAFILE=""
++CADIR=""
++OUTFILE=""
++OPENSSL=""
++KEYTOOL=""
++certdate=""
++date=""
++today=$( date +%Y%m%d )
++
++# Process command line arguments
++get_args ${@}
++
++# Handle common errors
++if test "${CAFILE}x" == "x" -a "${CADIR}x" == "x" ; then
++    echo "ERROR!  You must provide an x509 certificate store!"
++    echo "\\'$(basename ${0}) --help\\' for more info."
++    echo ""
++    exit 1
++fi
++
++if test "${CAFILE}x" != "x" -a "${CADIR}x" != "x" ; then
++    echo "ERROR!  You cannot provide two x509 certificate stores!"
++    echo "\\'$(basename ${0}) --help\\' for more info."
++    echo ""
++    exit 1
++fi
++
++if test "${KEYTOOL}x" == "x" ; then
++    echo "ERROR!  You must provide a valid keytool program!"
++    echo "\\'$(basename ${0}) --help\\' for more info."
++    echo ""
++    exit 1
++fi
++
++if test "${OPENSSL}x" == "x" ; then
++    echo "ERROR!  You must provide a valid path to openssl!"
++    echo "\\'$(basename ${0}) --help\\' for more info."
++    echo ""
++    exit 1
++fi
++
++if test "${OUTFILE}x" == "x" ; then
++    echo "ERROR!  You must provide a valid output file!"
++    echo "\\'$(basename ${0}) --help\\' for more info."
++    echo ""
++    exit 1
++fi
++
++# Get on with the work
++
++# If using a CAFILE, split it into individual files in a temp directory
++if test "${CAFILE}x" != "x" ; then
++    TEMPDIR=\`mktemp -d\`
++    CADIR="${TEMPDIR}"
++
++    # Get a list of staring lines for each cert
++    CERTLIST=\`grep -n "^-----BEGIN" "${CAFILE}" | cut -d ":" -f 1\`
++
++    # Get a list of ending lines for each cert
++    ENDCERTLIST=\`grep -n "^-----END" "${CAFILE}" | cut -d ":" -f 1\`
++
++    # Start a loop
++    for certbegin in \`echo "${CERTLIST}"\` ; do
++        for certend in \`echo "${ENDCERTLIST}"\` ; do
++            if test "${certend}" -gt "${certbegin}"; then
++                break
++            fi
++        done
++        sed -n "${certbegin},${certend}p" "${CAFILE}" > 
"${CADIR}/${certbegin}.pem"
++        keyhash=\`${OPENSSL} x509 -noout -in "${CADIR}/${certbegin}.pem" 
-hash\`
++        echo "Generated PEM file with hash:  ${keyhash}."
++    done
++fi
++
++# Write the output file
++for cert in \`find "${CADIR}" -type f -name "*.pem" -o -name "*.crt"\`
++do
++
++    # Make sure the certificate date is valid...
++    date=$( ${OPENSSL} x509 -enddate -in "${cert}" -noout | sed 
's/^notAfter=//' )
++    mydate "${date}"
++    if test "${certdate}" -lt "${today}" ; then
++        echo "${cert} expired on ${certdate}! Skipping..."
++        unset date certdate
++        continue
++    fi
++    unset date certdate
++    ls "${cert}"
++    tempfile=\`mktemp\`
++    certbegin=\`grep -n "^-----BEGIN" "${cert}" | cut -d ":" -f 1\`
++    certend=\`grep -n "^-----END" "${cert}" | cut -d ":" -f 1\`
++    sed -n "${certbegin},${certend}p" "${cert}" > "${tempfile}"
++    echo yes | env LC_ALL=C "${KEYTOOL}" -import -alias \`basename 
"${cert}"\` -keystore \\
++                   "${OUTFILE}" -storepass 'changeit' -file "${tempfile}"
++    rm "${tempfile}"
++done
++
++if test "${TEMPDIR}x" != "x" ; then
++    rm -rf "${TEMPDIR}"
++fi
++exit 0
-- 
http://lists.linuxfromscratch.org/listinfo/patches
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to