Link to home
Start Free TrialLog in
Avatar of Victor Kimura
Victor KimuraFlag for Canada

asked on

Paypal encryption buttons: Java error:

Hi,

I'm trying to run some shell program but I get the errors:

bash build-app2.sh

Be sure Java version is at least 1.4
java version "1.7.0_25"
OpenJDK Runtime Environment (rhel-2.3.10.5.el5_9-i386)
OpenJDK Client VM (build 23.7-b01, mixed mode)


CLASSPATH=
.:/home/myultrat/ssl/paypal/crypto-150/jars/bcprov-jdk14-124.jar:/home/myultrat/ssl/paypal/crypto-150/jars/bcpg-jdk14-124.jar:/home/myultrat/ssl/paypal/crypto-150/jars/bctest-jdk14-124.jar:/home/myultrat/ssl/paypal/crypto-150/jars/bcmail-jdk14-124.jar

compiling java files ...
ButtonEncryption.java:16: error: package org.bouncycastle.cms does not exist
import org.bouncycastle.cms.CMSException;
                           ^
com/paypal/crypto/sample/ClientSide.java:26: error: package org.bouncycastle.cms does not exist
import org.bouncycastle.cms.CMSEnvelopedData;
                           ^
com/paypal/crypto/sample/ClientSide.java:27: error: package org.bouncycastle.cms does not exist
import org.bouncycastle.cms.CMSEnvelopedDataGenerator;
                           ^
com/paypal/crypto/sample/ClientSide.java:28: error: package org.bouncycastle.cms does not exist
import org.bouncycastle.cms.CMSException;
                           ^
com/paypal/crypto/sample/ClientSide.java:29: error: package org.bouncycastle.cms does not exist
import org.bouncycastle.cms.CMSProcessableByteArray;
                           ^
com/paypal/crypto/sample/ClientSide.java:30: error: package org.bouncycastle.cms does not exist
import org.bouncycastle.cms.CMSSignedData;
                           ^
com/paypal/crypto/sample/ClientSide.java:31: error: package org.bouncycastle.cms does not exist
import org.bouncycastle.cms.CMSSignedDataGenerator;
                           ^
com/paypal/crypto/sample/ClientSide.java:32: error: package org.bouncycastle.openssl does not exist
import org.bouncycastle.openssl.PEMReader;
                               ^
com/paypal/crypto/sample/ClientSide.java:33: error: package org.bouncycastle.util.encoders does not exist
import org.bouncycastle.util.encoders.Base64;
                                     ^
com/paypal/crypto/sample/ClientSide.java:67: error: cannot find symbol
                        CMSException
                        ^
  symbol:   class CMSException
  location: class ClientSide
ButtonEncryption.java:32: error: package org.bouncycastle.jce.provider does not exist
                Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
                                                                      ^
ButtonEncryption.java:116: error: cannot find symbol
                catch (CMSException e)
                       ^
  symbol:   class CMSException
  location: class ButtonEncryption
com/paypal/crypto/sample/ClientSide.java:94: error: cannot find symbol
                CMSSignedDataGenerator signedGenerator = new CMSSignedDataGenerator();
                ^
  symbol:   class CMSSignedDataGenerator
  location: class ClientSide
com/paypal/crypto/sample/ClientSide.java:94: error: cannot find symbol
                CMSSignedDataGenerator signedGenerator = new CMSSignedDataGenerator();
                                                             ^
  symbol:   class CMSSignedDataGenerator
  location: class ClientSide
com/paypal/crypto/sample/ClientSide.java:96: error: cannot find symbol
                signedGenerator.addSigner( privateKey, certificate, CMSSignedDataGenerator.DIGEST_SHA1 );
                                                                    ^
  symbol:   variable CMSSignedDataGenerator
  location: class ClientSide
com/paypal/crypto/sample/ClientSide.java:103: error: cannot find symbol
                CMSProcessableByteArray cmsByteArray = new CMSProcessableByteArray(data);
                ^
  symbol:   class CMSProcessableByteArray
  location: class ClientSide
com/paypal/crypto/sample/ClientSide.java:103: error: cannot find symbol
                CMSProcessableByteArray cmsByteArray = new CMSProcessableByteArray(data);
                                                           ^
  symbol:   class CMSProcessableByteArray
  location: class ClientSide
com/paypal/crypto/sample/ClientSide.java:108: error: cannot find symbol
                CMSSignedData signedData = signedGenerator.generate(cmsByteArray, true, "BC");
                ^
  symbol:   class CMSSignedData
  location: class ClientSide
com/paypal/crypto/sample/ClientSide.java:112: error: cannot find symbol
                CMSEnvelopedDataGenerator envGenerator = new CMSEnvelopedDataGenerator();
                ^
  symbol:   class CMSEnvelopedDataGenerator
  location: class ClientSide
com/paypal/crypto/sample/ClientSide.java:112: error: cannot find symbol
                CMSEnvelopedDataGenerator envGenerator = new CMSEnvelopedDataGenerator();
                                                             ^
  symbol:   class CMSEnvelopedDataGenerator
  location: class ClientSide
