我有一些代码尝试将p12插入新的密钥库并保存别名以供以后使用。
我正在使用Python中的子进程模块通过命令行直接调用“keytool”
cmd = ['keytool', '-list', '-v', '-keystore', keystore_path,
'-storetype', 'pkcs12', '-storepass', store_pass]
proc = subprocess.Popen(cmd,
stdout=out_stream,
stderr=subprocess.PIPE,
cwd=work_dir)
(out, err) = proc.communicate()
别名是这样得到的:
for line in execute_result[1].split('\n'):
if 'Alias' in line:
elements = line.split(':')
alias = elements[-1].strip()
utils.log('Alias : ' + alias)
break
我也试图删除那些奇怪的特征:
alias = elements[-1].strip().strip(chr(0))
它适用于Android p12文件,但我注意到,当使用iOS p12文件时,我在别名中获得了\ x00个字符,当我尝试传递到转换步骤时
cmd = ['keytool', '-v', '-importkeystore', '-srckeystore', p12_file,
'-srcstorepass', password, '-srcstoretype', 'PKCS12',
'-destkeystore', keystore_fullpath, '-deststoretype', 'JKS',
'-deststorepass', DEFAULT_PASSWORD,
'-srcalias', alias, '-destalias', 'default']
proc = subprocess.Popen(cmd,
stdout=out_stream,
stderr=subprocess.PIPE,
cwd=work_dir)
(out, err) = proc.communicate()
失败了:
类型错误:execv()arg 2必须只包含字符串
如果删除这些字符,则无法识别别名。
有什么想法吗?