problemas para firmar el midlet

flarramendi
Posts: 4
Joined: 2008-05-26

Hola,
Aunque se que algunos temas parecidos se han tratado en este foro, sigo sin poder resolverlo asi que les comento la version mas simplificada de mi problema:
1- Tengo un midlet que funciona perfectamente sin hablitar ningun permiso especial y sin firmar. Esta desarrollado en NetBeans que es quien genera el .jad
2- Usando Motorola IDEN SDK intento firmar el midlet como OPA. Uso para ello el IMEI que esta escrito en el telefono en el que lo voy a instalar que es el mismo que me da el menu de mantenimiento del telefono.
3- Cuando cargo el midlet firmado no llega a instalarse y da un error de Authentication Error.

A la pregunta de para que quiero firmar el midlet la respuesta es que quiero usar la API de CustomerCare que al menos en un midlet sin firmar no me devuelve los valores correctos de IMEI y numero de serie. ( mi verdadero objetivo es realmente ese: leer el IMEI y el numero de serie desde el midlet, si alguien sabe como resolver eso sin firmar el midlet, mejor !!!)
Saludos y desde ya gracias.
Francisco



Opções de exibição de comentários

Escolha sua maneira preferida de exibir os comentários e clique em "Salvar ajustes" para ativar suas mudanças.
zaxa
Posts: 38
Joined: 2007-09-11
firmar

Yo simplemente
al momento de crear el jar/jad
puse el Security Domain como manufactura
con eso nunca he tenido problemas
al usar socket o datagramas...
ni con los APIs de motorla

--

__________________
Pablo Sierralta
Analista Programador
zaxa85@hotmail.com



jfrincon
Posts: 244
Joined: 2006-12-01
IMEI que se debe usar al firmar un midlet

Hola Flarramendi,

Al firmar el MIDlet, debes usar 14 dígitos del IMEI. Por alguna razón, Motorola escribe el IMEI físico en el equipo con 15 dígitos (el último siempre es un cero), pero el SDK sólo requiere catorce.

Si le eliminas el último cero, te funcionará.

Lo otro que puedes hacer para ahorrarte el quitarle la batería al equipo y todo lo demás es la siguiente secuencia desde el menú principal del equipo:

# * Menu Derecha

Al ingresar al Modo de Rastreo, si te desplazas hacia abajo vas a ver una opción, IMEI/SIM ID/NS -- de ahí puedes obtener el IMEI del equipo (y este te lo da con 14 dígitos).

Para leer esos valores programáticamente en una aplicación Java, tienes que usar la API CustomerCare, la cual requiere una firma digital. Si quieres tener una firma permanente (es decir, una que funcione en todos los equipos), tendríamos que conversar para obtener una firma para tu aplicación dependiendo de lo que quieras estar haciendo con ella.

Saludos,

Juan Felipe



flarramendi
Posts: 4
Joined: 2008-05-26
sigo con problemas para firmar

Gracias a todos por las respuestas.
Les comento que sigo con problemas y paso a enumerar algunas pruebas que he hecho:
1- Para descartar posibles problemas en mi midlet use la Hello Midlet que hace automaticamente el NetBeans 5.5.1. Esta midlet sin firmar funciona en el telefono.
2- Firmo la midlet sin agregar ningun codigo. Sigue funcionando bien.
3- Pongo al inicion del startApp() la linea:
CustomerCare.getClientInfo( CustomerCare.IMEI);
Sin firmar la midlet parece funcionar bien pero si hago un System.out.println de la string que devuelve veo que no coincide con el IMEI del telefono.
4- Firmo esta midlet sin agregar ningun permiso a ninguna API y la midlet arranca en el telfono pero da una Security Exception en el standard output(puerto serie) y la correspondiente Unhandled Exception en el telefono.
5- Agrego el permiso para esta API en el jad, vuelvo a firmar. La midlet no se llega a instalar y el telefono me muestra Authorization Error.
Hice algunas pruebas mas de formato del jad y obfuscando y no obfuscando sin ningun resultado.
Alguna sugerencia?
Alguien me puede indicar como hacer una midlet lo mas simple posible, que use las API del CustomerCare y que funcione?
Alguien lo ha hecho?
Saludos y nuevamente mil gracias por las respuestas.
Francisco



jfrincon
Posts: 244
Joined: 2006-12-01
Configuración para usar CustomerCare

Hola Francisco,

Asegúrate de hacer lo siguiente:

  1. poner en el JAD,

    MIDlet-Permissions: com.mot.iden.customercare.CustomerCare.UnitInfo

  2. firmar el MIDlet en dominio OPA (Operador) en el SDK usando el IMEI de 14 dígitos
  3. borrar cualquier vestigio de alguna instalación anterior del MIDlet en el equipo
  4. reinstalar la aplicación en el equipo

Si eso no te da resultado, asegúrate que tienes la versión más reciente del firmware del equipo (también lo obtienes en el menú trace, llegas a él oprimiendo #*Menu-Derecha ) y si no, actualiza el firmware descargando la versión más reciente desde el sitio de actualización de software de Motorola.

Saludos,

Juan Felipe



flarramendi
Posts: 4
Joined: 2008-05-26
exito y disculpas !

Hola Juan Felipe,
Ante todo queria disculparme porque no habia podido seguir con este asunto.
Bueno, siguiendo tus indicaciones consegui firmar con exito una MIDlet de prueba.
Basicamente mi error consistia en que en el jad, en los MIDlet-Permissions, escribia:

MIDlet-Permissions: com.mot.iden.customercare.CustomerCare

En lugar de el correcto:
MIDlet-Permissions: com.mot.iden.customercare.CustomerCare.UnitInfo

De esta manera pude hacer una simple MIDlet que lee el IMEI del telefono y lo muestra correctamente por el puerto serie.
Saludos y muchisimas gracias,
Francisco Larramendi