⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mk1mf.pl

📁 一个用于点对点传输加密的工具包源码
💻 PL
📖 第 1 页 / 共 2 页
字号:
open(IN,"<$infile") || die "unable to open $infile:$!\n";$_=<IN>;for (;;)	{	chop;	($key,$val)=/^([^=]+)=(.*)/;	if ($key eq "RELATIVE_DIRECTORY")		{		if ($lib ne "")			{			$uc=$lib;			$uc =~ s/^lib(.*)\.a/$1/;			$uc =~ tr/a-z/A-Z/;			$lib_nam{$uc}=$uc;			$lib_obj{$uc}.=$libobj." ";			}		last if ($val eq "FINISHED");		$lib="";		$libobj="";		$dir=$val;		}	if ($key eq "TEST")		{ $test.=&var_add($dir,$val); }	if (($key eq "PROGS") || ($key eq "E_OBJ"))		{ $e_exe.=&var_add($dir,$val); }	if ($key eq "LIB")		{		$lib=$val;		$lib =~ s/^.*\/([^\/]+)$/$1/;		}	if ($key eq "EXHEADER")		{ $exheader.=&var_add($dir,$val); }	if ($key eq "HEADER")		{ $header.=&var_add($dir,$val); }	if ($key eq "LIBOBJ")		{ $libobj=&var_add($dir,$val); }	if (!($_=<IN>))		{ $_="RELATIVE_DIRECTORY=FINISHED\n"; }	}close(IN);# Strip of trailing ' 'foreach (keys %lib_obj) { $lib_obj{$_}=&clean_up_ws($lib_obj{$_}); }$test=&clean_up_ws($test);$e_exe=&clean_up_ws($e_exe);$exheader=&clean_up_ws($exheader);$header=&clean_up_ws($header);# First we strip the exheaders from the headers listforeach (split(/\s+/,$exheader)){ $h{$_}=1; }foreach (split(/\s+/,$header))	{ $h.=$_." " unless $h{$_}; }chop($h); $header=$h;$defs.=&do_defs("HEADER",$header,"\$(INCL_D)",".h");$rules.=&do_copy_rule("\$(INCL_D)",$header,".h");$defs.=&do_defs("EXHEADER",$exheader,"\$(INCO_D)",".h");$rules.=&do_copy_rule("\$(INCO_D)",$exheader,".h");$defs.=&do_defs("T_OBJ",$test,"\$(OBJ_D)",$obj);$rules.=&do_compile_rule("\$(OBJ_D)",$test,"\$(APP_CFLAGS)");$defs.=&do_defs("E_OBJ",$e_exe,"\$(OBJ_D)",$obj);$rules.=&do_compile_rule("\$(OBJ_D)",$e_exe,'-DMONOLITH $(APP_CFLAGS)');foreach (values %lib_nam)	{	$lib_obj=$lib_obj{$_};	local($slib)=$shlib;	$slib=0 if ($_ eq "RSAGLUE");	if (($_ eq "SSL") && $no_ssl2 && $no_ssl3)		{		$rules.="\$(O_SSL):\n\n"; 		next;		}	if (($_ eq "RSAGLUE") && $no_rsa)		{		$rules.="\$(O_RSAGLUE):\n\n"; 		next;		}	if (($bn_asm_obj ne "") && ($_ eq "CRYPTO"))		{		$lib_obj =~ s/\s\S*\/bn_asm\S*/ \$(BN_ASM_OBJ)/;		$rules.=&do_asm_rule($bn_asm_obj,$bn_asm_src);		}	if (($bnco_asm_obj ne "") && ($_ eq "CRYPTO"))		{		$lib_obj .= "\$(BNCO_ASM_OBJ)";		$rules.=&do_asm_rule($bnco_asm_obj,$bnco_asm_src);		}	if (($des_enc_obj ne "") && ($_ eq "CRYPTO"))		{		$lib_obj =~ s/\s\S*des_enc\S*/ \$(DES_ENC_OBJ)/;		$lib_obj =~ s/\s\S*\/fcrypt_b\S*\s*/ /;		$rules.=&do_asm_rule($des_enc_obj,$des_enc_src);		}	if (($bf_enc_obj ne "") && ($_ eq "CRYPTO"))		{		$lib_obj =~ s/\s\S*\/bf_enc\S*/ \$(BF_ENC_OBJ)/;		$rules.=&do_asm_rule($bf_enc_obj,$bf_enc_src);		}	if (($cast_enc_obj ne "") && ($_ eq "CRYPTO"))		{		$lib_obj =~ s/(\s\S*\/c_enc\S*)/ \$(CAST_ENC_OBJ)/;		$rules.=&do_asm_rule($cast_enc_obj,$cast_enc_src);		}	if (($rc4_enc_obj ne "") && ($_ eq "CRYPTO"))		{		$lib_obj =~ s/\s\S*\/rc4_enc\S*/ \$(RC4_ENC_OBJ)/;		$rules.=&do_asm_rule($rc4_enc_obj,$rc4_enc_src);		}	if (($rc5_enc_obj ne "") && ($_ eq "CRYPTO"))		{		$lib_obj =~ s/\s\S*\/rc5_enc\S*/ \$(RC5_ENC_OBJ)/;		$rules.=&do_asm_rule($rc5_enc_obj,$rc5_enc_src);		}	if (($md5_asm_obj ne "") && ($_ eq "CRYPTO"))		{		$lib_obj =~ s/\s(\S*\/md5_dgst\S*)/ $1 \$(MD5_ASM_OBJ)/;		$rules.=&do_asm_rule($md5_asm_obj,$md5_asm_src);		}	if (($sha1_asm_obj ne "") && ($_ eq "CRYPTO"))		{		$lib_obj =~ s/\s(\S*\/sha1dgst\S*)/ $1 \$(SHA1_ASM_OBJ)/;		$rules.=&do_asm_rule($sha1_asm_obj,$sha1_asm_src);		}	if (($rmd160_asm_obj ne "") && ($_ eq "CRYPTO"))		{		$lib_obj =~ s/\s(\S*\/rmd_dgst\S*)/ $1 \$(RMD160_ASM_OBJ)/;		$rules.=&do_asm_rule($rmd160_asm_obj,$rmd160_asm_src);		}	$defs.=&do_defs(${_}."OBJ",$lib_obj,"\$(OBJ_D)",$obj);	$lib=($slib)?" \$(SHLIB_CFLAGS)":" \$(LIB_CFLAGS)";	$rules.=&do_compile_rule("\$(OBJ_D)",$lib_obj{$_},$lib);	}$defs.=&do_defs("T_EXE",$test,"\$(TEST_D)",$exep);foreach (split(/\s+/,$test))	{	$t=&bname($_);	$tt="\$(OBJ_D)${o}$t${obj}";	$rules.=&do_link_rule("\$(TEST_D)$o$t$exep",$tt,"\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)");	}$rules.= &do_lib_rule("\$(SSLOBJ)","\$(O_SSL)",$ssl,$shlib,"\$(SO_SSL)");$rules.= &do_lib_rule("\$(RSAGLUEOBJ)","\$(O_RSAGLUE)",$RSAglue,0,"")	unless $no_rsa;$rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)");$rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)");print $defs;if ($platform eq "linux-elf") {    print <<"EOF";# Generate perlasm output files%.cpp:	(cd \$(\@D)/..; PERL=perl make -f Makefile.ssl asm/\$(\@F))EOF}print "###################################################################\n";print $rules;################################################ strip off any trailing .[och] and append the relative directory# also remembering to do nothing if we are in one of the dropped# directoriessub var_add	{	local($dir,$val)=@_;	local(@a,$_,$ret);	return("") if $no_idea && $dir =~ /\/idea/;	return("") if $no_rc2  && $dir =~ /\/rc2/;	return("") if $no_rc4  && $dir =~ /\/rc4/;	return("") if $no_rc5  && $dir =~ /\/rc5/;	return("") if $no_rsa  && $dir =~ /\/rsa/;	return("") if $no_rsa  && $dir =~ /^rsaref/;	return("") if $no_dsa  && $dir =~ /\/dsa/;	return("") if $no_dh   && $dir =~ /\/dh/;	if ($no_des && $dir =~ /\/des/)		{		if ($val =~ /read_pwd/)			{ return("$dir/read_pwd "); }		else			{ return(""); }		}	return("") if $no_mdc2 && $dir =~ /\/mdc2/;	return("") if $no_sock && $dir =~ /\/proxy/;	return("") if $no_bf   && $dir =~ /\/bf/;	return("") if $no_cast && $dir =~ /\/cast/;	$val =~ s/^\s*(.*)\s*$/$1/;	@a=split(/\s+/,$val);	grep(s/\.[och]$//,@a);	@a=grep(!/^e_.*_3d$/,@a) if $no_des;	@a=grep(!/^e_.*_d$/,@a) if $no_des;	@a=grep(!/^e_.*_i$/,@a) if $no_idea;	@a=grep(!/^e_.*_r2$/,@a) if $no_rc2;	@a=grep(!/^e_.*_r5$/,@a) if $no_rc5;	@a=grep(!/^e_.*_bf$/,@a) if $no_bf;	@a=grep(!/^e_.*_c$/,@a) if $no_cast;	@a=grep(!/^e_rc4$/,@a) if $no_rc4;	@a=grep(!/(^s2_)|(^s23_)/,@a) if $no_ssl2;	@a=grep(!/(^s3_)|(^s23_)/,@a) if $no_ssl3;	@a=grep(!/(_sock$)|(_acpt$)|(_conn$)|(^pxy_)/,@a) if $no_sock;	@a=grep(!/(^md2)|(_md2$)/,@a) if $no_md2;	@a=grep(!/(^md4)|(_md4$)/,@a) if $no_md4;	@a=grep(!/(^md5)|(_md5$)/,@a) if $no_md5;	@a=grep(!/(rmd)|(ripemd)/,@a) if $no_rmd160;	@a=grep(!/(^d2i_r_)|(^i2d_r_)/,@a) if $no_rsa;	@a=grep(!/(^p_open$)|(^p_seal$)/,@a) if $no_rsa;	@a=grep(!/(^pem_seal$)/,@a) if $no_rsa;	@a=grep(!/(m_dss$)|(m_dss1$)/,@a) if $no_dsa;	@a=grep(!/(^d2i_s_)|(^i2d_s_)|(_dsap$)/,@a) if $no_dsa;	@a=grep(!/^n_pkey$/,@a) if $no_rsa || $no_rc4;	@a=grep(!/_dhp$/,@a) if $no_dh;	@a=grep(!/(^sha[^1])|(_sha$)|(m_dss$)/,@a) if $no_sha;	@a=grep(!/(^sha1)|(_sha1$)|(m_dss1$)/,@a) if $no_sha1;	@a=grep(!/_mdc2$/,@a) if $no_mdc2;	@a=grep(!/(^rsa$)|(^genrsa$)/,@a) if $no_rsa;	@a=grep(!/(^dsa$)|(^gendsa$)|(^dsaparam$)/,@a) if $no_dsa;	@a=grep(!/^gendsa$/,@a) if $no_sha1;	@a=grep(!/(^dh$)|(^gendh$)/,@a) if $no_dh;	@a=grep(!/(^dh)|(_sha1$)|(m_dss1$)/,@a) if $no_sha1;	grep($_="$dir/$_",@a);	@a=grep(!/(^|\/)s_/,@a) if $no_sock;	@a=grep(!/(^|\/)bio_sock/,@a) if $no_sock;	$ret=join(' ',@a)." ";	return($ret);	}# change things so that each 'token' is only separated by one spacesub clean_up_ws	{	local($w)=@_;	$w =~ s/^\s*(.*)\s*$/$1/;	$w =~ s/\s+/ /g;	return($w);	}sub do_defs	{	local($var,$files,$location,$postfix)=@_;	local($_,$ret,$pf);	local(*OUT,$tmp,$t);	$files =~ s/\//$o/g if $o ne '/';	$ret="$var="; 	$n=1;	$Vars{$var}.="";	foreach (split(/ /,$files))		{		$orig=$_;		$_=&bname($_) unless /^\$/;		if ($n++ == 2)			{			$n=0;			$ret.="\\\n\t";			}		if (($_ =~ /bss_file/) && ($postfix eq ".h"))			{ $pf=".c"; }		else	{ $pf=$postfix; }		if ($_ =~ /BN_ASM/)	{ $t="$_ "; }		elsif ($_ =~ /BNCO_ASM/){ $t="$_ "; }		elsif ($_ =~ /DES_ENC/)	{ $t="$_ "; }		elsif ($_ =~ /BF_ENC/)	{ $t="$_ "; }		elsif ($_ =~ /CAST_ENC/){ $t="$_ "; }		elsif ($_ =~ /RC4_ENC/)	{ $t="$_ "; }		elsif ($_ =~ /RC5_ENC/)	{ $t="$_ "; }		elsif ($_ =~ /MD5_ASM/)	{ $t="$_ "; }		elsif ($_ =~ /SHA1_ASM/){ $t="$_ "; }		elsif ($_ =~ /RMD160_ASM/){ $t="$_ "; }		else	{ $t="$location${o}$_$pf "; }		$Vars{$var}.="$t ";		$ret.=$t;		}	chop($ret);	$ret.="\n\n";	return($ret);	}# return the name with the leading path removedsub bname	{	local($ret)=@_;	$ret =~ s/^.*[\\\/]([^\\\/]+)$/$1/;	return($ret);	}############################################################### do a rule for each file that says 'compile' to new direcory# compile the files in '$files' into $tosub do_compile_rule	{	local($to,$files,$ex)=@_;	local($ret,$_,$n);		$files =~ s/\//$o/g if $o ne '/';	foreach (split(/\s+/,$files))		{		$n=&bname($_);		$ret.=&cc_compile_target("$to${o}$n$obj","${_}.c",$ex)		}	return($ret);	}############################################################### do a rule for each file that says 'compile' to new direcorysub cc_compile_target	{	local($target,$source,$ex_flags)=@_;	local($ret);		$ex_flags.=" -DMK1MF_BUILD -D$platform_cpp_symbol" if ($source =~ /cversion/);	$target =~ s/\//$o/g if $o ne "/";	$source =~ s/\//$o/g if $o ne "/";	$ret ="$target: \$(SRC_D)$o$source\n\t";	$ret.="\$(CC) ${ofile}$target $ex_flags -c \$(SRC_D)$o$source\n\n";	return($ret);	}##############################################################sub do_asm_rule	{	local($target,$src)=@_;	local($ret,@s,@t,$i);	$target =~ s/\//$o/g if $o ne "/";	$src =~ s/\//$o/g if $o ne "/";	@s=split(/\s+/,$src);	@t=split(/\s+/,$target);	for ($i=0; $i<=$#s; $i++)		{		$ret.="$t[$i]: $s[$i]\n";		$ret.="\t\$(ASM) $afile$t[$i] \$(SRC_D)$o$s[$i]\n\n";		}	return($ret);	}sub do_shlib_rule	{	local($n,$def)=@_;	local($ret,$nn);	local($t);	($nn=$n) =~ tr/a-z/A-Z/;	$ret.="$n.dll: \$(${nn}OBJ)\n";	if ($vc && $w32)		{		$ret.="\t\$(MKSHLIB) $efile$n.dll $def @<<\n  \$(${nn}OBJ_F)\n<<\n";		}	$ret.="\n";	return($ret);	}# do a rule for each file that says 'copy' to new direcory on changesub do_copy_rule	{	local($to,$files,$p)=@_;	local($ret,$_,$n,$pp);		$files =~ s/\//$o/g if $o ne '/';	foreach (split(/\s+/,$files))		{		$n=&bname($_);		if ($n =~ /bss_file/)			{ $pp=".c"; }		else	{ $pp=$p; }		$ret.="$to${o}$n$pp: \$(SRC_D)$o$_$pp\n\t\$(CP) \$(SRC_D)$o$_$pp $to${o}$n$pp\n\n";		}	return($ret);	}sub read_options	{	if    (/^no-rc2$/)	{ $no_rc2=1; }	elsif (/^no-rc4$/)	{ $no_rc4=1; }	elsif (/^no-rc5$/)	{ $no_rc5=1; }	elsif (/^no-idea$/)	{ $no_idea=1; }	elsif (/^no-des$/)	{ $no_des=1; }	elsif (/^no-bf$/)	{ $no_bf=1; }	elsif (/^no-cast$/)	{ $no_cast=1; }	elsif (/^no-md2$/)  	{ $no_md2=1; }	elsif (/^no-md4$/)	{ $no_md4=1; }	elsif (/^no-md5$/)	{ $no_md5=1; }	elsif (/^no-sha$/)	{ $no_sha=1; }	elsif (/^no-sha1$/)	{ $no_sha1=1; }	elsif (/^no-ripemd$/)	{ $no_ripemd=1; }	elsif (/^no-mdc2$/)	{ $no_mdc2=1; }	elsif (/^no-patents$/)	{ $no_rc2=$no_rc4=$no_rc5=$no_idea=$no_rsa=1; }	elsif (/^no-rsa$/)	{ $no_rsa=1; }	elsif (/^no-dsa$/)	{ $no_dsa=1; }	elsif (/^no-dh$/)	{ $no_dh=1; }	elsif (/^no-hmac$/)	{ $no_hmac=1; }	elsif (/^no-asm$/)	{ $no_asm=1; }	elsif (/^nasm$/)	{ $nasm=1; }	elsif (/^gaswin$/)	{ $gaswin=1; }	elsif (/^no-ssl2$/)	{ $no_ssl2=1; }	elsif (/^no-ssl3$/)	{ $no_ssl3=1; }	elsif (/^no-err$/)	{ $no_err=1; }	elsif (/^no-sock$/)	{ $no_sock=1; }	elsif (/^just-ssl$/)	{ $no_rc2=$no_idea=$no_des=$no_bf=$no_cast=1;				  $no_md2=$no_sha=$no_mdc2=$no_dsa=$no_dh=1;				  $no_ssl2=$no_err=$no_rmd160=$no_rc5=1; }	elsif (/^rsaref$/)	{ $rsaref=1; }	elsif (/^gcc$/)		{ $gcc=1; }	elsif (/^debug$/)	{ $debug=1; }	elsif (/^profile$/)	{ $profile=1; }	elsif (/^shlib$/)	{ $shlib=1; }	elsif (/^dll$/)		{ $shlib=1; }	elsif (/^shared$/)	{ } # We just need to ignore it for now...	elsif (/^([^=]*)=(.*)$/){ $VARS{$1}=$2; }	elsif (/^-[lL].*$/)	{ $l_flags.="$_ "; }	elsif ((!/^-help/) && (!/^-h/) && (!/^-\?/) && /^-.*$/)		{ $c_flags.="$_ "; }	else { return(0); }	return(1);	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -