Signed applet upgraded from .cab to .jar files throws a security exception when run in Microsoft VM


Symptoms

After upgrading a signed applet from .cab to .jar files, the applet no longer works in the Microsoft VM. The applet runs fine in the Sun JRE.

Cause

This error is caused by a lack of signed .jar file support in the Microsoft VM. While the Microsoft VM supports unsigned .jar files through the archive attribute of the <APPLET> tag, classes and resources within signed .jar files are treated as untrusted in the Microsoft VM.

As a result, the applet is treated as untrusted by the Microsoft VM; any action performed by the applet that requires access outside the applet sandbox will likely result in a security exception.

Resolution

The only applet signing scheme recognized by the Microsoft VM is Authenticode used with .cab files.

The workaround is specify the upgraded .jar files through the archive attribute for the Sun JVM, and continue to specify the .cab files through cabbase for the Microsoft VM. For example,

<APPLET code="MyApplet" width=100 height=100>
<PARAM name="cabbase" value="package1.cab, package2.cab">
</APPLET>

should be changed to

<APPLET code="MyApplet" archive="package1.jar, package2.jar"
width=100 height=100>
<PARAM name="cabbase" value="package1.cab, package2.cab">
</APPLET>

Related Information

N/A