Skip to content

Commit 1eab71d

Browse files
committed
github certificate test
1 parent c53598e commit 1eab71d

File tree

5 files changed

+92
-46
lines changed

5 files changed

+92
-46
lines changed

pom.xml

Lines changed: 53 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
1+
<project xmlns="http://maven.apache.org/POM/4.0.0"
2+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
23
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
34
<modelVersion>4.0.0</modelVersion>
45
<groupId>prenda</groupId>
56
<artifactId>prenda</artifactId>
67
<version>0.1.4-SNAPSHOT</version>
78
<packaging>war</packaging>
89
<properties>
9-
<spring.version>4.1.9.RELEASE</spring.version>
10-
<spring.security.version>3.2.10.RELEASE</spring.security.version>
11-
</properties>
10+
<spring.version>4.1.9.RELEASE</spring.version>
11+
<spring.security.version>3.2.10.RELEASE</spring.security.version>
12+
</properties>
1213
<dependencies>
1314
<dependency>
1415
<groupId>org.springframework</groupId>
@@ -66,9 +67,9 @@
6667
<version>${spring.version}</version>
6768
</dependency>
6869
<dependency>
69-
<groupId>org.springframework</groupId>
70-
<artifactId>spring-webmvc</artifactId>
71-
<version>${spring.version}</version>
70+
<groupId>org.springframework</groupId>
71+
<artifactId>spring-webmvc</artifactId>
72+
<version>${spring.version}</version>
7273
</dependency>
7374
<dependency>
7475
<groupId>org.springframework</groupId>
@@ -231,11 +232,6 @@
231232
<artifactId>dom4j</artifactId>
232233
<version>1.6.1</version>
233234
</dependency>
234-
<dependency>
235-
<groupId>com.lowagie</groupId>
236-
<artifactId>itext</artifactId>
237-
<version>2.1.7</version>
238-
</dependency>
239235
<dependency>
240236
<groupId>xalan</groupId>
241237
<artifactId>xalan</artifactId>
@@ -261,6 +257,25 @@
261257
<artifactId>jasperreports</artifactId>
262258
<version>5.6.1</version>
263259
</dependency>
260+
<dependency>
261+
<groupId>com.lowagie</groupId>
262+
<artifactId>itext</artifactId>
263+
<version>2.1.7</version>
264+
<exclusions>
265+
<exclusion>
266+
<groupId>bouncycastle</groupId>
267+
<artifactId>bcmail-jdk14</artifactId>
268+
</exclusion>
269+
<exclusion>
270+
<groupId>bouncycastle</groupId>
271+
<artifactId>bcprov-jdk14</artifactId>
272+
</exclusion>
273+
<exclusion>
274+
<groupId>org.bouncycastle</groupId>
275+
<artifactId>bctsp-jdk14</artifactId>
276+
</exclusion>
277+
</exclusions>
278+
</dependency>
264279
<dependency>
265280
<groupId>jfree</groupId>
266281
<artifactId>jfreechart</artifactId>
@@ -298,14 +313,34 @@
298313
<version>1.3.1</version>
299314
</dependency>
300315
<dependency>
301-
<groupId>org.json</groupId>
302-
<artifactId>json</artifactId>
303-
<version>20180130</version>
316+
<groupId>org.json</groupId>
317+
<artifactId>json</artifactId>
318+
<version>20180130</version>
319+
</dependency>
320+
<dependency>
321+
<groupId>io.jsonwebtoken</groupId>
322+
<artifactId>jjwt</artifactId>
323+
<version>0.9.0</version>
324+
</dependency>
325+
<dependency>
326+
<groupId>org.bouncycastle</groupId>
327+
<artifactId>bcpkix-jdk15on</artifactId>
328+
<version>1.59</version>
329+
</dependency>
330+
<dependency>
331+
<groupId>org.bouncycastle</groupId>
332+
<artifactId>bcprov-jdk15on</artifactId>
333+
<version>1.59</version>
334+
</dependency>
335+
<dependency>
336+
<groupId>org.bouncycastle</groupId>
337+
<artifactId>bcmail-jdk15on</artifactId>
338+
<version>1.59</version>
304339
</dependency>
305340
<dependency>
306-
<groupId>io.jsonwebtoken</groupId>
307-
<artifactId>jjwt</artifactId>
308-
<version>0.9.0</version>
341+
<groupId>org.bouncycastle</groupId>
342+
<artifactId>bctsp-jdk15on</artifactId>
343+
<version>1.46</version>
309344
</dependency>
310345
</dependencies>
311346
<profiles>

src/com/prenda/helper/GithubIssue.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.net.URL;
88
import java.net.URLEncoder;
99
import java.nio.charset.StandardCharsets;
10+
import java.util.Base64;
1011

1112
import org.apache.log4j.Logger;
1213
import org.json.JSONArray;
@@ -16,7 +17,7 @@ public class GithubIssue {
1617

1718
private static Logger log = Logger.getLogger(GithubIssue.class);
1819

19-
public int create(String title, String body, String username, String repo, String [] labels, String [] assignees) {
20+
public int create(String title, String body, String username, String repo, String [] labels, String [] assignees, String token) {
2021
int issue = 0;
2122
if(exists(title,username,repo)) {
2223
return issue;
@@ -48,12 +49,14 @@ public int create(String title, String body, String username, String repo, Strin
4849
conn.setRequestProperty("charset", "utf-8");
4950
conn.setRequestProperty("Content-Length", Integer.toString(postDataLength));
5051
conn.setUseCaches(false);
51-
/*Personal Access Token only
52-
* String encoded = Base64.getEncoder()
52+
//Personal Access Token only
53+
String encoded = Base64.getEncoder()
5354
.encodeToString((username + ":" + token).getBytes(StandardCharsets.UTF_8));
54-
conn.setRequestProperty("Authorization", "Basic " + encoded);*/
55+
conn.setRequestProperty("Authorization", "Basic " + encoded);
56+
/*
5557
KeyUtil ku = new KeyUtil();
5658
conn.setRequestProperty("Authorization", "Bearer " + ku.getJws());
59+
*/
5760
DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
5861
wr.write(postData);
5962
int responseCode = conn.getResponseCode();

src/com/prenda/helper/KeyUtil.java

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,47 @@
11
package com.prenda.helper;
22

3-
import java.io.DataInputStream;
4-
import java.io.File;
5-
import java.io.FileInputStream;
6-
import java.security.KeyFactory;
7-
import java.security.interfaces.RSAPrivateKey;
8-
import java.security.spec.PKCS8EncodedKeySpec;
9-
import java.util.Base64;
3+
import java.io.FileReader;
4+
import java.security.Key;
5+
import java.security.KeyPair;
106
import java.util.Date;
117
import java.util.GregorianCalendar;
128
import java.util.Properties;
139

10+
import org.apache.log4j.Logger;
11+
import org.bouncycastle.openssl.PEMKeyPair;
12+
import org.bouncycastle.openssl.PEMParser;
13+
import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
14+
1415
import com.prenda.servlet.RegisterOwner;
1516

1617
import io.jsonwebtoken.Jwts;
1718
import io.jsonwebtoken.SignatureAlgorithm;
18-
import io.jsonwebtoken.impl.TextCodec;
1919

2020
public class KeyUtil {
21+
22+
private static Logger log = Logger.getLogger(KeyUtil.class);
2123

2224
public String getJws() {
2325
String jws="";
2426
try {
2527
Properties props = new Properties();
2628
props.load(RegisterOwner.class.getResourceAsStream("/env.properties"));
27-
// String token = props.getProperty("github.token");
2829
String path = props.getProperty("github.pem");
2930
GregorianCalendar gc = new GregorianCalendar();
3031
gc.add(GregorianCalendar.MINUTE, 10);
3132
jws = Jwts.builder().setIssuer("10575").setIssuedAt(new Date()).setExpiration(gc.getTime())
32-
.signWith(SignatureAlgorithm.RS256, getPemPrivateKey(path, "RSA")).compact();
33-
33+
.signWith(SignatureAlgorithm.RS256, getPemPrivateKey(path, "BC")).compact();
34+
log.info("jws: "+ jws);
3435
} catch (Exception e) {
3536
e.printStackTrace();
3637
}
3738
return jws;
3839
}
3940

40-
public RSAPrivateKey getPemPrivateKey(String filename, String algorithm) {
41-
RSAPrivateKey rSAPrivateKey = null;
41+
public Key getPemPrivateKey(String filename, String provider) {
42+
Key key = null;
4243
try {
44+
/* PKCS8
4345
File f = new File(filename);
4446
FileInputStream fis = new FileInputStream(f);
4547
DataInputStream dis = new DataInputStream(fis);
@@ -48,18 +50,24 @@ public RSAPrivateKey getPemPrivateKey(String filename, String algorithm) {
4850
dis.close();
4951
5052
String temp = new String(keyBytes);
51-
String privKeyPEM = temp.replace("-----BEGIN PRIVATE KEY-----\n", "");
52-
privKeyPEM = privKeyPEM.replace("-----END PRIVATE KEY-----", "");
53-
// System.out.println("Private key\n"+privKeyPEM);
53+
String privKeyPEM = temp.replace("-----BEGIN RSA PRIVATE KEY-----\n", ""); //PCKS1 is -----BEGIN PRIVATE KEY-----\n
54+
privKeyPEM = privKeyPEM.replace("-----END RSA PRIVATE KEY-----", ""); // //PCKS1 is -----END PRIVATE KEY-----
55+
log.info("Private key\n"+privKeyPEM);
5456
5557
byte[] decoded = Base64.getDecoder().decode(privKeyPEM); // TextCodec.BASE64.decode(privKeyPEM); //
5658
57-
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(decoded);
59+
/*PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(decoded);
5860
KeyFactory kf = KeyFactory.getInstance(algorithm);
59-
rSAPrivateKey = (RSAPrivateKey) kf.generatePrivate(spec);
61+
rSAPrivateKey = (RSAPrivateKey) kf.generatePrivate(spec);*/
62+
63+
PEMParser pemParser = new PEMParser(new FileReader(filename));
64+
JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider(provider);
65+
Object object = pemParser.readObject();
66+
KeyPair kp = converter.getKeyPair((PEMKeyPair) object);
67+
key = (Key) kp.getPrivate();
6068
} catch (Exception e) {
6169
e.printStackTrace();
6270
}
63-
return rSAPrivateKey;
71+
return key;
6472
}
6573
}

src/com/prenda/servlet/GlobalDefaultExceptionHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ public ModelAndView defaultErrorHandler(HttpServletRequest request, Exception e)
2020
String url = request.getRequestURL().toString();
2121
String stackTrace ="";
2222
for(StackTraceElement element: e.getStackTrace()) {
23-
stackTrace += element.getClassName()+" "+element.getMethodName()+" "+element.getLineNumber() +"%0a";
23+
stackTrace += element.getClassName()+" "+element.getMethodName()+" "+element.getLineNumber() +"<br/>";
2424
}
2525
mav.addObject("exception", exception);
2626
mav.addObject("url", url);
2727
String [] labels = {"bug"};
2828
String [] assignees = {"joebertj"};
2929
GithubIssue issue = new GithubIssue();
30-
issue.create(url + " " + exception, stackTrace, "joebertj", "prenda", labels, assignees);
30+
issue.create(url + " " + exception, stackTrace, "joebertj", "prenda", labels, assignees, "a3afb3526bbc4a2d5873024f056059d734f8005d");
3131
return mav;
3232
}
3333

test/unit/com/prenda/GithubIssueTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ public void testCreate() {
1414
String body = "body";
1515
String [] label = {"bug"};
1616
String [] assignees = {"joebertj"};
17-
Assert.assertEquals(0, create(title,body,"joebertj","prenda",label,assignees));
17+
Assert.assertEquals(0, create(title,body,"joebertj","prenda",label,assignees,"a3afb3526bbc4a2d5873024f056059d734f8005d"));
1818
title = CustomPasswordGenerator.getPassword(32);
19-
body = CustomPasswordGenerator.getPassword(32)+"\\n"+CustomPasswordGenerator.getPassword(32)+"%0a"+CustomPasswordGenerator.getPassword(32);
20-
Assert.assertEquals(1, create(title,body,"joebertj","prenda",label,assignees));
19+
body = CustomPasswordGenerator.getPassword(32)+"<br/>"+CustomPasswordGenerator.getPassword(32)+"<br/>"+CustomPasswordGenerator.getPassword(32);
20+
Assert.assertEquals(1, create(title,body,"joebertj","prenda",label,assignees,"a3afb3526bbc4a2d5873024f056059d734f8005d"));
2121
}
2222

2323
@Test

0 commit comments

Comments
 (0)