Skip to content

Commit

Permalink
Option to disable v4 signing
Browse files Browse the repository at this point in the history
Summary: As title.

Reviewed By: ssj933

Differential Revision: D53126910

fbshipit-source-id: dc7834fc9178b575c04362e2d8c72c1b28c8e294
  • Loading branch information
agampe authored and facebook-github-bot committed Jan 27, 2024
1 parent 0d4819e commit a975733
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 5 deletions.
17 changes: 15 additions & 2 deletions pyredex/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,12 @@ def remove_signature_files(extracted_apk_dir: str) -> None:


def sign_apk(
keystore: str, keypass: str, keyalias: str, apk: str, ignore_apksigner: bool = False
sign_v4: typing.Optional[bool],
keystore: str,
keypass: str,
keyalias: str,
apk: str,
ignore_apksigner: bool = False,
) -> None:
def run() -> None:
subprocess.check_call(
Expand All @@ -362,6 +367,13 @@ def run() -> None:
"sign",
"--v1-signing-enabled",
"--v2-signing-enabled",
]
+ (
[]
if sign_v4 is None
else (["--v4-signing-enabled", "true" if sign_v4 else "false"])
)
+ [
"--ks",
keystore,
"--ks-pass",
Expand Down Expand Up @@ -406,6 +418,7 @@ def argparse_yes_no_flag(
flag_name: str,
on_prefix: str = "",
off_prefix: str = "no-",
default: typing.Optional[bool] = False,
**kwargs: typing.Any,
) -> None:
class FlagAction(argparse.Action):
Expand All @@ -424,7 +437,7 @@ def __call__(self, parser, namespace, values, option_string=None):
f"--{off_prefix}{flag_name}",
dest=flag_name.replace("-", "_"),
action=FlagAction,
default=False,
default=default,
**kwargs,
)

Expand Down
14 changes: 13 additions & 1 deletion redex.py
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,7 @@ def align_and_sign_output_apk(
output_apk_path: str,
reset_timestamps: bool,
sign: bool,
sign_v4: typing.Optional[bool],
keystore: str,
key_alias: str,
key_password: str,
Expand All @@ -478,7 +479,14 @@ def align_and_sign_output_apk(

# Add new signature
if sign:
sign_apk(keystore, key_password, key_alias, output_apk_path, ignore_apksigner)
sign_apk(
sign_v4,
keystore,
key_password,
key_alias,
output_apk_path,
ignore_apksigner,
)


def copy_file_to_out_dir(
Expand Down Expand Up @@ -570,6 +578,9 @@ def arg_parser(
parser.add_argument("-c", "--config", default=config, help="Configuration file")

argparse_yes_no_flag(parser, "sign", help="Sign the apk after optimizing it")
argparse_yes_no_flag(
parser, "sign-v4", default=None, help="Sign the apk with v4 signing"
)
parser.add_argument("-s", "--keystore", nargs="?", default=keystore)
parser.add_argument("-a", "--keyalias", nargs="?", default=keyalias)
parser.add_argument("-p", "--keypass", nargs="?", default=keypass)
Expand Down Expand Up @@ -1355,6 +1366,7 @@ def finalize_redex(state: State) -> None:
# In dev mode, reset timestamps.
state.args.reset_zip_timestamps or state.args.dev,
state.args.sign,
state.args.sign_v4,
state.args.keystore,
state.args.keyalias,
state.args.keypass,
Expand Down
2 changes: 1 addition & 1 deletion test/debug_info/add_assets.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@
zf.write(asset, os.path.join("assets", os.path.basename(asset)))

add_tool_override("apksigner", args.apksigner_path)
sign_apk(args.keystore, args.keypass, args.keyalias, args.apk)
sign_apk(False, args.keystore, args.keypass, args.keyalias, args.apk)
2 changes: 1 addition & 1 deletion test/equivalence/generate_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@
os.rename(f"{args.output}.zip", args.output)

add_tool_override("apksigner", args.apksigner_path)
sign_apk(args.keystore, args.keypass, args.keyalias, args.output)
sign_apk(False, args.keystore, args.keypass, args.keyalias, args.output)

0 comments on commit a975733

Please sign in to comment.