How to use elliptic curve encryption?

Hi, are there any examples?
I tried to get a key generator using KeyPairGenerator.getInstance("EC") but failed.
And I also cannot get a cipher using Cipher.getInstance("EC").
Thanks.

No Sun provider implements the EC algorithms at this time.
Here's an easy solution that works (Using NSS):
http://blogs.sun.com/andreas/entry/elliptic_curve_cryptography_in_java
NSS has been recently FIPS re-approved.
BouncyCastle is another option if FIPS doesn't matter to you at all and you want pure java.
Edited by: dstutz on Mar 10, 2008 7:49 AM

Similar Messages

  • Elliptic curve encryption with J2ME

    hi there.
    i'm using the bouncycastle apis to encrypt a small amount of data (e.g. 20 chars) using ECIES. All the documentation seems to point to ECC as being faster/requiring shorter keys/less power-hungry etc than RSA, however, with the example code I have, the encryption time on a high end mobile is ridiculous.
    I'm thinking that the example G, n, a, b, and Q are for larger key sizes. Does anyone know how I can generate these values for a 160b ECC key, or a good bouncycastle/j2me ECC tutorial/sample code?
    Thanks in advance.
    caid

    No Sun provider implements the EC algorithms at this time.
    Here's an easy solution that works (Using NSS):
    http://blogs.sun.com/andreas/entry/elliptic_curve_cryptography_in_java
    NSS has been recently FIPS re-approved.
    BouncyCastle is another option if FIPS doesn't matter to you at all and you want pure java.
    Edited by: dstutz on Mar 10, 2008 7:49 AM

  • Java Card and Elliptic Curves

    Hi all,
    has anyone ever used Elliptic Curve cryptography on a Java Card? I can't find any documentation and sample code about this topic, although it should be implemented in the new java card specifications.
    I would like to use ECC instead of RSA for encrypting a message and verifying a signature on a java card with a EC pubkey.
    If anyone could provide me with sample code or hints, that would be very helpful!
    Thanks in advance,
    Matthias

    has anyone ever used Elliptic Curve cryptography on a
    Java Card? I can't find any documentation and sample
    code about this topic, although it should be
    implemented in the new java card specifications.No, it can (not should) be implemented. The implementation of all cryptographic algorithms is optional.
    I would like to use ECC instead of RSA for encrypting
    a message and verifying a signature on a java card
    with a EC pubkey.
    If anyone could provide me with sample code or hints,
    that would be very helpful!The sample code wouldn't be too complicated to create (should be very similar to using RSA) but where do you execute this code? All emulators/simulators and the real Java Cards I know do not support ECC.
    I only heard rumours that "Trusted Logic" has Java Cards which support ECC, but I haven't checked that.
    Jan

  • How to use the same keypair for both encrypt/decryprt-SunPKCS#11

    Dear All,
    Subject: To access iKey 2032 token, to retrieve public/private key from iKey 2032 token using pkcs#11 in sdk1.5, to encrypt/decrypt files.
    When I separate the encrypt and decrypt part of java program, encryption program works well, whereas decryption program does not decrypt anything in the decrypt file (But there is no error). I printed out the public and private key in both encrypt and decrypt part of java program, its displayed differently::
    Encrypt program:
    SunPKCS11-rainbow_token RSA public key, 1024 bits (id 10, session object)
    modulus: 114338469922835728259534620463489934081917342509275191892563243582065
    74380495029336519036972702864998634664269499641616889325482699399559620370181624
    72068116957594402738459932902481604823224406859575930392708524033619120886256353
    58738237376491107769961041015109436347533548940674900728805627968145581222172729
    public exponent: 65537
    SunPKCS11-rainbow_token RSA private key, 1024 bits (id 11, session object, sensi
    tive, unextractable)
    Decrypt Program::
    SunPKCS11-rainbow_token RSA public key, 1024 bits (id 12, session object)
    modulus: 138556361758970660122782926386849783732271581948935425587968692317930
    09262429353977097956605140384961825974398004270547046620971835394362397699233738
    54481804748731546655197744692886754946373745924825650876065903334173666990347814
    83727290962956934521650035029131176614982652900659797194703065074407857754883163
    public exponent: 65537
    SunPKCS11-rainbow_token RSA private key, 1024 bits (id 13, session object, sensi
    tive, unextractable)
    I suspect that every time program generates different set of key, therefore we need to store the generated key during encryption part (i believe it is to be in the keystore) and to use the same for decryption part. Could you please give me a tips how to do this?
    Encrypt Program ::
    import java.io.*;
    import java.util.*;
    import java.lang.*;
    import java.sql.*;
    import java.text.*;
    import java.math.*;
    import java.security.*;
    import java.security.cert.*;
    import java.security.interfaces.*;
    import javax.crypto.interfaces.*;
    import javax.net.ssl.*;
    import javax.crypto.*;
    import javax.crypto.spec.DESKeySpec;
    import java.security.KeyStore.*;
    * A class of Encrypt.
    public class Encrypt
    public Encrypt(){}
    public void loginToken() {
         Provider p = new sun.security.pkcs11.SunPKCS11(MQConfig.getvalue("SecurityPropertyPath"));
         Security.addProvider(p);
         KeyStore ks = null;
         try{
              String password = General.ReadFiles(MQConfig.getvalue("logFilePath"),"Simple");
              password = password.trim();
              char pin[] = password.toCharArray();
              ks = KeyStore.getInstance("pkcs11");
              ks.load(null,pin);
         KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA",p);
              KeyPair kp = kpg.genKeyPair();
              kpg.initialize(1024, new java.security.SecureRandom());
              FileInputStream in = new FileInputStream("C:\\ReportDBBE.properties");
              FileOutputStream out = new FileOutputStream("C:\\ReportDBAE.properties");
              Cipher cp=Cipher.getInstance("RSA/ECB/PKCS1Padding", p);
              cp.init(cp.ENCRYPT_MODE,kp.getPublic());
              CipherOutputStream cout=new CipherOutputStream(out,cp);
              byte[] input=new byte[8];
              int byteread=in.read(input);
              while(byteread!=-1){
                   cout.write(input,0,byteread);
                   byteread=in.read(input);
              cout.flush();
              in.close();
              cout.close();
         catch(NoSuchAlgorithmException nsae)
         System.out.println("No Such Algorithm Exception " + nsae.getMessage());
         catch(NoSuchPaddingException nspe)
         System.out.println("No Such Padding Exception " + nspe.getMessage());
         catch(InvalidKeyException ike)
         System.out.println("Invalid Key Exception " + ike.getMessage());
         catch(IllegalStateException ise)
         System.out.println("Illegal State Exception " + ise.getMessage());
         catch(KeyStoreException kse)
         System.out.println("Key Store Exception " + kse.getMessage());
         catch(CertificateException ce)
         System.out.println("Certificate Exception " + ce.getMessage());
         catch(IOException ioe)
         System.out.println("IO Exception " + ioe.getMessage());
    public static void main (String args[]) throws Exception {
         try{
         Encrypt tl = new Encrypt();
         tl.loginToken();
         }catch(Exception e){
         e.printStackTrace();
    Decrypt Program ::
    import java.io.*;
    import java.util.*;
    import java.lang.*;
    import java.sql.*;
    import java.text.*;
    import java.math.*;
    import java.security.*;
    import java.security.cert.*;
    import java.security.interfaces.*;
    import javax.crypto.interfaces.*;
    import javax.net.ssl.*;
    import javax.crypto.*;
    import javax.crypto.spec.DESKeySpec;
    import java.security.KeyStore.*;
    * A class of Decrypt.
    public class Decrypt
    public Decrypt(){}
    public void loginToken() {
         Provider p = new sun.security.pkcs11.SunPKCS11(MQConfig.getvalue("SecurityPropertyPath"));
         Security.addProvider(p);
         KeyStore ks = null;
         try{
              String password = General.ReadFiles(MQConfig.getvalue("logFilePath"),"Simple");
              password = password.trim();
              char pin[] = password.toCharArray();
              ks = KeyStore.getInstance("pkcs11");
              ks.load(null,pin);
         KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA",p);
              KeyPair kp = kpg.genKeyPair();
              kpg.initialize(1024, new java.security.SecureRandom());
              FileInputStream in1 = new FileInputStream("C:\\ReportDBAE.properties");
              FileOutputStream out1 = new FileOutputStream("C:\\ReportDBAD.properties");
              Cipher cipher=Cipher.getInstance("RSA/ECB/PKCS1Padding", p);
              AlgorithmParameters algParams = cipher.getParameters();
              cipher.init(Cipher.DECRYPT_MODE,kp.getPrivate(),algParams);
              CipherInputStream cin1=new CipherInputStream(in1,cipher);
              byte[] input1=new byte[8];
              int byteread1=cin1.read(input1);
              while(byteread1!=-1){
                   out1.write(input1,0,byteread1);
                   byteread1=cin1.read(input1);
              out1.flush();
              in1.close();
              out1.close();
              cin1.close();
         catch(NoSuchAlgorithmException nsae)
         System.out.println("No Such Algorithm Exception " + nsae.getMessage());
         catch(NoSuchPaddingException nspe)
         System.out.println("No Such Padding Exception " + nspe.getMessage());
         catch(InvalidKeyException ike)
         System.out.println("Invalid Key Exception " + ike.getMessage());
         catch(IllegalStateException ise)
         System.out.println("Illegal State Exception " + ise.getMessage());
         catch(InvalidAlgorithmParameterException iape)
         System.out.println("Invalid Algorithm ParameterException " + iape.getMessage());
         catch(KeyStoreException kse)
         System.out.println("Key Store Exception " + kse.getMessage());
         catch(CertificateException ce)
         System.out.println("Certificate Exception " + ce.getMessage());
         catch(IOException ioe)
         System.out.println("IO Exception " + ioe.getMessage());
    public static void main (String args[]) throws Exception {
         try{
         Decrypt tl = new Decrypt();
         tl.loginToken();
         }catch(Exception e){
         e.printStackTrace();
    Configuration file::
    name = rainbow_token
    library = c:\winnt\system32\dkck201.dll
    attributes(*,CKO_PRIVATE_KEY,*) = {
    CKA_SIGN = true
    attributes(*,CKO_PRIVATE_KEY,CKK_DH) = {
    CKA_SIGN = null
    attributes(*,CKO_PRIVATE_KEY,CKK_RSA) = {
    CKA_DECRYPT = true
    }

    Hi all,
    Now i manage to use the same keypair for both encrypt/decryprt-SunPKCS#11. Below is my code woks well. In my code i hard coded alias name of certificate, did anyone knows how to read alias name of certificate from iKey token 2032??
    import java.io.*;
    import java.util.*;
    import java.lang.*;
    import java.sql.*;
    import java.text.*;
    import java.math.*;
    import java.security.*;
    import java.security.cert.*;
    import java.security.interfaces.*;
    import javax.crypto.interfaces.*;
    import javax.net.ssl.*;
    import javax.crypto.*;
    import javax.crypto.spec.DESKeySpec;
    import java.security.KeyStore.*;
    * A class of Encrypt.
    public class Encrypt
    public Encrypt(){}
    public void loginToken() {
         Provider p = new sun.security.pkcs11.SunPKCS11(MQConfig.getvalue("SecurityPropertyPath"));
         String myAlias = "349eefd1-845b-4ba4-9f88-06e9f5cb82f6";
         /** to view alias name
         keytool -list -v -keystore NONE -storetype PKCS11 -storepass PASSWORD
         Security.addProvider(p);
         KeyStore ks = null;
         PrivateKey privKey = null;
         PublicKey pubKey = null;
         try{
              String password = General.ReadFiles(MQConfig.getvalue("logFilePath"),"Simple");
              password = password.trim();
              char pin[] = password.toCharArray();
              ks = KeyStore.getInstance("pkcs11");
              ks.load(null,pin);
              java.security.cert.Certificate cert = ks.getCertificate(myAlias);
              Key key = ks.getKey(myAlias, pin);
              if(key != null) {
                   System.out.println("key class: " + key.getClass().getName()); // -> sun.security.pkcs11.P11Key$P11PrivateKey
                   System.out.println("key bytes: " + key.getEncoded()); // -> null!!!!!!!
         if(PrivateKey.class.isInstance(key)) {
         privKey = (PrivateKey)key;
         System.out.println("algo: " + privKey.getAlgorithm()); // -> RSA
         //Signature rsasig = Signature.getInstance("SHA1withRSA");
         //rsasig.initSign(privKey);
         //rsasig.update(data.getBytes());
         //byte[] sigBytes = rsasig.sign();
         pubKey = cert.getPublicKey();
         //System.out.println("signed bytes: " +sigBytes);
         //return sigBytes;
         //KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA",p);
              //KeyPair kp = kpg.genKeyPair();
              //KeyPair kp = kpg.generateKeyPair();
              //kpg.initialize(1024, new java.security.SecureRandom());
              FileInputStream in = new FileInputStream("C:\\ReportDBBE.properties");
              FileOutputStream out = new FileOutputStream("C:\\ReportDBAE.properties");
              Cipher cp=Cipher.getInstance("RSA/ECB/PKCS1Padding", p);
    //cp.init(cp.ENCRYPT_MODE,kp.getPublic());
              cp.init(cp.ENCRYPT_MODE,pubKey);
              CipherOutputStream cout=new CipherOutputStream(out,cp);
              byte[] input=new byte[8];
              int byteread=in.read(input);
              while(byteread!=-1){
                   cout.write(input,0,byteread);
                   byteread=in.read(input);
              cout.flush();
              in.close();
              cout.close();
         catch(NoSuchAlgorithmException nsae)
         System.out.println("No Such Algorithm Exception " + nsae.getMessage());
         catch(NoSuchPaddingException nspe)
         System.out.println("No Such Padding Exception " + nspe.getMessage());
         catch(InvalidKeyException ike)
         System.out.println("Invalid Key Exception " + ike.getMessage());
         ike.printStackTrace();
         catch(IllegalStateException ise)
         System.out.println("Illegal State Exception " + ise.getMessage());
         catch(KeyStoreException kse)
         System.out.println("Key Store Exception " + kse.getMessage());
         catch(CertificateException ce)
         System.out.println("Certificate Exception " + ce.getMessage());
         catch(IOException ioe)
         System.out.println("IO Exception " + ioe.getMessage());
         catch(UnrecoverableKeyException unrke)
         System.out.println("Unrecoverable Key Exception " + unrke.getMessage());
    public static void main (String args[]) throws Exception {
         try{
         Encrypt tl = new Encrypt();
         tl.loginToken();
         }catch(Exception e){
         e.printStackTrace();
    Your help is very much appreciated!!!!

  • How do I access my encrypted User Account files from my Back Up hard drive?  Time Machine  was used to create the back up disk; File Vault was used to encrypt the files.

    How do I access my encrypted User Account files from my Back Up hard drive?  Time Machine  was used to create the back up disk; File Vault was used to encrypt the files.

    Thanks.  I will try going through TM.  Since my Simpletech is on the way out, I'll be plugging in a new external hard drive (other than the back-up drive) and trying to restore the library to the new drive.  Any advice or warning if this is NOT the right thing to do?
    Meanwhile, that is a great tip to do an alternate back-up using a different means.  It's been tough to figure out how to "preserve access" to digital images and files for posterity, knowing the hardware will always fail/obsolesce sooner or later, and that "clouds" are only as good as their consistent and reliable accessibility.  Upping the odds with redundancy will help dull the edge of my "access anxiety", though logically, it can never relieve it.  Will look into
    Carbon Copy Cloner.

  • How to use the parameter "data" in the vi of Nonlinear Curve Fit

    I used "Nonlinear Curve Fit" to do state estimation. If I make the number of unknows a constant number, it is fine to code the fitting model for f(x,a). But if I want to code the number of unknows as a variable, how can I do this?
    Maybe "data" should be used here. But I just could not find any examples talking about how to use "data" here.
    Thanks.

    Hey hilary,
        Have you looked at the LabVIEW help for the Nonlinear Curve Fit VI?  Which version of LabVIEW are you using?  In mine, the VI is polymorphic, and you can declare the formula to be a formula string.  Then it provides pins to enter the input parameters programmatically.  Perhaps you could post a screenshot of how you are currently using the VI, and we could help more.
    Brian B
    Field Sales Engineer
    Tennessee/Southern Kentucky
    National Instruments

  • How to make S-Curve for Primavear P6 by using BI publisher?

    Hi,
    Anyone knows how to make S-Curve for Primavear P6 by using BI publisher? I can display colunm such as planned unit, but not cumulative value. So I can't plot S-curve.
    Thanks
    Wang Xin
    Edited by: 957906 on 09-Sep-2012 03:26

    The problem with the datagridview is that it can only show one table.
    For more tables 3th party datagrid's are better. 
    Although you can start with using the old datagrid. Despite what is written on MSDN is it a complete different control then the datagridview. You can add in to your toolbox by right clicking on it and then add it.
    The datasource of a DataGrid can be a complete dataset which is showed with all its relations.
    Success
    Cor

  • Used BB Curve, how to delete previous email addys

    Hello! I bought a used BB Curve and I cannot for the life of me figure out how to delete the previous owners email address. When I compose a message it asks me which email I would like to send from and it has my address and 2 of the previous owners email addresses. When I look around in various folders it only has my email address listed to delete or edit. Any ideas?
    Solved!
    Go to Solution.

    To delete the previous owners email IDs
    go to Options
    Advanced Options
    Service Books
    highlight the Email ID that you want to delete
    click Menu
    select Delete
    tanzim                                                                                  
    If your query is resolved then please click on “Accept as Solution”
    Click on the LIKE on the bottom right if the post deserves credit

  • Azure sdk2.5 - how to use encrypted diagnostics connectionstring

    could you please guide us on how to use encrypted storage connection string for diagnostics. Assume that in Azure 2.4, my application is used encrypted storage string and programmatically decrypted and connected to diagnostics with DiagnosticsMonitor.StartConnectionString.
    Could you please guide on how to use the same scenario in SDK2.5
    thanks
    kiran

    AFAIK, it is not possible to do so with SDK 2.5. Any custom encryption/decryption logic wouldn't work because this is now stored in diagnostics.wadcfgx file and code based diagnostics manipulation is not supported.
    Hope this helps.

  • How to use encryption in Mail?

    How does one send an encrypted email in Leopard/Mail? The Mail "help" menu alludes to this, but I'm not finding clear instructions for the clueless (such as myself). For example, I don't understand where to get a "personal certificate" or how to attach it to an account.
    Can anyone offer a link or some instructions for this? Thanks
    eric

    You may find these links interesting:
    http://allforces.com/2007/03/02/email-security/
    http://www.joar.com/certificates/
    hope this helps

  • Elliptic curve coprocessor in JCOP

    I have some JCOP41/72K cards with support to ECC.
    I suppose the cards come with a coprocessor that performs the elliptic curve operations in binary fields, like reduction modulo irreducible polynomial and escalar multiplication of a point.
    I've already developed a signature scheme (ECDSA) in these cards using Java Card API.
    In ECDSA, the card performs all elliptic curve operations and gives the result.
    These operations are perfomed by the coprocessor in a transparent way when I ask to compute a ECDSA signature.
    Now I would like to develop other cryptosystems based on bilinear pairings.
    So I need to perform operations like reduction modulo irreducible polynomial and escalar multiplication of a point.
    Does anybody know if its possible to access the functionalities of the elliptic curve coprocessor of JCOP cards?
    If its possible, how can I do this?
    Thanks.

    Ok. Thanks for your reply.
    Please, could you answer the following questions or
    indicate where can I find the answers?
    - Is there a software like JCOP Tools to work with
    pure SmartMX cards? Is it free? No. You need to order pure SmartMX including the Crypto Lib from NXP directly .. best is you contact their product manager to find out the details and tools support.
    - Besides the card reader that I use to work with the
    MPCOS/GPK/GemXpresso/JCOP cards, is it necessary any
    other hardware?Probably an emulator.
    - Which programming language is used to program these
    cards? C and assembler.

  • Elliptic Curve

    Hi to all, i'm an italian student and i must implements the BLS signature scheme in Java. BLS work on elliptic curve over finite field F3^m. I've seen elliptic curve in Java but over finite field F2^m. The question is: how i can do? Excuse me for my english and if something that i've write is wrong.
    Thanks to all.

    Hi,
    Firstly, please check if your card supports EC cryptography. You can find this information in product data sheet or ask the card manufacturer.
    I'm not sure if you can perform data encryption or decrytpion with ECC on JC. It is rather dedicated to sign/verify operation. Please find below modification of your sample code with sign and verify example.
            byte[] dataToSend = new byte[64];
            KeyPair ecKeyPair = new KeyPair(KeyPair.ALG_EC_FP, KeyBuilder.LENGTH_EC_FP_128);
            ecKeyPair.genKeyPair();
            ECPrivateKey ecPrivateKey = (ECPrivateKey) ecKeyPair.getPrivate();
            ECPublicKey ecPublicKey = (ECPublicKey) ecKeyPair.getPublic();
            Signature sig = Signature.getInstance(Signature.ALG_ECDSA_SHA, false);
            sig.init(ecPrivateKey, Signature.MODE_SIGN);
            short resLen = sig.sign(new byte[]{0,1,2,3}, (short)0, (short)4, dataToSend, (short)0);
            sig.init(ecPublicKey, Signature.MODE_VERIFY);
            if (!sig.verify(new byte[]{0,1,2,3}, (short)0, (short)4, dataToSend, (short)0, resLen))
                ISOException.throwIt(ISO7816.SW_WRONG_DATA);
    Regards

  • How to Use Schannel for TLS Sockets on Windows?

    I need make a c++ TLS socket server running on Windows XP, and a c# TLS socket client on Windows 7.
    The reason of using Schannel TLS is that it is FIPS 140-2 validated.
    But it is not easy to find some sample code of Schannel.
    By search, I found two c++ TLS samples, but the samples use the secur32.dll, some APIs seem are FIPS non-approved.
    codeproject SSL/TLS client/server for .NET and SSL tunnelling
    http://www.coastrd.com/c-schannel-smtp C++ SSPI Schannel TLS example
    According to 140sp1000.pdf (Microsoft Windows Vista Kernel Mode Security Support Provider Interface (ksecdd.sys) Security Policy Document), following APIs are FIPS non-approved APIs.
    InitializeSecurityContextW
    ImpersonateSecurityContext
    EncryptMessage 
    DecryptMessage
    I am quite confused about two things:
    One is that the FIPS non-approved APIs of ksecdd.sys also are also non-approved in secur32.dll?
    Another question is what's the correct way of using Schannel. Are the samples using Schannel in the correct way, must the APIs InitializeSecurityContextW/EncryptMessage be used?
    I want some sample code about how to use Schannel in native c++ and managed c#.

    I'm not sure what information you are referring to that indicates InitializeSecurityContext() and EncryptMessage() are not FIPS compliant.  InitializeSecurityContext() is required API on the client side.  EncryptMessage() is the required API to
    encrypt data.  Both APIs are important APIs in SSPI.
    In .NET, you would use the SSLStream Class, https://msdn.microsoft.com/en-us/library/system.net.security.sslstream(v=vs.110).aspx .
     MSDN has sample code for both the client and server.
    There used to be an SSPI client + server sample (WebClient & WebServer) on the Windows SDK.   I don't know if it is still there.  If you can't find them, please let me know.
    thanks
    Frank K [MSFT]
    Follow us on Twitter, www.twitter.com/WindowsSDK.
     

  • How can I open McAfee encrypted (EEFF) PDF files with Adobe Reader?

    How can I open McAfee encrypted (EEFF) PDF files with Adobe Reader?  Get error "There was an error opening this document. Access denied".  Disabling Protected Mode in Reader doesn’t always work.
    McAfee: https://kc.mcafee.com/corporate/index?page=content&id=KB74299&actp=search&viewlocale=en_US &searchid=1240943327683

    If Reader ISN'T in the list of prpgrams to open with, click "Browse"
    In the "Browse window" go to C/Program files [or Program Files (x86)]/Adobe/Reader 11/Reader
    Select "AcroRd32.exe" and click "Open"
    Make sure "Always use the selected program to open this kind of file" is checked and click "OK".

  • How to Use GnuPG(GPG) winth in java

    Hi all
    I am having one tough time getting How to use GnuPg with in Java languge to encrypt and decrypt file. Can anyone offer any help ...
    Satya

    I'm using this wrapper founded somewhere. Works fine to me.
    /* License: GPL
    * Author: John Anderson
    * Description: A small class to encrypt and decrypt text using GnuPG.
    import java.io.*;
    public class GnuPG {
            private Process p;
            private String gpg_result;
            private String gpg_err;
            GnuPG() {
            public void verifySign(String signedFile, String originalFile){
                    System.out.print("Verifying...");
                    try {
                            //p = Runtime.getRuntime().exec("gpg --output "+originalFile+" --decrypt --yes --verbose " + signedFile);
                            p = Runtime.getRuntime().exec("gpg --verify " + signedFile);
                    } catch (IOException io) {
                            System.out.println("Error creating process.");
                    ProcessStreamReader psr_stdout = new ProcessStreamReader("STDIN", p.getInputStream());
                    ProcessStreamReader psr_stderr = new ProcessStreamReader("STDERR",p.getErrorStream());
                    psr_stdout.start();
                    psr_stderr.start();
                    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
                    try {
                            out.write("\n");
                            out.close();
                    } catch (IOException io) {
                    try {
                            p.waitFor();
                            psr_stdout.join();
                            psr_stderr.join();
                    } catch (InterruptedException i) {
                    gpg_result = psr_stdout.getString();
                    gpg_err = psr_stdout.getString();
                    System.out.println("Done.");
            public void encrypt(String str, String rcpt) {
                    System.out.print("Encrypting... ");
                    try {
                            p = Runtime.getRuntime().exec("gpg --armor --batch --encrypt -r " + rcpt);
                    } catch (IOException io) {
                            System.out.println("Error creating process.");
                    ProcessStreamReader psr_stdout = new ProcessStreamReader("STDIN", p.getInputStream());
                    ProcessStreamReader psr_stderr = new ProcessStreamReader("STDERR",p.getErrorStream());
                    psr_stdout.start();
                    psr_stderr.start();
                    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
                    try {
                            out.write(str);
                            out.close();
                    } catch (IOException io) {
                    try {
                            p.waitFor();
                            psr_stdout.join();
                            psr_stderr.join();
                    } catch (InterruptedException i) {
                    gpg_result = psr_stdout.getString();
                    gpg_err = psr_stdout.getString();
                    System.out.println("Done.");
            public void decrypt(String str, String passphrase) {
                    File f = null;
                    try {
                            f = File.createTempFile("gpg-decrypt", null);
                            FileWriter fw = new FileWriter(f);
                            fw.write(str);
                            fw.flush();
                    } catch (IOException io) {
                    System.out.print("Decrypting from: " + f.getAbsolutePath());
                    try {
                            p = Runtime.getRuntime().exec("gpg --passphrase-fd 0 --batch --decrypt " +
                                    f.getAbsolutePath());
                    } catch (IOException io) {
                            System.out.println("Error creating process.");
                    ProcessStreamReader psr_stdout =
                            new ProcessStreamReader("STDIN",
                            p.getInputStream());
                    ProcessStreamReader psr_stderr =
                            new ProcessStreamReader("STDERR",
                            p.getErrorStream());
                    psr_stdout.start();
                    psr_stderr.start();
                    BufferedWriter out = new BufferedWriter(
                            new OutputStreamWriter(p.getOutputStream()));
                    try {
                            out.write(passphrase);
                            out.close();
                    } catch (IOException io) {
                    try {
                            p.waitFor();
                            psr_stdout.join();
                            psr_stderr.join();
                    } catch (InterruptedException i) {
                    gpg_result = psr_stdout.getString();
                    gpg_err = psr_stdout.getString();
                    System.out.println("Done.");
            public String getResult() {
                    return gpg_result;
            public String getError() {
                    return gpg_err;
    class ProcessStreamReader extends Thread {
            String name;
            StringBuffer stream;
            InputStreamReader in;
            final static int BUFFER_SIZE = 256;
            ProcessStreamReader(String name, InputStream in) {
                    super();
                    this.name = name;
                    this.in = new InputStreamReader(in);
                    this.stream = new StringBuffer();
            public void run() {
                    try {
                            int read;
                            char[] c = new char[BUFFER_SIZE];
                            while ((read = in.read(c, 0, BUFFER_SIZE - 1)) >
                                    0) {
                                    stream.append(c, 0, read);
                                    if (read < BUFFER_SIZE - 1)
                                            break;
                    } catch (IOException io) {}
            String getString() {
                    return stream.toString();
    }

Maybe you are looking for

  • Using HDTV as display intel based imac

    I have a mini dvi to dvi adaptor and a dvi to hdmi cable attached to my tv. I get nothing. Does this not work with an intel imac?

  • Workflow in GRC 10 VVV URGENT

    Hello, I have a requirement and we have only 1 GRC SYSTEM now to test and prototype our requirement , where we have 1st leverl suport team to raise a request. 1) 1st level support Team will raise a request in CUP. 2)It should go to Key users to selec

  • How to use ImaqViewer with mfc

    Hi, I would like to use the IMAQViewer in my mfc application made with VC++ 7.1 , with measurement studio 7.1 for VC++ , and IMAQ Vision 8.0. I did try to " add class from an ActiveX " , look for the " cwimaq.ocx " , and select the " _CWIMAQViewer "

  • Mavericks power nap find my Mac not working

    I wanna know if anyone encounters problem on find my Mac when your MacBook is sleeping. Mine doesn't work suddenly, obviously there is certain app that prevents it from updating location information during sleep. Here are the suspects: Utorrent Shift

  • Adobe form translation into other language

    Hello Experts, i have a requirement of printing of adobe form in multiple languages i.e english and french or english and chinese depending on the selection. i have developed my form in 'English'. Now, how to translate the form in other language? Wha