| Reply | « Previous Thread | Next Thread » |
|
I'm quite new to 3rd edition platform. The question I have is: how do I install sis files with PyS60 modules that require some caps if the sis file was created before the Symbian Signed change.
As far as I understand it, before the change, one created his own developer certificate and it was enough for him to sign a sis file for his phone. Right now our only option is the Open Signed Online which, unless the UID is from a testrange, would send a signed sis file only to the owner of the UID. For example, right now I'm trying to make the keypress module to work on my N73. On cyke64's web site I found the following file: keypress102_unsigned_dev_certfree.sis It won't install directly, the phone says something about invalid or no longer valid certificate. How do I install it then? The only option that I came with was to extract all the files and use ensymble with its simplesis command. This way I could specify a testrange UID. Of course it didn't install directly again because of caps problem. However, thanks to the testrange UID I was able to sign it usign Open Signed Online. This helped, but not fully. As soon as I try to call the simulate_key function, Python shuts down without any error (even in try...except). Could someone explain me how do you do it? -- ADDED -- I've tried making my key and cert using makekeys and then sign the sis using signsis but the phone still whine about missing caps.
Last edited by y.a.k : 2008-07-01 at 04:16.
|
|
Quote:
Slowly, module authors have moved to the test-range UIDs, but there are still plenty of modules that have not been updated. Quote:
Quote:
There are four aspects ("roadblocks") that determine if a program can succesfully use a capability:
Simulating keypresses requires the SwEvent capability, which is not available to applications that have a self-signed certificate. When you create a certificate and key with makekeys, it creates a self-signed certificate. That certificate is no better than the default one that comes with Ensymble. In fact it is worse, since makekeys generates certificates that expire in *COUGH* days, whereas the Ensymble default certificate is good for another 28 years (30 years originally, expires on Sep 25 18:21:04 2036 GMT). |
|
Quote:
So my cert for my old device expired only in December 2010 So I sign always Python extension with MobileSigner (great app) in my devices ![]() But for all new device I get after this politic change I have only online signing ![]() Quote:
We should take a convention with Python extension developers for avoiding UID clashes in the future. Yes I think than no modules use test range actually ![]() All my modules *should* to follow this convention ... BR Cyke64 pys60 1.4.5,1.9.7,pygame,PyS60 CE on E90 , N810 with Python 2.5.2 and ... last PyS60 1.9.7 with touch ui on 5800 ! pys60 extension modules on http://cyke64.googlepages.com/ |
|
I see. Someone should put up a website simmilar to Symbian Signed that would allow you to register an UID from the test range. With some proper "advertising", I don't think there would be a problem making people into actually using the site when they are releasing a module.
![]() A nice and friendly database of all open software with ability to display a list of them. Anyone? |
|
I've unpacked the sis using sisinfo. Then did this:
Code:
> ensymble.py info32 _keypress.pyd
_keypress.pyd:
UID1 0x10000079
UID2 0x00000000
UID3 0x00000000
Secure ID 0x00000000
Vendor ID 0x00000000
Capabilities 0xff1b4 (ALL-TCB-CommDD-MultimediaDD-DRM-DiskAdmin-NetworkControl-AllFiles)
> ensymble.py altere32 --uid=0xe0001111 --secureid=0xe0001111 --inplace _keypress.pyd
> ensymble.py infoe32 _keypress.pyd
_keypress.pyd:
UID1 0x10000079
UID2 0x00000000
UID3 0xe0001111
Secure ID 0xe0001111
Vendor ID 0x00000000
Capabilities 0xff1b4 (ALL-TCB-CommDD-MultimediaDD-DRM-DiskAdmin-NetworkControl-AllFiles)
> ensymble.py simplesis --uid=0xe0001111 keypress keypress.sis
ensymble.py: warning: no package version given, using 1.0.0
ensymble.py: warning: no certificate given, using insecure built-in one
Code:
>>> import keypress >>> from key_codes import * >>> keypress.simulate_key(EKey1, EKey1) |
|
Have you added the SwEvent capability to your application (or to Script Shell and/or PED) as well? (Use the --caps option of the py2sis command of Ensymble.) Looks like the application crashes when it tries to use a capability-protected feature.
|
|
Quote:
My 6 months dev cert has already expired ![]() Best Regards, Croozeus |
|
Quote:
But I wonder. Was the PYD UID change really necessary? And is it normal that it had UID=0x00000000? Without the change (when I only repacked the sis using ensymble simplesis --uid=0xe0001111) it also installed and would probably also work (if I haven't forgot to sign Ped ). What do you think? Would there be any problem if I tried to install another extension module with its PYD having UID=0x00000000? |
|
Quote:
Quote:
And my favourite:
|
|
UID 0x00000000 is a special KNullUID in Symbian OS. I don't know what happens if you install it or several DLLs sharing the same UID.
|
|
Quote:
Code:
Output SIS file Ped_2.30.1_beta_3rdEd_unsigned_testrange.sis UID 0xe9e58be1 Application name Ped ![]() Btw. You should add the code to exclude PythonShell test-range UID, if you haven't done so yet. And maybe a command to just generate UIDs based on a name.
Last edited by y.a.k : 2008-07-01 at 14:15.
|
|
Quote:
Code:
if uid3 == None:
# No UID given, auto-generate a test UID from application name.
uid3 = (symbianutil.crc32ccitt(appname.lower()) &
0x0fffffffL) | 0xe0000000L
print ("%s: warning: no UID given, using auto-generated "
"test UID 0x%08x" % (pgmname, uid3))
So, it takes a lower-case version of appname and calculates a common variant of 32-bit CRC out of it. The four topmost bits are set to "e" to place the UID in the test range, rest of the bits (28 of them) come from the CRC, so in theory a collision happens in 1/268,435,456 of cases. In reality, collisions are far more common than that because the CRC output is not ideally distributed. I think it is fine for this purpose, however. For the same reason I think it is not likely to be able to create a name that has the same UID as the Script Shell. Of course there are algorithmic means for generating CRC-collisions, but most colliding strings are not suitable for use as application names. EDIT: A command to generate UIDs, good idea! |
|
Jussi, Any Plans on it?
![]() Best Regards, Croozeus |
|
Not yet. Programming it is a simple job, but updating the documentation is always a chore...
In the meantime, you can get a UID generated by creating a SIS out of a dummy file appname.py. The suffix .py will not be a part of the name used for UID generation. You can get the same result by creating a SIS out of a directory appname, which only needs to contain a dummy default.py to keep Ensymble from printing an error. |
|
Another idea. Ensymble could detect if the UID specified with --uid is a test-range one and if it is, it would calculate the CRC one based on the name. If they are different, it would print out a warning/info saying that the user should consider letting Ensymble handle the UID itself.
This way the fact that Ensymble can do this would easily get to new developers not knowing this already. |
| Reply | « Previous Thread | Next Thread » |
| Thread Tools | Search this Thread |
|---|---|
| Rate This Thread | |