一个简单的问题,答案相当复杂:
如何签名Java Midlet,以便可以在安全提示较少的情况下将其加载到手机上?
获取所需的软件
导入现有证书(如果有的话)
keytool -import -alias {myalias} -file {mycertificate}
(由于我没有适当的证书,因此我无法对其进行测试)keytool -list
以查看您的新证书keytool -export -alias {myalias} -file mycertificate.crt
创建并导入新的(测试)证书
keytool -genkey -alias {myalias} -keyalg RSA -validity 365
keytool -list
以查看您的新证书keytool -export -alias {myalias} -file mycertificate.crt
将证书导入手机(有关详细信息,请参见下文)
C:\j2sdk1.4.2_08\bin>keytool -genkey -alias company -keyalg RSA -validity 365
Enter keystore password: password
What is your first and last name? [Unknown]: My Name
What is the name of your organizational unit? [Unknown]: company
What is the name of your organization? [Unknown]: company
What is the name of your City or Locality? [Unknown]: location
What is the name of your State or Province? [Unknown]: location2
What is the two-letter country code for this unit? [Unknown]: GB
Is CN=My Name, OU=company, O=company, L=location, ST=location2, C=GB correct? [no]: yes
Enter key password for (RETURN if same as keystore password):
构建并打包应用程序
javac
来构建你的MIDlet要特别注意你的classpath和启动类路径的选项(否则预验证会失败)。我还将目标设置为1.1,将源设置为1.3MIDlet-Jar-URL
签署申请
jarsigner
jarsigner -keystore {mykeystore} -storepass (mypassword} {myjar} {myalias}
MIDlet-Jar-Size
JAD中的JadTool.jar
WTK 将证书添加到JAD中java -jar JadTool.jar -addcert -alias {myalias} -storepass {mypassword} -keystore {mykeystore} -inputjad {myinputjad} -outputjad {myoutputjad}
JadTool.jar
java -jar JadTool.jar -addjarsig -alias {myalias} -jarfile {myjar} -storepass {mypassword} -keypass {mypassword} -keystore {mykeystore} -inputjad {myinputjad} -outputjad {myoutputjad}
部署方式
在手机上安装证书
常见问题
MIDlet-Permissions
会导致问题,但在诺基亚6680/6630 / 6230i上对我来说似乎还可以(可能取决于固件吗?)MIDlet-Permissions
属性是导致许多问题的原因(尤其是由于文档经常是错误的/遗失的或因电话而异),请尝试先将其排除在外,然后一次添加权限。有些手机会抱怨不支持的权限,有些则会忽略它们信任域
MIDP2中有4个不同的信任域(制造商,运营商,受信任的第三方和不受信任的域)。可信第三方是对我们真正有用的唯一工具。它在我的诺基亚6680(英国沃达丰)上提供以下选项:
网络访问:不允许,每次询问,第一次询问消息传递:不允许,每次询问应用程序自动启动:不允许,每次询问,第一次询问连接性:不允许,每次询问,第一次询问,始终允许多媒体:不允许,每次询问,第一次询问读取用户数据:不允许,每次询问,第一次询问,始终允许编辑用户数据:不允许,每次询问,第一次询问,始终允许
这些设置由运营商和电话制造商定义,因此在电话,制造商和运营商之间会有所不同。
未解决的问题
样本JAD
MIDlet-Jar-URL: MyApp.jar
MIDlet-Jar-Size: 201365
MIDlet-Name: MyApp
MIDlet-Vendor: EC1M
MicroEdition-Profile: MIDP-2.0
MicroEdition-Configuration: CLDC-1.1
MIDlet-Icon: logo.png
MIDlet-Push-1: sms://:6553,net.ec1m.MyApp.midp.MyAppMIDlet,*
MIDlet-Description: MyApp MIDlet
MIDlet-Permissions: javax.microedition.io.PushRegistry,javax.microedition.io.Connector.sms...
MIDlet-Version: 1.0.67 MIDlet-1: MyApp, logo.png,net.ec1m.MyApp.midp.MyAppMIDlet
MIDlet-Certificate-1-1: MIICODCCAaECBEKqpfswDQYJKoZIhvcNAQEEBQAwYz...=
MIDlet-Jar-RSA-SHA1: EUsAch/.../hEZOsJsiCjBOhNs/3FSw4=
样品清单
清单版本:1.0
MIDlet名称:MyApp
创建时间:1.4.2_05-b04(Sun Microsystems Inc.)
MIDlet-Push-1:sms://:6553,net.ec1m.MyApp.midp.MyAppMIDlet,*
MIDlet-1:MyApp,logo.png,net.ec1m.MyApp.midp.MyAppMIDlet
MicroEdition配置:CLDC-1.1
Ant版本:Apache Ant 1.6.2
MIDlet-Icon:logo.png
MIDlet供应商:EC1M
MIDlet-权限:javax.microedition ...
MIDlet版本:1.0.67
MicroEdition配置文件:MIDP-2.0
MIDlet描述:MyApp MIDlet
样本Ant构建文件 我已经将我们的EC1M
ant构建文件放在我们的网站上,以(希望)为您简化了所有这些工作。
其他资源
此FAQ诺基亚论坛是值得一读。
我需要使用256位的私钥为ECDSA的256位散列签名,就像比特币一样。由于缺少python中的ECDSA文档,我感到绝望。 我在网上找到了很多代码,但是没有什么比或类似的,我发现的所有东西都是我不懂的大量数学代码,但他们使用ecdsa库(我不知道为什么他们不在一个库中添加一个用于签名的签名函数,而是在使用库时需要一页代码?)。 这是目前为止我找到的最好的代码: 但我就是不能相信这样的代码,因为我
我正在尝试使用谷歌办公套件设置SAML。但是我得到了这个错误 我已经配置断言应该在我的SP中签名。我可以在其他IDP(如onelogin、okta)中看到签署响应断言的选项。该配置适用于其他IDP,但看不到在谷歌办公套件SAML中唱响应断言的选项。 在Gsuite中,我只能看到签名响应的选项,而不能看到断言。 如何正确设置此设置? SP元数据如下所示:
但是,为了签署请求,openSSL提供了两个工具:ca和X509。然而,这些都不允许使用SHA256。根据官方文档,ca只支持md5、sha1和MDC2。x509仅支持md2、md5、sha1、MDC2。 谢谢你。
将我的第二个应用程序项目上载到PlayStore时,我在上载时遇到以下错误。新版本的aab文件: “您的Android应用程序包使用了错误的密钥进行了签名。请确保您的应用程序包使用了正确的签名密钥进行了签名,然后重试。您的应用程序包应该使用指纹证书进行签名:::” 我所做的是使用我的第一个应用程序的密钥/我的旧密钥库文件,并在Android studio“build”中使用这个密钥库文件- 在游戏
我需要使用外部服务签署pdf文档,该服务将返回PKCS1签名。这意味着我必须在IExternalSignatureContainer实例中添加公钥。我使用iText 7进行整个签名过程。 在iText网站上有一个关于这种方法的很好的例子 我在一个文件中创建了整个演唱过程的示例。必需的引用: null 示例代码(为控制台应用程序准备好的一个文件中的两个类):
在定点数学中,我使用了大量16位信号,并用32位中间结果进行乘法运算。例如: 假设a是一个q14数,那么c与b的比例相同。 这很好,适用于有符号和无符号算术。 问题是:如果我混合类型会发生什么?例如,如果我知道乘数“a”总是在 0.0 到 1.0 之间,那么很容易使其成为无符号的 int q15 以获得额外的精度(并将移位计数更改为 15)。但是,我从来不明白如果您尝试在 C 中将有符号和无符号数