Simplest way to sign a JAR?

I made an applet using Eclipse that pulls information from a website while running. Apparently this needs to be signed before it works online -- what is the quickest, easiest way to sign it?
I'm one of the few people who are going to be using this applet, and I have basically no knowledge about JARs. I read the tutorial here but it didn't help me at all, as I don't have a "keystore" on my computer and I don't even know where to type any of that ("that" being jarsigner -keystore mykeys -storepass abc123 -keypass mypass app.jar johndoe).
I tried to run the unsigned JAR using Firefox (+<applet code="MU.class" archive="MU.jar" width=300 height=400>+). The applet didn't even initiate, it simply turned into a white box saying Error. Click for details -- clicking it brought up a Java Console starting with this line: java.security.AccessControlException: access denied (java.net.SocketPermission www.forsaken-mu.com:80 connect,resolve).

coopkev2 wrote:
ejp wrote:
I don't have a "keystore" on my computerSee the Javadoc for the 'keytool' tool.The link for the "Keytool reference page for Windows" here redirects here which is of no use to me that I can see. Did I click the wrong link, or is it just out of date?Those are pointing to the 1.2 JavaDocs. I have always wished Sun would establish an URL for the current API and tool documentation. As the new JRE major versions are released for public use, the docs should change accordingly.
Try instead [http://java.sun.com/javase/6/docs/technotes/tools/windows/keytool.html].
Out of curiosity. How did you get that URL?
As to your more general question of "Simplest way to sign a JAR?". I would answer that "Load a project (that signs code) with a build.xml into your IDE and call the main task."
But there are some caveats to that advice.
1) There are very few people on these forums willing to help with IDEs, so it is up to you to figure out how to import/build the ant based project, or take it to a forum for the IDE.
2) Understanding what the build file is doing, depends on understanding the underlying tools it calls. Most of those tools come directly from the JDK.
Having said that, I do have some open source projects that digitally sign code. For example the [demo. of the JNLP API file service|http://pscode.org/jws/api.html#fs] with the source files available in [http://pscode.org/jws/filetest.zip]. Maybe you can get a head start by looking that over (and building it, and changing it etc.).

Similar Messages

  • Is there a way to sign a JAR file programatically?

    Is there a way to sign a JAR file programatically?

    great! can you give me a short code snippet?
    what about signing J2ME MIDlets?

  • Simplest way to sign Java applets

    is there a way that i could sign applets without using the command line? its kinda in efficient if i may say.
    thanks in advance.

    Maybe an IDE will be able to do it?
    Or you could create a build script (ant is good), so building your applet (including signing it) becomes
    ant clean; ant
    You could event expand it to deploy.
    ant deploy

  • ...Simplest way to make Jar Files...

    I know there have been numerous questions about jar files and that this has probably been answered before. I am using Forte to develop a program. The program runs fine in Forte, and I used the jar packager to create a jar file. When I double click this file, nothing happens though. I can execute other jar files I have downloaded from the net, but for some reason the ones I create don't work. What is the simplest way to package the classes into a jar file so that I can run my program when I double click it?

    I don't know about double-clicking it to run - that involves making a file association (in Windows) to associate a program with a file type - although I assume you've already done this if you doubleclick others and they run.
    In the case with your own jars it sounds like you need to add a manifest file with the 'Main-class' attribute set to the name of the class that you want to run from the jar.
    eg
    Main-class: YourPackage.YourClass
    The manifest.mf needs to be in a meta-inf dir inside your jar.
    If you open your other jars that do work you will see an example of the manifest.mf file, and the 'Main-class' attribute.
    Also - check in the jdk docs in the tools section - this should tell you all you need to know about the 'jar' tool.
    Hope this helps,
    Kevin Hooke

  • Correct way to sign jars...

    oky nobodies helping with my web start app... could enyone maybe tell me the correct way to sign jars and how to test if theyre done right? then i can atleast start finding my problem. :P

    http://weblogs.java.net/blog/kirillcool/archive/2005/05/signing_jars_fo.html

  • Best way to make a jar with third party jars

    hi, i have a question.
    i have an application that uses different third party jars. For the moment i make my jar like this :
    a) i include all my third party jars (it is working)
    or is it better to
    b) include the jars in the jnlp file
    if b is better should i :
    b1) link to them to another jnlp file, like this :
    <extension name ....
    or
    b2) just put them as resources
    Another question :
    i sign my jar, but can't access the local file system. if i use solution a from above, do i have also to sign the jars that i include in my jar...
    for solution b i think i will have to sign all the jars... right ?
    Thx for your help

    hi, i have a question.
    i have an application that uses different third party
    jars. For the moment i make my jar like this :
    a) i include all my third party jars (it is working)
    or is it better to
    b) include the jars in the jnlp file
    this is best, leaving the third party jars alone.
    if b is better should i :
    b1) link to them to another jnlp file, like this :
    <extension name ....
    If you app needs all-permissions, it is best to do it this way, you can, for example, sign your jar, and then ask for all-permissions in the main jnlp file, then not ask for all-permissions in the extension jnlp file. Or you can ask for all-permission in the extension as well, if the third party jars are signed, and need all-permissions to run properly.
    or
    b2) just put them as resources
    if you don't need all-permissions anywhere, this is easiest.
    If you do need all-permissions everywhere, you could also do this, but you would need to sign the third party jars with the same certificate chain as you signed your jar.
    If the third party jars are allready signed by the third party, or if all-permissions are only needed in some of the jars, the b1 is beter.
    >
    Another question :
    i sign my jar, but can't access the local file
    system. if i use solution a from above, do i have
    also to sign the jars that i include in my jar...
    You need to add :
    <security> <all-permissions/> </security>
    to your jnlp file. In that case, all the jars listed as resources in that jnlp file need to be signed, and by the same certificate.
    for solution b i think i will have to sign all the
    jars... right ?
    yes
    Thx for your help/Andy

  • What is the simplest way to make a movie from BufferedImages?

    I have a 3d rendered animation from which I can grab BufferedImages of each frame. What is the simplest way I can create a movie from these images?
    I've seen the JpegImagesToMovie.java file and not only is it suprisingly overcomplicated, it requires me to change the code so that I can get images from memory rather than from files.
    Is there some simple way of creating a movie which requires a few statements? I'm also prepared to use QuickTime for Java. I don't care about the format, since I can just use any video converter to convert it to my desired video format.

    I recently came up with a simplified JpegImagesToMovie program. It generates QuickTime movies with a single video track output as a file. Input is a series of jpegs (currently as a list of file names, but easily modified to a take any form of jpeg data.) Since the compression used by the movie is JPEG, if you have an uncompressed image buffer, you'll need to convert that into jpeg data bytes with some quality setting. (Since its a movie file, go with something low if you have a lot of similar images.) This will even run without a full install of jmf--no native code is called (as far as I could tell..)
    Here is the source code, sorry about the formatting!
    import java.awt.Dimension;
    import java.io.File;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.net.URL;
    import java.util.Vector;
    import javax.media.Buffer;
    import javax.media.Format;
    import javax.media.MediaLocator;
    import javax.media.format.VideoFormat;
    import javax.media.protocol.ContentDescriptor;
    import javax.media.protocol.FileTypeDescriptor;
    import com.sun.media.multiplexer.video.QuicktimeMux;
    * This program takes a list of JPEG image files and converts them into a
    * QuickTime movie.
    * This was based on Sun's JMF Sample Code JpegImagesToMovie.java 1.3 01/03/13
    * This code is an attempt to reduce the complexity to demonstrate a very basic
    * JPEG file list to movie generator. It does not use a Manager or Processor
    * class, so it doesn't need to implement any event listening classes. One
    * advantage of this simplified class is that you can just link it with the
    * jvm.jar file. (you might also need to track down the com.ms.security library
    * stubs, use google. You'll need PermissionID.java and PolicyEngine.java.)
    * I tried to get it to generate AVI files without success.
    * These output files are could use further compression.
    * A Vector of jpeg image paths was one way to do this--the appropriate
    * methods can be overwritten to grab images from another source
    * --zip file, http, etc.
    * - Brad Lowe; Custom7; NuSpectra; 2/10/2005
    * The existing Copyright from Sun follows.
    * Copyright (c) 1999-2001 Sun Microsystems, Inc. All Rights Reserved.
    * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
    * modify and redistribute this software in source and binary code form,
    * provided that i) this copyright notice and license appear on all copies of
    * the software; and ii) Licensee does not utilize the software in a manner
    * which is disparaging to Sun.
    * This software is provided "AS IS," without a warranty of any kind. ALL
    * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
    * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
    * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
    * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
    * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
    * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
    * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
    * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
    * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY
    * OF SUCH DAMAGES.
    * This software is not designed or intended for use in on-line control of
    * aircraft, air traffic, aircraft navigation or aircraft communications; or in
    * the design, construction, operation or maintenance of any nuclear facility.
    * Licensee represents and warrants that it will not use or redistribute the
    * Software for such purposes.
    public class SimpleMovie
    Vector images; // jpeg image file path list
    VideoFormat format; // format of movie to be created..
    // Sample code.
    public static void main(String args[])
    try
    // change imageDir to the location of a directory
    // of images to convert to a movie;
    String imageDir = "images";
    File d = new File(imageDir);
    SimpleMovie imageToMovie = new SimpleMovie();
    // change width, height, and framerate!
    // Excercise: Read width and height of first image and use that.
    imageToMovie.init(320, 240, 10.0f);
    imageToMovie.setFiles(d);
    File dest = new File("simple.mov");
    imageToMovie.createMovie(dest);
    System.err.println("Created movie " + dest.getAbsolutePath() + " "
    + dest.length() + " bytes.");
    } catch (Exception e)
    System.out.println(e.toString());
    e.printStackTrace();
    // return jpeg image bytes of image zIndex (zero-based index)
    public byte[] getImageBytes(int zIndex) throws IOException
    if (images == null)
    return null;
    if (zIndex >= images.size())
    return null;
    String imageFile = (String) images.elementAt(zIndex);
    // Open a random access file for the next image.
    RandomAccessFile raFile = new RandomAccessFile(imageFile, "r");
    byte data[] = new byte[(int) raFile.length()];
    raFile.readFully(data);
    raFile.close();
    return data;
    // Call this before converting a movie;
    // Use movie width, height;
    public void init(int width, int height, float frameRate)
    format = new VideoFormat(VideoFormat.JPEG,
    new Dimension(width, height), Format.NOT_SPECIFIED,
    Format.byteArray, frameRate);
    // Set up the files to process
    public void setFiles(Vector inFiles)
    images = inFiles;
    // point converter to jpeg directory. Only does one level,
    // but could recurse, but then sorting would be interesting..
    public void setFiles(File dir) throws Exception
    if (dir.isDirectory())
    if (images == null)
    images = new Vector();
    String l[] = dir.list();
    for (int x = 0; x < l.length; x++)
    if (l[x].toLowerCase().endsWith(".jpg"))
    File f = new File(dir, l[x]);
    images.addElement(f.getAbsolutePath());
    // Crank out the movie file.
    public void createMovie(File out) throws Exception
    if (format == null)
    throw new Exception("Call init() first.");
    String name = out.getAbsolutePath();
    QuicktimeMux mux = null; // AVI not working, otherwise would use
    // BasicMux
    if (out.getPath().endsWith(".mov"))
    mux = new QuicktimeMux();
    mux.setContentDescriptor(new ContentDescriptor(
    FileTypeDescriptor.QUICKTIME));
    } else
    throw new Exception(
    "bad movie file extension. Only .mov supported.");
    // create dest file media locator.
    // This sample assumes writing a QT movie to a file.
    MediaLocator ml = new MediaLocator(new URL("file:"
    + out.getAbsolutePath()));
    com.sun.media.datasink.file.Handler dataSink = new com.sun.media.datasink.file.Handler();
    dataSink.setSource(mux.getDataOutput()); // associate file with mux
    dataSink.setOutputLocator(ml);
    dataSink.open();
    dataSink.start();
    // video only in this sample.
    mux.setNumTracks(1);
    // JPEGFormat was the only kind I got working.
    mux.setInputFormat(format, 0);
    mux.open();
    // Each jpeg goes in a Buffer.
    // When done, buffer must contain EOM flag (and zero length data?).
    Buffer buffer = new Buffer();
    for (int x = 0;; x++)
    read(x, buffer); // read in next file. x is zero index
    mux.doProcess(buffer, 0);
    if (buffer.isEOM())
    break;
    mux.close();
    // close it up
    dataSink.close();
    // Read jpeg image into Buffer
    // id is zero based index of file to get.
    // Always starts at zero and increments by 1
    // Buffer is a jmf structure
    public void read(int id, Buffer buf) throws IOException
    byte b[] = getImageBytes(id);
    if (b == null)
    System.err.println("Done reading all images.");
    // We are done. Set EndOfMedia.
    buf.setEOM(true);
    buf.setOffset(0);
    buf.setLength(0);
    } else
    buf.setData(b);
    buf.setOffset(0);
    buf.setLength(b.length);
    buf.setFormat(format);
    buf.setFlags(buf.getFlags() | Buffer.FLAG_KEY_FRAME);
    }

  • Digitally sign a jar file for distribution?

    I recently got a jar of mine hosted for client use though a web page.
    The problem is that the jar needs to access the internet for several functions. JWS prompts the user for security reasons every time it makes a connection to a new url endpoint. Since one operation alone can hit 56 url's i thought this could be a bit of a hassle to the users.
    The solution, as I understand it to be, is to digitally sign the jar file, so the user is prompted once on download.
    I found a site ascertia which offers free certificates, but for the life of me I canb not get this to work.n I have seen keytool generate numerous errors, none of which mean anything to me. (too long >59, cant read chain from reply, invalid cert)
    Does someone know a clear and thorough tutorial on digital code signing and certs? Or a CA that provides certs for free, and has some instructions to go along?
    Thanks so much.
    The step i have trouble on is turning the CSR into a cert, and importing the returned cert back into the keystore.

    Masterkeedu wrote: !! It worked.
    Congratulations. :-)
    Masterkeedu wrote: So it's not certified, but is signed.
    So as I understand this, it means the end-user has no way to know it was me that truly signed it. But relies on their common sense I suppose.
    That is correct. The CA has verified, and is certifying, that you are who you claim to be. If you or I use a 'self signed' certificate, it does not carry the same level of trust. As you might understand already, the dialogs are different between the two certificate types, and some users cannot accept trusted code from an unverified (self-signed) certificate.
    I have been meaning to write a page on the differences between the two certificates. It is well worth looking into getting a cert. from a CA.
    There was a stage when one of the major CAs were offering 'freemail' certificates that came emblazoned not with your name, but 'free mail' itself. I did not like them because of that, and continue to use a self-signed certificate.

  • Can I progamatically sign a jar file?  i.e. w/o jarsigner tool

    Hi,
    I am new to development and am using Ant to build my packages.
    I need to sign the jar files that I produce, and now the only way I know how is with jarsigner.
    I'd like to find a way to do the signing within Ant, but can't find one.
    Is that possible?
    George

    I'm having trouble with the opposite: I'm trying to verify a signed jar programmatically.
    I've already read this article, and thought that I could do similar things in order to verify.
    However, this code uses classes from sun.security.util, and I couldn't find any documentation of this package.
    Any suggestion will be greatly appreciated!

  • Using System.getProperty in the app, but still not signing the jar file

    Is there a way to use the System.getProperty call in the app but not sign the jar? I get the security exception when launched using WebStart?
    Any help appreciated.

    Yes. Don't use Web Start, and you'll have no problems.
    Seriously, the security exception is there by design. If you must call System.getProperty, you need to sign your jars -- though personally, I think there are situations where signing your jars to make Web Start work is a needless complication.
    However, if you still need a tool to deploy updates and such, I recommend Deploy Director from Sitraka.

  • Simply signing a *.jar file make applet able to read Client PC?

    If I simply sign my jar file, which is supposed to open a JFileChooser, and make a default web page that loads the jar as an applet supposed to grant all permisions? I tried this, and the applet pops up the "grant permisions". However the JFileChooser won't pop up?
    what if I put a .policy file online in the same directory, could this help or be modified to?

    Fractalz wrote:
    . . . Now that's the part I have been facing difficulties, cuz I have to include all the classes that the applet is using from other jar
    files. And I can not come up with a way to find out all those classes.See the Class-Path: parameter (of a Manifest file) documentation here:
    http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#Manifest-Overview

  • Signing a Jar File Prevent Decompiler........?

    Hi All
    I wantto ask if i can prevent the classes
    from decompiler by signing the jar file

    Unfortunately it doesn't make very much sence because JVMPI/JPDA allows to obtain the bytecode of all loaded classes. And there is nothing to prevent that. You can find a full details at http://www.sys-con.com/java/article.cfm?id=1308 and at JPDA pages http://java.sun.com/products/jpda/
    Hopefully Saffeine looks not so bad, at least because it provides possibility to split the product to set of features and encrypt each feature by the different way. So, it still usefull for products distributed as say "entry", "professional" and "enterprise" edition and customer will only have access to part of the product he paid for.

  • Problems Signing a Jar File.

    Hi Everyone
    I'm having problems signing a jar file.
    The applet in the jar file was previously signed by Duke.
    Now I want to re-sign it with my company name.
    So I unzip the jar file. I was careful to remove the manifest and the Duke .sa and .rsa. I re-signed it with the netscape signtool.
    The applet works. It presents the prompt that it is signed by my company. I grant session. Then another prompt appears and it says it is signed by duke.
    but i was careful to remove the duke signature and manifest file when i unzipped it. Is it possible that the fact that it is signed by duke is stored in the bytecode ??
    It is using the <object tag by the way.
    <OBJECT classid="clsid:CAFEEFAC-0013-0001-0002-ABCDEFFEDCBA"
         WIDTH = "100%" HEIGHT = "50" border="0"
         codebase="http://www.homework911.com/java/j2re-1_3_1_02-win.exe#Version=1,3,1,2">
         <PARAM NAME = "CODE" VALUE = "com.s.SApplet"/>
         <PARAM NAME = "CODEBASE" VALUE = "/_phone"/>
         <PARAM NAME = "type" VALUE="application/x-java-applet;version=1.3"/>
    stev

    great suggestion - there are no other signed jar files on the browser for it to access. There is a winzip file but it has no rsa/dsa and signature file in it.
    perhaps it is accessing something else that was signed by duke ?
    Would it be possible for it to connect to a server program that was signed by duke and therefore present the prompt. ?
    I'm trying to get the original unsigned classes and see if i can recompile and sign it just in case then name duke is in byte code.
    any other thoughts as to what this code be ?
    stephen

  • The simplest way for plsql procedure to return multiple rows

    Hi,
    What is the simplest way for plsql procedure to return multiple rows (records). There are many combination of ways to do it but I am looking for a solution that is appropriate for plsql beginners. Many solutions use cursors, cursor variables, collections and more that kind of things that are complex on the face of it. Is it somehow possible to achieve the same with less effort?
    Sample query would be: SELECT * FROM EMPLOYEES;
    I want to use returned rows in APEX to compose APEX SQL(in that context plsql) report.
    It is enough to use just SELECT * FROM EMPLOYEES query in APEX but I want to use plsql procedure for that.
    Thank you!

    Hi,
    It depends :-).
    With +...that is appropriate for plsql beginners...+ in mind... it still depends!
    The list of techniques (ref cursors, cursor variables, collections, arrays, using explict SQL) you have referenced in your post can be made to work. but...
    +Is it somehow possible to achieve the same with less effort?+ Less effort : That needs to be defined (measured). Especially in the context of pl/sql beginners (who is a beginner?) .
    What is the level of "programming experience" ?
    What is the level of understanding of "Relational Result set" as processible in Oracle?
    If you are looking for
    Process_the_set_of rows_in APEX () kind of capabilitywhich "abstracts/hides" relation database from developers when working on relation database, it may not be the best approach (at least strategically). Because I believe it already is abstracted enough.
    I find REF CUROSOR most effective for such use, when the "begginer" has basic understanding of processing SQL result set .
    So in a nut shell, the techniques (that you already are familiar with) are the tools available. I am not aware of any alternative tools (in pure Oracle) that will simplify / hide basics from develpers.
    vr,
    Sudhakar B.

  • I created a new Apple ID for iCloud on my iPhone, but I can't seem to find a way to "sign out" or "log out" of that Apple ID (for iCloud) to sign in with another Apple ID. The only account login I could change was the Store. How do I "log out"

    I created a new Apple ID for iCloud on my iPhone, but I can't seem to find a way to "sign out" or "log out" of that Apple ID (for iCloud) to sign in with another Apple ID. The only account login I could change was the Store.
    How do I "log out" or "sign out" of iCloud on my iPhone? There is an option to delete the account, but I just want to log off. I want to keep the account name for future use.

    @fernandamagalhaes
    It looks like the article below has the information you are looking for.
    iCloud: Change iCloud feature settings
    http://support.apple.com/kb/PH2613
    Turn off iCloud completely
    Depending on whether you want to stop using iCloud on all or only some devices, do one or more of the following:
    On your iOS device’s Home screen, go to Settings > iCloud, then at the bottom of the screen, tap Delete Account.
    Note:   If you delete your iCloud account, iCloud will no longer back up your iOS data. You can still back up your device in iTunes (for more information, open iTunes and choose iTunes > Help). 
    On your Mac, open iCloud preferences, then click Sign Out.
    If your Mac has OS X v10.7.5 and you turn off iCloud, your calendar information and reminders aren’t stored locally in iCal. If you want to retain your calendar and reminder information, you need to back it up before turning off iCloud. For more information, see the Apple Support article iCloud: Calendar & reminder data removed from Calendar and Reminders or iCal when disabling iCloud Calendar.
    On your Windows computer, open the iCloud Control Panel, then click Sign Out.
    Note:   If you turned on automatic download of music, app, or book purchases (in iTunes preferences or in Settings on your iOS device), your iTunes purchases are still downloaded to your devices.
    Set up iCloud on your devices

Maybe you are looking for