HEX
Server: nginx/1.24.0
System: Linux nowruzgan 6.8.0-57-generic #59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64
User: babak (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/lib/dpkg/info/ca-certificates-java.postinst
#!/bin/sh
set -e

# use the locale C.UTF-8
unset LC_ALL
LC_CTYPE=C.UTF-8
export LC_CTYPE

storepass='changeit'
if [ -f /etc/default/cacerts ]; then
    . /etc/default/cacerts
fi

arch=`dpkg --print-architecture`
JAR=/usr/share/ca-certificates-java/ca-certificates-java.jar
CERTSDIR=/usr/share/ca-certificates
LOCALCERTSDIR=/usr/local/share/ca-certificates
ETCCERTSDIR=/etc/ssl/certs
CACERTS=$ETCCERTSDIR/java/cacerts

check_proc()
{
    if ! mountpoint -q /proc; then
        echo >&2 "the keytool command requires a mounted proc fs (/proc)."
        exit 1
    fi
}

convert_pkcs12_keystore_to_jks()
{
    check_proc
    if ! keytool -importkeystore \
                 -srckeystore /etc/ssl/certs/java/cacerts \
                 -destkeystore /etc/ssl/certs/java/cacerts.dpkg-new \
                 -srcstoretype PKCS12 \
                 -deststoretype JKS \
                 -srcstorepass "$storepass" \
                 -deststorepass "$storepass" \
                 -noprompt; then
        echo "failed to convert PKCS12 keystore to JKS" >&2
        exit 1
    fi

    # only update if /etc/default/cacerts allows
    if [ "$cacerts_updates" = "yes" ]; then
        mv -f /etc/ssl/certs/java/cacerts /etc/ssl/certs/java/cacerts.dpkg-old
        mv -f /etc/ssl/certs/java/cacerts.dpkg-new /etc/ssl/certs/java/cacerts
    fi
}

find_pem_files()
{
	find $ETCCERTSDIR -type l -name \*.pem | sort | while read symlink ; do
		case $(readlink "$symlink") in
			$CERTSDIR*|$LOCALCERTSDIR*)
				echo "$symlink"
				;;
		esac
	done
}

update_cacerts()
{
	if [ "$cacerts_updates" != "yes" ] || [ "$CACERT_UPDATES" = "disabled" ]; then
		echo "Updates of cacerts keystore are disabled."
		exit 0
	fi

	if ! which java >/dev/null; then
		echo "No JRE found. Skipping Java certificates setup."
		exit 0
	fi

	if ! java -version 2> /dev/null; then
		echo "Unable to execute Java. Skipping Java certificates setup."
		exit 0
	fi

	if [ -f /var/lib/ca-certificates-java/convert_pkcs12_keystore_to_jks ]; then
		convert_pkcs12_keystore_to_jks
		rm /var/lib/ca-certificates-java/convert_pkcs12_keystore_to_jks
	fi

	if [ -f /var/lib/ca-certificates-java/fresh ]; then
		>/var/lib/ca-certificates-java/fresh
		pem_files=$(find_pem_files)

		if [ -f "$CACERTS" ]; then
			check_proc

			# Java 8 does not have -cacerts option
			if java -version 2>&1 | grep "1.8" > /dev/null ;
			then
				castore="-keystore ${CACERTS}"
			else
				castore="-cacerts"
			fi

			cacerts_aliases=$(keytool ${castore} -storepass "$storepass" -list -rfc | sed -n 's/^Alias name: *debian://ip' | tr '\n' ' ')

			etc_ssl_certs_aliases=$(for pem in $pem_files ; do echo -n "$(basename "$pem" | tr A-Z a-z) "; done)
			for alias in $cacerts_aliases ; do
				case " $etc_ssl_certs_aliases " in
					*" ${alias} "*)
						: # keep
						;;
					*)
						echo "-${alias}" >> /var/lib/ca-certificates-java/fresh
						;;
				esac
			done
		fi

		for pem in $pem_files ; do
			echo "+${pem}" >> /var/lib/ca-certificates-java/fresh
		done
	fi

	if [ -s /var/lib/ca-certificates-java/fresh ]; then
		java -Xmx64m -jar $JAR -storepass "$storepass" < /var/lib/ca-certificates-java/fresh
	elif [ -s /var/lib/ca-certificates-java/pending ]; then
		java -Xmx64m -jar $JAR -storepass "$storepass" < /var/lib/ca-certificates-java/pending
	fi
	echo "done."

	rm -f /var/lib/ca-certificates-java/fresh
	rm -f /var/lib/ca-certificates-java/pending
}



if [ "$1" = "configure" ]; then
	if dpkg --compare-versions "$2" lt-nl "20210218" ; then
		# clean up misplaced symlinks from ancient versions (#688415)
		if [ -L /libnss3.so ]; then
			rm -v /libnss3.so
		fi
		if [ -L /libsoftokn3.so ]; then
			rm -v /libsoftokn3.so
		fi

		if [ -f /etc/default/cacerts ]; then
			chmod 0600 /etc/default/cacerts
		fi
	fi

	if dpkg --compare-versions "$2" lt-nl "20180516"; then
		if [ -e /etc/ssl/certs/java/cacerts ] && \
			[ "$(head -c4 /etc/ssl/certs/java/cacerts)" != "$(echo -en '\xfe\xed\xfe\xed')" ]; then
			touch /var/lib/ca-certificates-java/convert_pkcs12_keystore_to_jks
		fi
	fi

	# older versions may not have received all updates from ca-certificates
	if dpkg --compare-versions "$2" lt-nl "20210218" ; then
		touch /var/lib/ca-certificates-java/fresh
	fi

	# initial install
	if [ -z "$2" ]; then
		touch /var/lib/ca-certificates-java/fresh
	fi

	update_cacerts
fi

if [ "$1" = "triggered" ]; then
	case " $2 " in
		*" update-ca-certificates-java-fresh "*)
			touch /var/lib/ca-certificates-java/fresh
			;;
	esac

	if [ ! -f $CACERTS ]; then
		touch /var/lib/ca-certificates-java/fresh
	fi

	update_cacerts
fi