Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bb6874f

Browse files
committed
add query chaincode test
1 parent 35c868e commit bb6874f

File tree

105 files changed

+1428
-16
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

105 files changed

+1428
-16
lines changed

pom.xml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<groupId>ijarvis.intelliq</groupId>
66
<artifactId>FabricExample</artifactId>
77
<version>1.0-SNAPSHOT</version>
8+
89
<packaging>jar</packaging>
910

1011
<name>FabricExample</name>
@@ -31,4 +32,42 @@
3132
<version>1.0.1</version>
3233
</dependency>
3334
</dependencies>
35+
<build>
36+
<finalName>intelliq-Fabric</finalName>
37+
<plugins>
38+
<plugin>
39+
<!-- 解决编译版本包的问题 -->
40+
<groupId>org.apache.maven.plugins</groupId>
41+
<artifactId>maven-compiler-plugin</artifactId>
42+
<version>3.6.0</version>
43+
<configuration>
44+
<source>1.8</source>
45+
<target>1.8</target>
46+
<compilerVersion>1.8</compilerVersion>
47+
<encoding>UTF-8</encoding>
48+
</configuration>
49+
</plugin>
50+
<plugin>
51+
<!-- 编译可运行的jar包 -->
52+
<groupId>org.apache.maven.plugins</groupId>
53+
<artifactId>maven-shade-plugin</artifactId>
54+
<version>3.0.0</version>
55+
<executions>
56+
<execution>
57+
<phase>package</phase>
58+
<goals>
59+
<goal>shade</goal>
60+
</goals>
61+
<configuration>
62+
<transformers>
63+
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
64+
<mainClass>Apps</mainClass>
65+
</transformer>
66+
</transformers>
67+
</configuration>
68+
</execution>
69+
</executions>
70+
</plugin>
71+
</plugins>
72+
</build>
3473
</project>

src/main/java/ijarvis/intelliq/App.java

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package ijarvis.intelliq;
2+
3+
import org.apache.log4j.Logger;
4+
import org.hyperledger.fabric.sdk.*;
5+
import org.hyperledger.fabric.sdk.exception.CryptoException;
6+
import org.hyperledger.fabric.sdk.exception.InvalidArgumentException;
7+
import org.hyperledger.fabric.sdk.security.CryptoSuite;
8+
import java.util.Collection;
9+
10+
/**
11+
* Hello world!
12+
*
13+
*/
14+
public class FabricApp{
15+
private static Logger logger=Logger.getLogger(FabricApp.class);
16+
public static HFClient client=null;
17+
public static CryptoSuite cs = CryptoSuite.Factory.getCryptoSuite();
18+
public static User peer0org1=null;
19+
20+
/**
21+
* 初始化超级账本的客户端等相关属性
22+
*/
23+
public static void init() throws CryptoException, InvalidArgumentException {
24+
client = HFClient.createNewInstance();
25+
client.setCryptoSuite(cs);
26+
String keystorepath= FabricApp.class.getResource("/crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp").getPath();
27+
peer0org1 = new SampleUser(keystorepath, "Admin");
28+
client.setUserContext(peer0org1);
29+
30+
}
31+
public static void queryFabcar(Channel channel, String key) throws Exception {
32+
QueryByChaincodeRequest req = client.newQueryProposalRequest();
33+
ChaincodeID cid = ChaincodeID.newBuilder().setName("epointchaincodezzk").setVersion("0.1").build();
34+
req.setChaincodeID(cid);
35+
req.setFcn("query");
36+
req.setArgs(new String[] { key });
37+
System.out.println("Querying for " + key);
38+
Collection<ProposalResponse> resps = channel.queryByChaincode(req);
39+
for (ProposalResponse resp : resps) {
40+
String payload = new String(resp.getChaincodeActionResponsePayload());
41+
System.out.println("response: " + payload);
42+
}
43+
}
44+
45+
}
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
package ijarvis.intelliq;
2+
3+
import org.hyperledger.fabric.sdk.Enrollment;
4+
import org.hyperledger.fabric.sdk.User;
5+
6+
import javax.xml.bind.DatatypeConverter;
7+
import java.io.*;
8+
import java.nio.file.Files;
9+
import java.nio.file.Path;
10+
import java.nio.file.Paths;
11+
import java.security.GeneralSecurityException;
12+
import java.security.KeyFactory;
13+
import java.security.PrivateKey;
14+
import java.security.spec.PKCS8EncodedKeySpec;
15+
import java.util.HashSet;
16+
import java.util.Set;
17+
18+
public class SampleUser implements User {
19+
20+
private final String certFolder;
21+
private final String userName;
22+
23+
public SampleUser(String certFolder, String userName) {
24+
this.certFolder = certFolder;
25+
this.userName = userName;
26+
}
27+
28+
@Override
29+
public String getName() {
30+
return userName;
31+
}
32+
33+
@Override
34+
public Set<String> getRoles() {
35+
return new HashSet<String>();
36+
}
37+
38+
@Override
39+
public String getAccount() {
40+
return "";
41+
}
42+
43+
@Override
44+
public String getAffiliation() {
45+
return "";
46+
}
47+
48+
@Override
49+
public Enrollment getEnrollment() {
50+
return new Enrollment() {
51+
52+
@Override
53+
public PrivateKey getKey() {
54+
try {
55+
return loadPrivateKey(Paths.get(certFolder, "/keystore/ea2db84973c9c54436c47d7e10b9b63420f654ecd7c541fab14646e976294393_sk"));
56+
} catch (Exception e) {
57+
return null;
58+
}
59+
}
60+
@Override
61+
public String getCert() {
62+
try {
63+
return new String(Files.readAllBytes(Paths.get(certFolder, "/signcerts/[email protected]")));
64+
} catch (Exception e) {
65+
return "";
66+
}
67+
}
68+
};
69+
}
70+
71+
@Override
72+
public String getMspId() {
73+
return "Org1MSP";
74+
}
75+
/***
76+
* loading private key from .pem-formatted file, ECDSA algorithm
77+
* (from some example on StackOverflow, slightly changed)
78+
* @param fileName - file with the key
79+
* @return Private Key usable
80+
* @throws IOException
81+
* @throws GeneralSecurityException
82+
*/
83+
public static PrivateKey loadPrivateKey(Path fileName) throws IOException, GeneralSecurityException {
84+
PrivateKey key = null;
85+
InputStream is = null;
86+
try {
87+
is = new FileInputStream(fileName.toString());
88+
BufferedReader br = new BufferedReader(new InputStreamReader(is));
89+
StringBuilder builder = new StringBuilder();
90+
boolean inKey = false;
91+
for (String line = br.readLine(); line != null; line = br.readLine()) {
92+
if (!inKey) {
93+
if (line.startsWith("-----BEGIN ") && line.endsWith(" PRIVATE KEY-----")) {
94+
inKey = true;
95+
}
96+
continue;
97+
} else {
98+
if (line.startsWith("-----END ") && line.endsWith(" PRIVATE KEY-----")) {
99+
inKey = false;
100+
break;
101+
}
102+
builder.append(line);
103+
}
104+
}
105+
//
106+
byte[] encoded = DatatypeConverter.parseBase64Binary(builder.toString());
107+
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(encoded);
108+
KeyFactory kf = KeyFactory.getInstance("ECDSA");
109+
key = kf.generatePrivate(keySpec);
110+
} finally {
111+
is.close();
112+
}
113+
return key;
114+
}
115+
}

