openssl/hobble-openssl

53 lines
1.5 KiB
Bash
Executable File

#!/bin/sh
# Clean out patent-protected code.
# RSA: 4,405,829 20/09/2000
# MDC-2: 4,908,861 13/03/2007
# IDEA: 5,214,703 25/05/2010
# RC5: 5,724,428 03/03/2015
# RSA's patented parts.
function nullify_rsa() {
echo Removing patented parts from crypto/rsa/rsa_eay.c
cat crypto/rsa/rsa_eay.c | \
awk 'BEGIN {ech=1;} \
/#if/ {if(ech < 1) ech--;} \
/#ifndef.*RSA_NULL/ {ech--;} \
{if(ech>0) {;print $0};} \
/#endif/ {if(ech < 1) ech++;}' > crypto/rsa/nullrsa_eay.c && \
mv crypto/rsa/nullrsa_eay.c crypto/rsa/rsa_eay.c
rm -fr crypto/rsa/asm
}
if [ `date +%Y%m%d` -lt 20000921 ] ; then
nullify_rsa
fi
# Bah. Assembler is hard to port.
(find crypto/{idea,mdc2,rc5,md2}/asm -type f | xargs -r rm -fv)
# IDEA, MDC2 and RC5.
for c in `find crypto/{idea,mdc2,rc5,md2} -name "*.c" -a \! -name "*test*" -type f` ; do
echo Destroying $c
cat /dev/null > $c
done
for c in `find crypto/evp -name "*_r5.c" -o -name "*_i.c" -o -name "*_mdc2.c" -o -name "*_md2.c"`; do
echo Destroying $c
cat /dev/null > $c
done
for h in `find include crypto ssl apps test -name "*.h"` ; do
echo Removing IDEA, MDC2, MD2 and RC5 references from $h
cat $h | \
awk 'BEGIN {ech=1;} \
/#[ \t]*if/ {if(ech < 1) ech--;} \
/#[ \t]*ifndef.*NO_IDEA/ {ech--;} \
/#[ \t]*ifndef.*NO_MDC2/ {ech--;} \
/#[ \t]*ifndef.*NO_MD2/ {ech--;} \
/#[ \t]*ifndef.*NO_RC5/ {ech--;} \
{if(ech>0) {;print $0};} \
/#endif/ {if(ech < 1) ech++;}' > $h.hobbled && \
mv $h.hobbled $h
done
# Make the makefiles happy.
touch crypto/rc5/asm/rc5-586.pl