com/paypal/crypto/sample/ClientSide.java:114: error: cannot find symbol
                CMSEnvelopedData envData = envGenerator.generate( new CMSProcessableByteArray(signed),
                ^
  symbol:   class CMSEnvelopedData
  location: class ClientSide
com/paypal/crypto/sample/ClientSide.java:114: error: cannot find symbol
                CMSEnvelopedData envData = envGenerator.generate( new CMSProcessableByteArray(signed),
                                                                      ^
  symbol:   class CMSProcessableByteArray
  location: class ClientSide
com/paypal/crypto/sample/ClientSide.java:115: error: cannot find symbol
                                CMSEnvelopedDataGenerator.DES_EDE3_CBC, "BC" );
                                ^
  symbol:   variable CMSEnvelopedDataGenerator
  location: class ClientSide
com/paypal/crypto/sample/ClientSide.java:129: error: cannot find symbol
                byte[] stringBytes = Base64.encode(bytes);
                                     ^
  symbol:   variable Base64
  location: class ClientSide
Note: com/paypal/crypto/sample/ClientSide.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
24 errors
Done!!!!!

Open in new window



The bouncycastle files are in the paths of this file.

Here's the code:

#!/bin/bash

#export CRYPTO_HOME="/x/home/dhan/java_client/crypto-124"
export CRYPTO_HOME="/home/myultrat/ssl/paypal/crypto-150"

if [ ! -d ${CRYPTO_HOME} ]; then
	echo cannot find crypto distribution ...
	return 1;
fi

CLASSPATH="."
CLASSPATH="$CLASSPATH:$CRYPTO_HOME/jars/bcprov-jdk14-124.jar"
CLASSPATH="$CLASSPATH:$CRYPTO_HOME/jars/bcpg-jdk14-124.jar"
CLASSPATH="$CLASSPATH:$CRYPTO_HOME/jars/bctest-jdk14-124.jar"
CLASSPATH="$CLASSPATH:$CRYPTO_HOME/jars/bcmail-jdk14-124.jar"
export CLASSPATH

#JAVA=/x/contrib/j2sdk1.4.0/bin/java
#JAVAC=/x/contrib/j2sdk1.4.0/bin/javac
#JAR=/x/contrib/j2sdk1.4.0/bin/jar

JAVA=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25/bin/java
JAVAC=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25/bin/javac
JAR=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25/bin/jar

echo
echo "Be sure Java version is at least 1.4"
$JAVA -version
echo ; echo ; #sleep 3


echo "CLASSPATH="
echo $CLASSPATH
echo

echo compiling java files ...
$JAVAC -g -classpath "$CLASSPATH" 	                \
	ButtonEncryption.java	\
	com/paypal/crypto/sample/*.java

echo "Done!!!!!"

Open in new window


What's wrong with the code or my paths?

Thank you,
Victor
Avatar of Victor Kimura
Victor Kimura
Flag of Canada image

ASKER

I noticed in the ButtonEncryption.java file the import packages are listed as:

import com.paypal.crypto.sample.*;

import java.io.*;
import java.security.InvalidAlgorithmParameterException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.Security;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertStoreException;
import java.security.cert.CertificateException;
import org.bouncycastle.cms.CMSException;

Open in new window


Is there a way for me to download the:
package org.bouncycastle.cms
manually and then compile. If so, how?

I see in the bouncycastle site docs that package is described:
http://www.bouncycastle.org/docs/pkixdocs1.5on/index.html

The ClientSide.java file has other problems.

These are the import statements for this file:

 */
package com.paypal.crypto.sample;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.security.InvalidAlgorithmParameterException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PrivateKey;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertStore;
import java.security.cert.CertStoreException;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.CollectionCertStoreParameters;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Enumeration;

import org.bouncycastle.cms.CMSEnvelopedData;
import org.bouncycastle.cms.CMSEnvelopedDataGenerator;
import org.bouncycastle.cms.CMSException;
import org.bouncycastle.cms.CMSProcessableByteArray;
import org.bouncycastle.cms.CMSSignedData;
import org.bouncycastle.cms.CMSSignedDataGenerator;
import org.bouncycastle.openssl.PEMReader;
import org.bouncycastle.util.encoders.Base64;

Open in new window

ButtonEncryption.java
ClientSide.java
SOLUTION
Avatar of CEHJ
CEHJ
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
@CEHJ, thank you! I noticed since you told me that that my filenames were incorrect.

So I corrected them.

I'm down to 6 errors. Something about package org.bouncycastle.openssl error. Where do I get this package?

bash build-app4.sh
Be sure Java version is at least 1.4
java version "1.7.0_25"
OpenJDK Runtime Environment (rhel-2.3.10.5.el5_9-i386)
OpenJDK Client VM (build 23.7-b01, mixed mode)


CLASSPATH=
.:/home/myultrat/ssl/paypal/crypto-150/jars/bcprov-jdk15on-150.jar:/home/myultrat/ssl/paypal/crypto-150/jars/bcpg-jdk15on-150.jar:/home/myultrat/ssl/paypal/crypto-150/jars/bctest-jdk15on-150.jar:/home/myultrat/ssl/paypal/crypto-150/jars/bcmail-jdk15on-150.jar:/home/myultrat/ssl/paypal/crypto-150/jars/bcpkix-jdk15on-150.jar:/home/myultrat/ssl/paypal/crypto-150/jars/bcprov-debug-jdk15on-150.jar:/home/myultrat/ssl/paypal/crypto-150/jars/bcprov-ext-debug-jdk15on-150.jar:/home/myultrat/ssl/paypal/crypto-150/jars/bcprov-ext-jdk15on-150.jar
compiling java files ...
com/paypal/crypto/sample/ClientSide.java:32: error: cannot find symbol
import org.bouncycastle.openssl.PEMReader;
                               ^
  symbol:   class PEMReader
  location: package org.bouncycastle.openssl
com/paypal/crypto/sample/ClientSide.java:96: error: cannot find symbol
                signedGenerator.addSigner( privateKey, certificate, CMSSignedDataGenerator.DIGEST_SHA1 );
                               ^
  symbol:   method addSigner(PrivateKey,X509Certificate,String)
  location: variable signedGenerator of type CMSSignedDataGenerator
com/paypal/crypto/sample/ClientSide.java:101: error: cannot find symbol
                signedGenerator.addCertificatesAndCRLs(certStore);
                               ^
  symbol:   method addCertificatesAndCRLs(CertStore)
  location: variable signedGenerator of type CMSSignedDataGenerator
com/paypal/crypto/sample/ClientSide.java:108: error: no suitable method found for generate(CMSProcessableByteArray,boolean,String)
                CMSSignedData signedData = signedGenerator.generate(cmsByteArray, true, "BC");
                                                          ^
    method CMSSignedDataGenerator.generate(CMSTypedData,boolean) is not applicable
      (actual and formal argument lists differ in length)
    method CMSSignedDataGenerator.generate(CMSTypedData) is not applicable
      (actual and formal argument lists differ in length)
com/paypal/crypto/sample/ClientSide.java:113: error: cannot find symbol
                envGenerator.addKeyTransRecipient(payPalCert);
                            ^
  symbol:   method addKeyTransRecipient(X509Certificate)
  location: variable envGenerator of type CMSEnvelopedDataGenerator
com/paypal/crypto/sample/ClientSide.java:114: error: method generate in class CMSEnvelopedDataGenerator cannot be applied to given types;
                CMSEnvelopedData envData = envGenerator.generate( new CMSProcessableByteArray(signed),
                                                       ^
  required: CMSTypedData,OutputEncryptor
  found: CMSProcessableByteArray,String,String
  reason: actual and formal argument lists differ in length
Note: com/paypal/crypto/sample/ClientSide.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
6 errors
Done!!!!!

Open in new window


Here's my build-app4.sh code:

#!/bin/bash

#export CRYPTO_HOME="/x/home/dhan/java_client/crypto-124"
export CRYPTO_HOME=/home/myultrat/ssl/paypal/crypto-150

if test ! -d $CRYPTO_HOME; then
	echo cannot find crypto distribution ...
	return 1;
fi

CLASSPATH="."
CLASSPATH="$CLASSPATH:$CRYPTO_HOME/jars/bcprov-jdk15on-150.jar"
CLASSPATH="$CLASSPATH:$CRYPTO_HOME/jars/bcpg-jdk15on-150.jar"
CLASSPATH="$CLASSPATH:$CRYPTO_HOME/jars/bctest-jdk15on-150.jar"
CLASSPATH="$CLASSPATH:$CRYPTO_HOME/jars/bcmail-jdk15on-150.jar"
CLASSPATH="$CLASSPATH:$CRYPTO_HOME/jars/bcpkix-jdk15on-150.jar"
CLASSPATH="$CLASSPATH:$CRYPTO_HOME/jars/bcprov-debug-jdk15on-150.jar"
CLASSPATH="$CLASSPATH:$CRYPTO_HOME/jars/bcprov-ext-debug-jdk15on-150.jar"
CLASSPATH="$CLASSPATH:$CRYPTO_HOME/jars/bcprov-ext-jdk15on-150.jar"
export CLASSPATH

#JAVA=/x/contrib/j2sdk1.4.0/bin/java
#JAVAC=/x/contrib/j2sdk1.4.0/bin/javac
#JAR=/x/contrib/j2sdk1.4.0/bin/jar

JAVA=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25/bin/java
JAVAC=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25/bin/javac
JAR=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25/bin/jar
export JAVA
export JAVAC
export JAR

echo "Be sure Java version is at least 1.4"
$JAVA -version
echo ; echo ; #sleep 3

echo "CLASSPATH="
echo $CLASSPATH

echo compiling java files ...
$JAVAC -g -classpath "$CLASSPATH" 	                \
	ButtonEncryption.java	\
	com/paypal/crypto/sample/*.java

echo "Done!!!!!"

Open in new window


Attaching as a file too.
build-app4.sh
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
response from bouncycastle mailing list added.
:)

Well done to you for documenting the response from the BC people

Badly done to Paypal for not updating their BC code !