mirror of
https://github.com/FWGS/xash3d-fwgs.git
synced 2026-08-05 11:35:05 +08:00
102 lines
2.3 KiB
Java
102 lines
2.3 KiB
Java
package su.xash.fwgslib;
|
|
|
|
import android.content.*;
|
|
import android.view.*;
|
|
import android.os.*;
|
|
import android.util.*;
|
|
import android.graphics.*;
|
|
import android.text.method.*;
|
|
import android.text.*;
|
|
import android.media.*;
|
|
import android.hardware.*;
|
|
import android.content.*;
|
|
import android.widget.*;
|
|
import android.content.pm.*;
|
|
|
|
import java.lang.*;
|
|
import java.util.List;
|
|
import java.security.MessageDigest;
|
|
|
|
import in.celest.xash3d.XashConfig; // change pkgname if needed
|
|
import in.celest.xash3d.hl.BuildConfig; // change pkgname if needed
|
|
|
|
public class CertCheck
|
|
{
|
|
// Certificate checking
|
|
private static String SIG = "DMsE8f5hlR7211D8uehbFpbA0n8=";
|
|
private static String SIG_TEST = ""; // a1ba: mittorn, add your signature later
|
|
|
|
private static String TAG = "XASH3D:CertCheck";
|
|
|
|
public static boolean dumbAntiPDALifeCheck( Context context )
|
|
{
|
|
if( !XashConfig.CHECK_SIGNATURES || BuildConfig.DEBUG )
|
|
return false; // disable checking for debug builds
|
|
|
|
final String sig;
|
|
|
|
if( XashConfig.PKG_TEST )
|
|
{
|
|
sig = SIG_TEST;
|
|
}
|
|
else
|
|
{
|
|
sig = SIG;
|
|
}
|
|
|
|
if( dumbCertificateCheck( context, context.getPackageName(), sig, false ) )
|
|
{
|
|
Log.e(TAG, "Please, don't resign our public release builds!");
|
|
Log.e(TAG, "If you want to insert some features, rebuild package with ANOTHER package name from git repository.");
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public static boolean dumbCertificateCheck( Context context, String pkgName, String sig, boolean failIfNoPkg )
|
|
{
|
|
if( sig == null )
|
|
sig = SIG;
|
|
|
|
Log.d( TAG, "pkgName = " + pkgName );
|
|
try
|
|
{
|
|
PackageInfo info = context.getPackageManager()
|
|
.getPackageInfo( pkgName, PackageManager.GET_SIGNATURES );
|
|
|
|
for( Signature signature: info.signatures )
|
|
{
|
|
Log.d( TAG, "found signature" );
|
|
MessageDigest md = MessageDigest.getInstance( "SHA" );
|
|
final byte[] signatureBytes = signature.toByteArray();
|
|
|
|
md.update( signatureBytes );
|
|
|
|
final String curSIG = Base64.encodeToString( md.digest(), Base64.NO_WRAP );
|
|
|
|
if( sig.equals(curSIG) )
|
|
{
|
|
Log.d( TAG, "Found valid cert" );
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
catch( PackageManager.NameNotFoundException e )
|
|
{
|
|
Log.d( TAG, "Package not found" );
|
|
|
|
e.printStackTrace();
|
|
if( !failIfNoPkg )
|
|
return false;
|
|
|
|
}
|
|
catch( Exception e )
|
|
{
|
|
e.printStackTrace();
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|