src/test/java/ijarvis/intelliq/AppTest.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,36 @@
22

33

44
import org.apache.log4j.Logger;
5+
import org.hyperledger.fabric.sdk.Channel;
6+
import org.hyperledger.fabric.sdk.exception.CryptoException;
7+
import org.hyperledger.fabric.sdk.exception.InvalidArgumentException;
8+
import org.hyperledger.fabric.sdk.exception.TransactionException;
9+
import org.junit.Before;
510
import org.junit.Test;
611

712
/**
813
* Unit test for simple App.
914
*/
1015
public class AppTest {
1116
private static Logger logger=Logger.getLogger(AppTest.class);
12-
@Test
13-
public void Setup(){
14-
logger.debug("Fabric Test Start........");
1517

18+
private static String CONNFIG_Orderer="grpc://192.168.188.111:7050";
19+
private static String CONNFIG_Peer0Org1="grpc://192.168.188.112:7051";
20+
private static String CHANNELID="epointchannel";
21+
@Before
22+
public void Setup() throws CryptoException, InvalidArgumentException {
23+
logger.debug("Fabric Test Init........");
24+
FabricApp fabricApp=new FabricApp();
25+
FabricApp.init();
26+
27+
}
28+
@Test
29+
public void TestEpointChainCodeQuery() throws Exception {
30+
Channel channel = FabricApp.client.newChannel(CHANNELID);
31+
channel.addPeer(FabricApp.client.newPeer("peer", CONNFIG_Peer0Org1));
32+
channel.addOrderer(FabricApp.client.newOrderer("orderer", CONNFIG_Orderer));
33+
channel.initialize();
34+
FabricApp.queryFabcar(channel, "liubo");
1635
}
1736

1837
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg/bYTxme8nVBxvEHs
3+
6MzKqP3O6b8vnChNtbsH4Ad+0qWhRANCAARNEKY+SnAH2+Iz9hCYd35eztUYfHwF
4+
gZmAVhDa5/rTvt28Qs8WKZvjOLp3DSlbLxFJdiQzPJgLqEK0PdJu4mBp
5+
-----END PRIVATE KEY-----
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICLjCCAdWgAwIBAgIQW1bqbmpm/Gqxrc6JzNaljjAKBggqhkjOPQQDAjBpMQsw
3+
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4+
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
5+
bGUuY29tMB4XDTE3MTEyMTE1MzYwNVoXDTI3MTExOTE1MzYwNVowaTELMAkGA1UE
6+
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
7+
Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
8+
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABE0Qpj5KcAfb4jP2EJh3fl7O1Rh8
9+
fAWBmYBWENrn+tO+3bxCzxYpm+M4uncNKVsvEUl2JDM8mAuoQrQ90m7iYGmjXzBd
10+
MA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMB
11+
Af8wKQYDVR0OBCIEIDH1Q7aSHEjxvMJrdRxIODWSuEUtI6dGoZhrbQRpu2F8MAoG
12+
CCqGSM49BAMCA0cAMEQCIAhRRNM45gb+JC0xe/pKnF+tBOfCofQAcUiOpXaQ60vR
13+
AiBcme4/Iml8wHNbj9W2PEsvmd/Y9mhfoqgNU1i1s2cq0Q==
14+
-----END CERTIFICATE-----
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICCTCCAbCgAwIBAgIQTG9UTqEtooxz530DZXKN1zAKBggqhkjOPQQDAjBpMQsw
3+
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4+
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
5+
bGUuY29tMB4XDTE3MTEyMTE1MzYwNVoXDTI3MTExOTE1MzYwNVowVjELMAkGA1UE
6+
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
7+
Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI
8+
zj0DAQcDQgAERlYPRJDi/tTXlPnYz0AXJZLeILYYdx6PxZ4V1KTXvRJYgQtanmcL
9+
S0TqNGV/NXo6dIdTbKBsNHSyp1eYZKHiG6NNMEswDgYDVR0PAQH/BAQDAgeAMAwG
10+
A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgMfVDtpIcSPG8wmt1HEg4NZK4RS0jp0ah
11+
mGttBGm7YXwwCgYIKoZIzj0EAwIDRwAwRAIgMF8+DbXwhgFnxYyEse+lg7iV0BcZ
12+
zOjGvjG6VU9Voe4CIGieYQv2VEjUFpcNniclf2aEZUC1LgQbjc9/lchLTFhI
13+
-----END CERTIFICATE-----
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICLjCCAdWgAwIBAgIQW1bqbmpm/Gqxrc6JzNaljjAKBggqhkjOPQQDAjBpMQsw
3+
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4+
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
5+
bGUuY29tMB4XDTE3MTEyMTE1MzYwNVoXDTI3MTExOTE1MzYwNVowaTELMAkGA1UE
6+
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
7+
Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
8+
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABE0Qpj5KcAfb4jP2EJh3fl7O1Rh8
9+
fAWBmYBWENrn+tO+3bxCzxYpm+M4uncNKVsvEUl2JDM8mAuoQrQ90m7iYGmjXzBd
10+
MA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMB
11+
Af8wKQYDVR0OBCIEIDH1Q7aSHEjxvMJrdRxIODWSuEUtI6dGoZhrbQRpu2F8MAoG
12+
CCqGSM49BAMCA0cAMEQCIAhRRNM45gb+JC0xe/pKnF+tBOfCofQAcUiOpXaQ60vR
13+
AiBcme4/Iml8wHNbj9W2PEsvmd/Y9mhfoqgNU1i1s2cq0Q==
14+
-----END CERTIFICATE-----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICNDCCAdugAwIBAgIQT9etw8t7aYIQtuiMz3KHXzAKBggqhkjOPQQDAjBsMQsw
3+
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4+
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
5+
YW1wbGUuY29tMB4XDTE3MTEyMTE1MzYwNVoXDTI3MTExOTE1MzYwNVowbDELMAkG
6+
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
7+
Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
8+
cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABA5HBeDu1PNzgMtRVYKV
9+
xXyyo66LUCKELTWPwWSNZQYu5dLpzZlDXvgQBh4wi6gnC1f4Pes5QKl29b4okAK4
10+
8ZSjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB
11+
/wQFMAMBAf8wKQYDVR0OBCIEIC0Z6OWMj2U25469tpLIcOhu8XCi6FNftt0NmwDL
12+
+aIYMAoGCCqGSM49BAMCA0cAMEQCIFDXpVq296kwdeupOjgWuG+y+uzLmtg37Tvr
13+
+GMr14PLAiACPib8IIWsgKlLvBXLBM5DsVAUmGY2rk15re67wEqHwg==
14+
-----END CERTIFICATE-----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICCTCCAbCgAwIBAgIQTG9UTqEtooxz530DZXKN1zAKBggqhkjOPQQDAjBpMQsw
3+
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4+
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
5+
bGUuY29tMB4XDTE3MTEyMTE1MzYwNVoXDTI3MTExOTE1MzYwNVowVjELMAkGA1UE
6+
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
7+
Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI
8+
zj0DAQcDQgAERlYPRJDi/tTXlPnYz0AXJZLeILYYdx6PxZ4V1KTXvRJYgQtanmcL
9+
S0TqNGV/NXo6dIdTbKBsNHSyp1eYZKHiG6NNMEswDgYDVR0PAQH/BAQDAgeAMAwG
10+
A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgMfVDtpIcSPG8wmt1HEg4NZK4RS0jp0ah
11+
mGttBGm7YXwwCgYIKoZIzj0EAwIDRwAwRAIgMF8+DbXwhgFnxYyEse+lg7iV0BcZ
12+
zOjGvjG6VU9Voe4CIGieYQv2VEjUFpcNniclf2aEZUC1LgQbjc9/lchLTFhI
13+
-----END CERTIFICATE-----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICLjCCAdWgAwIBAgIQW1bqbmpm/Gqxrc6JzNaljjAKBggqhkjOPQQDAjBpMQsw
3+
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4+
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
5+
bGUuY29tMB4XDTE3MTEyMTE1MzYwNVoXDTI3MTExOTE1MzYwNVowaTELMAkGA1UE
6+
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
7+
Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
8+
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABE0Qpj5KcAfb4jP2EJh3fl7O1Rh8
9+
fAWBmYBWENrn+tO+3bxCzxYpm+M4uncNKVsvEUl2JDM8mAuoQrQ90m7iYGmjXzBd
10+
MA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMB
11+
Af8wKQYDVR0OBCIEIDH1Q7aSHEjxvMJrdRxIODWSuEUtI6dGoZhrbQRpu2F8MAoG
12+
CCqGSM49BAMCA0cAMEQCIAhRRNM45gb+JC0xe/pKnF+tBOfCofQAcUiOpXaQ60vR
13+
AiBcme4/Iml8wHNbj9W2PEsvmd/Y9mhfoqgNU1i1s2cq0Q==
14+
-----END CERTIFICATE-----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg/5QbRRO9q6e7jNBE
3+
Yvad4tUzdG1U3Z2lUOdbt8sdlXWhRANCAASl9QIou11/+exP4SsZ0K0XGzFO72vj
4+
Ls8FQEKZ19CVs+xsewsK37gn9h2s56IysgMqJ6MOo1CKq/yT7VdjTbCl
5+
-----END PRIVATE KEY-----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICDDCCAbOgAwIBAgIRAIL6e7l9Sfu4UDWyjthplekwCgYIKoZIzj0EAwIwaTEL
3+
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4+
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
5+
cGxlLmNvbTAeFw0xNzExMjExNTM2MDVaFw0yNzExMTkxNTM2MDVaMFgxCzAJBgNV
6+
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
7+
c2NvMRwwGgYDVQQDExNvcmRlcmVyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYI
8+
KoZIzj0DAQcDQgAEpfUCKLtdf/nsT+ErGdCtFxsxTu9r4y7PBUBCmdfQlbPsbHsL
9+
Ct+4J/YdrOeiMrIDKiejDqNQiqv8k+1XY02wpaNNMEswDgYDVR0PAQH/BAQDAgeA
10+
MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgMfVDtpIcSPG8wmt1HEg4NZK4RS0j
11+
p0ahmGttBGm7YXwwCgYIKoZIzj0EAwIDRwAwRAIgK5X0itCSpLQHVjLePAVUgePL
12+
RtG3d6bJkjjmHQw23HYCIFPxaps7D2Y5tXIOQmrYpGipZ0ZAo0yhZ5fFLrE7Tefw
13+
-----END CERTIFICATE-----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICNDCCAdugAwIBAgIQT9etw8t7aYIQtuiMz3KHXzAKBggqhkjOPQQDAjBsMQsw
3+
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4+
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
5+
YW1wbGUuY29tMB4XDTE3MTEyMTE1MzYwNVoXDTI3MTExOTE1MzYwNVowbDELMAkG
6+
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
7+
Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
8+
cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABA5HBeDu1PNzgMtRVYKV
9+
xXyyo66LUCKELTWPwWSNZQYu5dLpzZlDXvgQBh4wi6gnC1f4Pes5QKl29b4okAK4
10+
8ZSjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB
11+
/wQFMAMBAf8wKQYDVR0OBCIEIC0Z6OWMj2U25469tpLIcOhu8XCi6FNftt0NmwDL
12+
+aIYMAoGCCqGSM49BAMCA0cAMEQCIFDXpVq296kwdeupOjgWuG+y+uzLmtg37Tvr
13+
+GMr14PLAiACPib8IIWsgKlLvBXLBM5DsVAUmGY2rk15re67wEqHwg==
14+
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)