Clever Cup
...the professor teaches you, from the master... you learn
jueves, 24 de marzo de 2011
miércoles, 16 de marzo de 2011
Encrypting using PGP (GnuPG) and Java
After I download this two links
Cryptix OpenPGP | snapshot | 2005/04/18 | cryptix-openpgp-20050418-snap.zip |
Cryptix JCE | snapshot | 2005/03/28 | cryptix-jce-20050328-snap.zip |
I create I simple Helper that will simplify the final user to use them.
My helper looks like this
- First register the Crypto :
private static final String OPEN_PGP = "OpenPGP";
static {
//**********************************************************************
// Dynamically register both the Cryptix JCE and Cryptix OpenPGP
// providers.
//**********************************************************************
java.security.Security.addProvider(new CryptixCrypto());
java.security.Security.addProvider(new CryptixOpenPGP());
}
- Second create a simple helper method that accepts a byte[] or Binary in BPM and returns the encrypted byte[].
public static byte[] encryptFile(File publicKey, byte[] contentToEncrypt) {
//**********************************************************************
// First read the key.
//**********************************************************************
KeyBundle publicBob = null;
FileInputStream in = null;
try {
MessageFactory mf = MessageFactory.getInstance(OPEN_PGP);
in = new FileInputStream(publicKey);
Collection msgs = mf.generateMessages(in);
KeyBundleMessage kbm = (KeyBundleMessage) msgs.iterator().next();
publicBob = kbm.getKeyBundle();
} catch (IOException ioe) {
throw new RuntimeException("IOException... You did remember to run the " + "GenerateAndWriteKey example first, right?", ioe);
} catch (NoSuchAlgorithmException nsae) {
nsae.printStackTrace();
throw new RuntimeException("Cannot find the OpenPGP MessageFactory. " + "This usually means that the Cryptix OpenPGP provider is not " + "installed correctly.", nsae);
} catch (MessageException me) {
me.printStackTrace();
throw new RuntimeException("Reading keybundle failed.", me);
} finally {
if (in != null)
try {
in.close();
} catch (IOException e) {
//ignore this exception!!!
}
}
//**********************************************************************
// The actual stream encryption.
//**********************************************************************
BufferedInputStream bin = null;
LiteralMessageOutputStream literalMessageOutputStream = null;
try {
ByteArrayOutputStream encryptedFileOutputStream = new ByteArrayOutputStream();
literalMessageOutputStream = LiteralMessageOutputStream.getInstance(OPEN_PGP);
EncryptedMessageOutputStream encryptedMessage = EncryptedMessageOutputStream.getInstance(OPEN_PGP);
SecureRandom sr = new SecureRandom();
literalMessageOutputStream.init(encryptedMessage, sr); // Literal writes to Encrypted
encryptedMessage.init(encryptedFileOutputStream, sr); // Encrypted writes to file
encryptedMessage.addRecipient(publicBob);
//
literalMessageOutputStream.write(contentToEncrypt);
return encryptedFileOutputStream.toByteArray();
} catch (NoSuchAlgorithmException nsae) {
throw new RuntimeException("Cannot find OpenPGP implementation." +
" This usually means that the Cryptix OpenPGP provider is not " +
"installed correctly.", nsae);
} catch (MessageStreamException me) {
throw new RuntimeException("Streaming the message failed.", me);
} catch (IOException ioe) {
throw new RuntimeException("IO error.", ioe);
} finally {
if (bin != null) {
try {
bin.close();
} catch (IOException e) {
//ignore error
}
}
if (literalMessageOutputStream != null) {
try {
literalMessageOutputStream.close();
} catch (IOException e) {
//ignore error
}
}
}
}
Issues I found
java.security.InvalidKeyException: Illegal key size
Solution replace the security files
- Suppose you are using jdk15. Go to http://java.sun.com/javase/downloads/index_jdk5.jsp
- Go to the Other Downloads section and click on download link next to "Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 5.0"
- Download jce_policy-1_5_0.zip and extract it in to a directory.
- You will find local_policy.jar and US_export_policy.jar files there in the extracted directory. Copy these two files to $JAVA_HOME/jre/lib/security directory. (These files will already be there. you may replace them)
lunes, 14 de marzo de 2011
Oracle ALBPM Performance Monitoring
- DB usage
- JMS usage
- Prepare statement pool
Links :
First item: Connect to the JMX weblogic Server
- My First approach was to use an external (Failed)
- Second approach Is to create my Java Library and catalog it as a Java Component (Succedded)
I can not connect to the server using JMX from outside , for security reasons, but I do can connect using the local connection. That is why I use
private MBeanServer getMBeanServer() throws NamingException {
MBeanServer server;
InitialContext ctx = new InitialContext();
server = (MBeanServer) ctx.lookup("java:comp/env/jmx/runtime");
return server;
}
So this is how I will get my connection to the Weblogic MBeanServer access. Things I need to take care of :
- This method need to be runs on server since I like to monitor the engine I need to get the MBeanServer from the engine not PAPI
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class JMXMonitor {
public static void main(String[] args) throws Exception {
}
public Object invokeMBeanMethod(String mBeanName, String methodName, Object[] args, String[] signature) throws Exception {
MBeanServer mBeanServer = getMBeanServer();
ObjectName name = new ObjectName(mBeanName);
return mBeanServer.invoke(name, methodName, args, signature);
}
public Object getMBeanAttributeValue(String mBeanName, String attributeName) throws Exception {
MBeanServer server = getMBeanServer();
ObjectName name = new ObjectName(mBeanName);
return server.getAttribute(name, attributeName);
}
private MBeanServer getMBeanServer() throws NamingException {
MBeanServer server;
InitialContext ctx = new InitialContext();
server = (MBeanServer) ctx.lookup("java:comp/env/jmx/runtime");
return server;
}
}
So once I can get the this done I have 50% of the problem resolved.