×

Discussion Board

Results 1 to 7 of 7
  1. #1
    Registered User
    Join Date
    Jul 2007
    Posts
    26

    Exclamation Do I need to get UID3 for a static interface DLL from Symbian signed?

    Hi,

    I'm building a static interface DLL which can be used by many applications.
    I'm using 0xE0006666 as UID3 for DLL development & testing.
    I would like to know if I need to get UID3 from Symbian signed before distributing the DLL?

    I have read that "For static interface DLLs, the UID2 is KSharedLibraryUid. The UID3, which is used to identify the interface to the library, must be allocated by Symbian Signed."

    2. I've another question about DLL capability.
    I used "Capability ALL -TCB -DRM -AllFiles" in the DLL and
    "Capability NetworkServices ReadUserData " in my test app that uses DLL.
    When I tried to install the app (after self signing), I get "Required application access not granted" error message.
    If I change DLL caps to "NetworkServices ReadUserData ", then it installs fine.

    As per the documentation, DLL cap is just a trust level indication.
    "Also libraries (DLLs) have capabilities, but these are interpreted a bit differently than capabilities of processes (EXE files). When applied to a DLL, a capability indicates the trust level of the code within the DLL. When the DLL is loaded into a process, the code is executed with the capabilities of the process (EXE), not the capabilities of the DLL. The capabilities of the DLL just indicate to which extent the code in the DLL can be trusted."

    So, my app only uses those 2 caps which are basic. Then why did the installation failed. I also tried with open signed online. I get "The .sis file contains capabilities that are not permitted for Open Signed (Online)" error.

    If I set the DLL capability to basic and the application which is going to use this needs extended capability, that application can't load the DLL. How do I set the capability?

    Thanks,
    jvinjam

  2. #2
    Super Contributor
    Join Date
    Jul 2007
    Location
    ShenZhen, China
    Posts
    4,346

    Re: Do I need to get UID3 for a static interface DLL from Symbian signed?

    hi jvinjam.
    1. if you want deliver your app, the best way is you get a protected/unprotected uid3. it is free.

    2. when exe run, it capatility must is the subset of he use dll's. but when install, the package capability must be full set of all exe/dll's capability.
    the reason is that symbian allow you install some dll instead system dll, if not the limit, you can install a full capability dll instead system dll, so it will broken system security.
    ----------------------------
    坚持学习, 坚持编码
    http://www.devdiv.net/
    qxiaoyuan

  3. #3
    Super Contributor
    Join Date
    Mar 2004
    Location
    Singapore
    Posts
    9,968

    Re: Do I need to get UID3 for a static interface DLL from Symbian signed?

    Capabilities are interpreted differently for DLLs and EXEs. I recommend that you read up on the available documentation at symbiansigned.com.

    thumb rule is a DLL need at least all capabilities of a Application that loads it. and it always suggested that you should have CAP_GENERAL_DLL that is (ALL-TCB).

    So once you decide what capabilities you want on a DLL you then can decide on the UID3.

    "Capability ALL -TCB -DRM -AllFiles" is not a OpenSignable. if you are using only 2 capabilities but you want other applications with higher capability can load/use it then you have to SymbianSign it, open sign will not work.

  4. #4
    Super Contributor
    Join Date
    Nov 2004
    Location
    Wiltshire, UK
    Posts
    3,644

    Re: Do I need to get UID3 for a static interface DLL from Symbian signed?

    Network Control is not allowed to be used to sign online.
    You would need to add it to the excluded list in the DLL MMP

    You need to remember that the certificate the sis file is signed with needs to include all the capabilties of all the components included in it.

    It is very important to remember that if you are intending this dll to be used by a number of applicatons it can only be installed by one application and not the others or it must be put into a seperate sis file. The software installer only allows a dll to be installed from one package and will fail if another different package tries to install the dll with the same uid.

    Remember too that you cannot enumerate the files in \sys\bin so you need some other mechanism (ECOM) to discover what other DLL's are implementing that interface if that is what you are intending to do (ie making a plugin type application)

    By changing the UID to the protected range would mean you would be resonsible for signing each instance of the sis file yourself and other people cannot do it for you.
    Alternativly you would need to pass Symbian Signed test criteria, and a publisher id or a publishing house to symbian sign the dll for you, though there is a cost involved with this each time the dll is changed
    Download Symbian OS now! [url]http://developer.symbian.org[/url]

  5. #5
    Registered User
    Join Date
    Jul 2007
    Posts
    26

    Re: Do I need to get UID3 for a static interface DLL from Symbian signed?

    Thank you very much.

    I'm using the same DLL to test different test applications.

    When I uninstall an app, does it delete everything I put in the .pkg file?
    Before installing second test app, I uninstalled the first test application.
    But, it still gives me error - "Component is built in".(same DLL in both .sis).
    Unless I change the UID of the DLL, it won't let me install the second app.

    So, uninstalling the app, doesn't delete the DLL?
    So, it's always better to install the DLL as a separate .sis file!

    >>>So once you decide what capabilities you want on a DLL you then can decide on the UID3.
    I'm sorry, I couldn't find the relation between capabilities and UID3. Can someone give me a link. If I decide to use CAP_GENERAL_DLL, do I need protected UID?
    If I use basic, I could go with 0xe00... range?

    Thanks,
    jvin

  6. #6
    Super Contributor
    Join Date
    Mar 2004
    Location
    Singapore
    Posts
    9,968

    Re: Do I need to get UID3 for a static interface DLL from Symbian signed?

    >>>So once you decide what capabilities you want on a DLL you then can decide on the UID3.
    I'm sorry, I couldn't find the relation between capabilities and UID3. Can someone give me a link. If I decide to use CAP_GENERAL_DLL, do I need protected UID?
    If I use basic, I could go with 0xe00... range?
    yes there is no restriction on DLL UID3 to be only Protected range (0x2....) if you are capabilites do not require you to go for symbian signing then you can use 0xe...

  7. #7
    Nokia Developer Moderator
    Join Date
    Feb 2006
    Location
    Oslo, Norway
    Posts
    28,692

    Re: Do I need to get UID3 for a static interface DLL from Symbian signed?

    Quote Originally Posted by jvinjam View Post
    When I uninstall an app, does it delete everything I put in the .pkg file?
    Before installing second test app, I uninstalled the first test application.
    But, it still gives me error - "Component is built in".(same DLL in both .sis).
    Unless I change the UID of the DLL, it won't let me install the second app.
    Consider re-checking this behavior on a freshly formatted device.[/QUOTE]So, uninstalling the app, doesn't delete the DLL?
    So, it's always better to install the DLL as a separate .sis file![/QUOTE]Indeed, it should have been removed. And indeed, if you are planning to use a given .dll from multiple applications, it should rather be installed as a separate .sis file (you may still try what happens if you use it as an embedded .sis file in your "main" applications).
    I'm sorry, I couldn't find the relation between capabilities and UID3. Can someone give me a link. If I decide to use CAP_GENERAL_DLL, do I need protected UID?
    If I use basic, I could go with 0xe00... range?
    There is no direct connection between UID-s and capabilities.
    However if you need non-basic capabilities, you will need a protected UID (0x2...-range) for having it Express/Certified signed.
    If you can live with basic capabilities, you should use UID-s from the 0xA...-range. The 0xE...-range is reserved for development and testing, you should not distribute such code - though you can, no one will ever check.
    CAP_GENERAL_DLL is a macro, though I am not sure if it is present in the public SDK-s. Anyway, it definitely contains non user-grantable capabilities (I would say All -TCB, perhaps -DRM, but it may also have removed the ones requiring platform approval).

Similar Threads

  1. Static Interface DLL - Plolymorphic ?
    By stopin in forum Symbian
    Replies: 3
    Last Post: 2008-06-11, 11:06
  2. C++ Dll & Symbian v9.1
    By jascco in forum Symbian
    Replies: 8
    Last Post: 2007-05-10, 17:24
  3. Distributing for Symbian 9 without Symbian Signed
    By tal.shahar@mobile-mx.com in forum Symbian
    Replies: 2
    Last Post: 2006-09-06, 05:15
  4. some problems with label
    By vivienzhung in forum Mobile Java General
    Replies: 1
    Last Post: 2002-10-21, 09:52

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
×