Skip to content

Commit 575e190

Browse files
authored
Merge pull request #124 from CyberSource/future
Future
2 parents d7ea223 + 41717cb commit 575e190

21 files changed

+97
-55
lines changed

.travis.yml

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
language: java
2-
"dist": "precise"
2+
"dist": "trusty"
3+
34
jdk:
4-
- oraclejdk8
5-
- oraclejdk7
6-
- openjdk7
7-
- openjdk6
5+
- openjdk7
6+
- oraclejdk8

README.md

+14-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ To install the `cybersource-sdk-java` from central repository, add dependency to
1010
<dependency>
1111
<groupId>com.cybersource</groupId>
1212
<artifactId>cybersource-sdk-java</artifactId>
13-
<version>6.2.6</version>
13+
<version>6.2.7</version>
1414
</dependency>
1515
```
1616
Run `mvn install` to install dependency
@@ -183,6 +183,19 @@ Retry Pattern allows to retry sending a failed request and it will only work wit
183183

184184
## Changes
185185

186+
Version Cybersource-sdk-java 6.2.7 (MAR,2019)
187+
_______________________________
188+
189+
1) Fixed security vulnerabilities found in the jar dependencies. 1)xmlsec 2)opensaml 3)bcprov
190+
xmlsec jar :-upgraded from version 1.4.3 to version 2.0.7
191+
opensaml jar :- Removed this jar as its not impacting our code base
192+
bcprov jar :- upgraded from version 1.54 to version 1.61
193+
194+
2) Fixed reseller issue. Now using keyfile password to store/load p12 certs.
195+
196+
197+
_______________________________
198+
186199
Version Cybersource-sdk-java 6.2.6 (MAY,2018)
187200
_______________________________
188201
1) Added certificateCacheEnabled optional feature. certificateCacheEnabled parameter is set to false (default is true), the p12 certificate of a merchant will be reloaded from filesystem every time a transaction is made.If the certificateCacheEnabled is true then only at the first time certificate of a merchant will loaded from filesystem.

java/pom.xml

+8-2
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@
188188
<dependency>
189189
<groupId>org.apache.santuario</groupId>
190190
<artifactId>xmlsec</artifactId>
191-
<version>1.4.3</version>
191+
<version>2.0.7</version>
192192
</dependency>
193193
<dependency>
194194
<groupId>commons-httpclient</groupId>
@@ -204,12 +204,18 @@
204204
<dependency>
205205
<groupId>org.bouncycastle</groupId>
206206
<artifactId>bcprov-jdk15on</artifactId>
207-
<version>1.54</version>
207+
<version>1.61</version>
208208
</dependency>
209209
<dependency>
210210
<groupId>org.apache.ws.security</groupId>
211211
<artifactId>wss4j</artifactId>
212212
<version>1.6.19</version>
213+
<exclusions>
214+
<exclusion>
215+
<groupId>org.opensaml</groupId>
216+
<artifactId>opensaml</artifactId>
217+
</exclusion>
218+
</exclusions>
213219
</dependency>
214220
<dependency>
215221
<groupId>org.apache.commons</groupId>

java/src/main/java/com/cybersource/ws/client/Identity.java

+9-6
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ public class Identity {
4040
private long lastModifiedDate;
4141

4242
private static final String SERVER_ALIAS = "CyberSource_SJC_US";
43-
43+
44+
private char[] pswd;
45+
4446
private Logger logger = null;
4547

4648
/**
@@ -122,11 +124,8 @@ public Identity(MerchantConfig merchantConfig,X509Certificate x509Certificate, P
122124
*/
123125

124126
public boolean isValid(File keyFile) {
125-
126127
boolean changeKeyFileStatus=(this.lastModifiedDate == keyFile.lastModified());
127-
128128
if (!changeKeyFileStatus) {
129-
130129
logger.log(Logger.LT_INFO, "Key file changed");
131130
logger.log(Logger.LT_INFO, "Timestamp of current key file:"+keyFile.lastModified());
132131
}
@@ -142,6 +141,7 @@ private void setUpMerchant() throws SignException {
142141
throw new SignException("Exception while obtaining private key from KeyStore with alias, '" + merchantConfig.getKeyAlias() + "'");
143142
}
144143
name = merchantConfig.getMerchantID();
144+
pswd = merchantConfig.getKeyPassword().toCharArray();
145145
serialNumber = subjectDNrray[1];
146146
keyAlias = "serialNumber=" + serialNumber + ",CN=" + name;
147147
} else {
@@ -197,8 +197,11 @@ public String getSerialNumber() {
197197

198198
return serialNumber;
199199
}
200-
201-
200+
201+
public char[] getPswd() {
202+
return pswd;
203+
}
204+
202205
public void setSerialNumber(String serialNumber) {
203206
this.serialNumber = serialNumber;
204207
}

java/src/main/java/com/cybersource/ws/client/MessageHandlerKeyStore.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public void addIdentityToKeyStore(Identity id, Logger logger) throws SignEncrypt
2626
try {
2727
if (privateKey != null) {
2828
X509Certificate[] certChain = {certificate};
29-
getKeyStore().setKeyEntry(id.getKeyAlias(), privateKey, id.getName().toCharArray(), certChain);
29+
getKeyStore().setKeyEntry(id.getKeyAlias(), privateKey, id.getPswd(), certChain);
3030
} else {
3131
getKeyStore().setCertificateEntry(id.getKeyAlias(), certificate);
3232
}

java/src/main/java/com/cybersource/ws/client/Utility.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ private Utility() {
4848
/**
4949
* Version number of this release.
5050
*/
51-
public static final String VERSION = "6.2.6";
51+
public static final String VERSION = "6.2.7";
5252

5353
/**
5454
* If in the Request map, a key called "_has_escapes" is present and is set

java/src/test/java/com/cybersource/ws/client/IdentityTest.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public void setUp() throws Exception {
3030
}
3131

3232
@Test
33-
public void testSetUpMerchant() throws InstantiationException, IllegalAccessException, SignException, ConfigException{
33+
public void testSetUpMerchant() throws SignException, ConfigException{
3434
File p12file = Mockito.mock(File.class);
3535
MerchantConfig mc = Mockito.mock(MerchantConfig.class);
3636

@@ -43,9 +43,11 @@ public void testSetUpMerchant() throws InstantiationException, IllegalAccessExce
4343
Mockito.when(principal.getName()).thenReturn(keyAlias);
4444

4545
Mockito.when(mc.getKeyFile()).thenReturn(p12file);
46+
Mockito.when(mc.getKeyPassword()).thenReturn("testPwd");
4647
Identity identity = new Identity(mc,x509Cert,pkey,logger);
4748
assertEquals(identity.getName(), mc.getMerchantID());
4849
assertEquals(identity.getSerialNumber(), "400000009910179089277");
50+
assertEquals(String.valueOf(identity.getPswd()), "testPwd");
4951
assertNotNull(identity.getPrivateKey());
5052
}
5153

java/src/test/java/com/cybersource/ws/client/SecurityUtilIT.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -163,13 +163,20 @@ public void testMerchantIdentityToKeyStore() throws Exception{
163163

164164
Mockito.when(identity.getPrivateKey()).thenReturn(newPkay);
165165
Mockito.when(identity.getX509Cert()).thenReturn(x509Cert);
166-
Mockito.when(identity.getName()).thenReturn("MahenCertTest");
167166
Mockito.when(identity.getKeyAlias()).thenReturn("MahenCertTest");
167+
Mockito.when(identity.getPswd()).thenReturn("testPwd".toCharArray());
168168

169169
MessageHandlerKeyStore mhKeyStore= new MessageHandlerKeyStore();
170+
170171
MessageHandlerKeyStore spyMhKeyStore = Mockito.spy(mhKeyStore);
171172
Mockito.when(spyMhKeyStore.getKeyStore()).thenReturn(myKeystore);
172173
spyMhKeyStore.addIdentityToKeyStore(identity,logger);
174+
175+
Mockito.verify(identity,times(1)).getKeyAlias();
176+
Mockito.verify(identity,times(1)).getPrivateKey();
177+
Mockito.verify(identity,times(1)).getPswd();
178+
Mockito.verify(identity,times(1)).getX509Cert();
179+
173180
}
174181

175182
@Test

java/src/test/java/com/cybersource/ws/client/UtilityTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class UtilityTest extends BaseTest {
1616

1717
@Before
1818
public void setUp() {
19-
URL fileUrl = Thread.currentThread().getContextClassLoader().getResource("test_cybs.properties");
19+
URL fileUrl = Thread.currentThread().getContextClassLoader().getResource("test_cybs.properties");
2020
String filepath = "";
2121
if(fileUrl != null) {
2222
propertiesFilename = fileUrl.getFile();

pom.xml

+7-12
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,6 @@
44
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
55

66
<modelVersion>4.0.0</modelVersion>
7-
8-
<name>cybersource-sdk-java-master</name>
9-
10-
<modules>
11-
<module>zip</module>
12-
<module>java</module>
13-
</modules>
14-
15-
<packaging>pom</packaging>
16-
177
<parent>
188
<groupId>org.sonatype.oss</groupId>
199
<artifactId>oss-parent</artifactId>
@@ -22,7 +12,12 @@
2212

2313
<groupId>com.cybersource</groupId>
2414
<artifactId>cybersource-sdk-master</artifactId>
25-
<version>6.2.7</version>
26-
15+
<version>6.2.7-SNAPSHOT</version>
16+
<name>cybersource-sdk-java-master</name>
17+
<packaging>pom</packaging>
2718

19+
<modules>
20+
<module>zip</module>
21+
<module>java</module>
22+
</modules>
2823
</project>

samples/nvp/compileSample.bat

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
set LOCAL_CP=
44
rem ----------------------------------------------------------------------------
5-
rem Replace this with cybersource-sdk-java-6.2.6.jar when using Java SDK 1.6 or later.
5+
rem Replace this with cybersource-sdk-java-6.2.7.jar when using Java SDK 1.6 or later.
66
rem If using this scripts outside zip package then give maven clean install.
77
rem This will generate all required dependencies under target/dependencies.These dependencies are used in CLASSPATH.
88
rem ----------------------------------------------------------------------------
99

10-
if exist ../../lib set LOCAL_CP=%LOCAL_CP%;../../lib/cybersource-sdk-java-6.2.6.jar
10+
if exist ../../lib set LOCAL_CP=%LOCAL_CP%;../../lib/cybersource-sdk-java-6.2.7.jar
1111
if not exist ../../lib (
1212
if not exist target goto error
13-
set LOCAL_CP=%LOCAL_CP%;target/dependencies/cybersource-sdk-java-6.2.6.jar
13+
set LOCAL_CP=%LOCAL_CP%;target/dependencies/cybersource-sdk-java-6.2.7.jar
1414
)
1515

1616
if not exist classes mkdir classes

samples/nvp/compileSample.sh

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
LOCAL_CP=
44
# -----------------------------------------------------------------------------
5-
# Replace this with cybersource-sdk-java-6.2.6.jar when using Java SDK 1.6 or later.
5+
# Replace this with cybersource-sdk-java-6.2.7.jar when using Java SDK 1.6 or later.
66
# If using this scripts outside zip package then give maven clean install.
77
# This will generate all required dependencies under target/dependencies.These dependencies are used in CLASSPATH.
88
# -----------------------------------------------------------------------------
99

1010
if test -d ../../lib
11-
then LOCAL_CP=$LOCAL_CP:../../lib/cybersource-sdk-java-6.2.6.jar
11+
then LOCAL_CP=$LOCAL_CP:../../lib/cybersource-sdk-java-6.2.7.jar
1212
fi
1313

1414
if test ! -d ../../lib
@@ -19,7 +19,7 @@ then
1919
echo "Execute maven clean install , This will generate all required dependencies under target/dependencies!!"
2020
exit 1
2121
fi
22-
LOCAL_CP=$LOCAL_CP:target/dependencies/cybersource-sdk-java-6.2.6.jar
22+
LOCAL_CP=$LOCAL_CP:target/dependencies/cybersource-sdk-java-6.2.7.jar
2323
fi
2424

2525
if test ! -d ./classes

samples/nvp/pom.xml

+11-2
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,14 @@
77
<version>1.0.0</version>
88
<name>RunSample</name>
99
<url>http://maven.apache.org</url>
10+
<properties>
11+
<javasdk.version>[6.2.0, 6.2.8-SNAPSHOT]</javasdk.version>
12+
</properties>
1013
<dependencies>
1114
<dependency>
1215
<groupId>com.cybersource</groupId>
1316
<artifactId>cybersource-sdk-java</artifactId>
14-
<version>6.2.6</version>
17+
<version>${javasdk.version}</version>
1518
</dependency>
1619
<dependency>
1720
<groupId>commons-httpclient</groupId>
@@ -27,12 +30,18 @@
2730
<dependency>
2831
<groupId>org.bouncycastle</groupId>
2932
<artifactId>bcprov-jdk15on</artifactId>
30-
<version>1.54</version>
33+
<version>1.61</version>
3134
</dependency>
3235
<dependency>
3336
<groupId>org.apache.ws.security</groupId>
3437
<artifactId>wss4j</artifactId>
3538
<version>1.6.19</version>
39+
<exclusions>
40+
<exclusion>
41+
<groupId>org.opensaml</groupId>
42+
<artifactId>opensaml</artifactId>
43+
</exclusion>
44+
</exclusions>
3645
</dependency>
3746
<dependency>
3847
<groupId>org.apache.commons</groupId>

samples/nvp/runSample.bat

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ set LOCAL_CP=
44
set LOCAL_CP=%LOCAL_CP%;classes
55

66
rem ----------------------------------------------------------------------------
7-
rem Replace cybersource-sdk-java-6.2.6.jar when using Java SDK 1.6 or later.
7+
rem Replace cybersource-sdk-java-6.2.7.jar when using Java SDK 1.6 or later.
88
rem If using this scripts outside zip package then give maven clean install.
99
rem This will generate all required dependencies under target/dependencies.These dependencies are used in CLASSPATH.
1010
rem ----------------------------------------------------------------------------

samples/nvp/runSample.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ LOCAL_CP=
44
LOCAL_CP=$LOCAL_CP:./classes
55

66
# -----------------------------------------------------------------------------
7-
# Replace this with cybersource-sdk-java-6.2.6.jar when using Java SDK 1.6 or later.
7+
# Replace this with cybersource-sdk-java-6.2.7.jar when using Java SDK 1.6 or later.
88
# If using this scripts outside zip package then give maven clean install.
99
# This will generate all required dependencies under target/dependencies.These dependencies are used in CLASSPATH.
1010
# -----------------------------------------------------------------------------

samples/xml/compileSample.bat

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
set LOCAL_CP=
44
rem ----------------------------------------------------------------------------
5-
rem Replace this with cybersource-sdk-java-6.2.6.jar when using Java SDK 1.6 or later.
5+
rem Replace this with cybersource-sdk-java-6.2.7.jar when using Java SDK 1.6 or later.
66
rem If using this scripts outside zip package then give maven clean install.
77
rem This will generate all required dependencies under target/dependencies.These dependencies are used in CLASSPATH.
88
rem ----------------------------------------------------------------------------
99

10-
if exist ../../lib set LOCAL_CP=%LOCAL_CP%;../../lib/cybersource-sdk-java-6.2.6.jar
10+
if exist ../../lib set LOCAL_CP=%LOCAL_CP%;../../lib/cybersource-sdk-java-6.2.7.jar
1111
if not exist ../../lib (
1212
if not exist target goto error
13-
set LOCAL_CP=%LOCAL_CP%;target/dependencies/cybersource-sdk-java-6.2.6.jar
13+
set LOCAL_CP=%LOCAL_CP%;target/dependencies/cybersource-sdk-java-6.2.7.jar
1414
)
1515

1616
if not exist classes mkdir classes

samples/xml/compileSample.sh

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
LOCAL_CP=
44
# -----------------------------------------------------------------------------
5-
# Replace this with cybersource-sdk-java-6.2.6.jar when using Java SDK 1.6 or later.
5+
# Replace this with cybersource-sdk-java-6.2.7.jar when using Java SDK 1.6 or later.
66
# If using this scripts outside zip package then give maven clean install.
77
# This will generate all required dependencies under target/dependencies.These dependencies are used in CLASSPATH.
88
# -----------------------------------------------------------------------------
99

1010
if test -d ../../lib
11-
then LOCAL_CP=$LOCAL_CP:../../lib/cybersource-sdk-java-6.2.6.jar
11+
then LOCAL_CP=$LOCAL_CP:../../lib/cybersource-sdk-java-6.2.7.jar
1212
fi
1313

1414
if test ! -d ../../lib
@@ -19,7 +19,7 @@ then
1919
echo "Execute maven clean install , This will generate all required dependencies under target/dependencies!!"
2020
exit 1
2121
fi
22-
LOCAL_CP=$LOCAL_CP:target/dependencies/cybersource-sdk-java-6.2.6.jar
22+
LOCAL_CP=$LOCAL_CP:target/dependencies/cybersource-sdk-java-6.2.7.jar
2323
fi
2424

2525
if test ! -d ./classes

samples/xml/pom.xml

+11-2
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,14 @@
77
<version>1.0.0</version>
88
<name>RunSample</name>
99
<url>http://maven.apache.org</url>
10+
<properties>
11+
<javasdk.version>[6.2.0, 6.2.8-SNAPSHOT]</javasdk.version>
12+
</properties>
1013
<dependencies>
1114
<dependency>
1215
<groupId>com.cybersource</groupId>
1316
<artifactId>cybersource-sdk-java</artifactId>
14-
<version>6.2.6</version>
17+
<version>${javasdk.version}</version>
1518
</dependency>
1619
<dependency>
1720
<groupId>commons-httpclient</groupId>
@@ -27,12 +30,18 @@
2730
<dependency>
2831
<groupId>org.bouncycastle</groupId>
2932
<artifactId>bcprov-jdk15on</artifactId>
30-
<version>1.54</version>
33+
<version>1.61</version>
3134
</dependency>
3235
<dependency>
3336
<groupId>org.apache.ws.security</groupId>
3437
<artifactId>wss4j</artifactId>
3538
<version>1.6.19</version>
39+
<exclusions>
40+
<exclusion>
41+
<groupId>org.opensaml</groupId>
42+
<artifactId>opensaml</artifactId>
43+
</exclusion>
44+
</exclusions>
3645
</dependency>
3746
<dependency>
3847
<groupId>org.apache.commons</groupId>

0 commit comments

Comments
 (0)