This project has retired. For details please refer to its
        
        Attic page.
      
 
UddiDigitalSignatureFile xref
1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  package org.apache.juddi.samples;
18  
19  import java.io.FileInputStream;
20  import java.io.FileOutputStream;
21  import java.util.concurrent.atomic.AtomicReference;
22  import javax.xml.bind.JAXB;
23  
24  import org.apache.juddi.v3.client.config.UDDIClient;
25  import org.apache.juddi.v3.client.cryptor.DigSigUtil;
26  import org.apache.juddi.v3.client.cryptor.XmlUtils;
27  import org.uddi.api_v3.*;
28  
29  
30  
31  
32  
33  
34  public class UddiDigitalSignatureFile {
35  
36          
37  
38  
39          public UddiDigitalSignatureFile() {
40  
41          }
42  
43          public enum UddiType {
44  
45                  Business, Service, Binding, TModel, PublisherAssertion
46          }
47  
48          public void fire(String fileIn, String fileOut, UddiType type) {
49                  try {
50                          System.out.println("WARN - All previous signatures will be removed!");
51                          if (fileIn == null || fileOut == null || type == null) {
52                                  System.out.print("Input file: ");
53                                  fileIn = System.console().readLine();
54                                  System.out.print("Out file: ");
55                                  fileOut = System.console().readLine();
56                                  System.out.println();
57                                  for (int i = 0; i < UddiType.values().length; i++) {
58                                          System.out.println("[" + i + "] " + UddiType.values()[i].toString());
59                                  }
60                                  System.out.print("UDDI Type: ");
61                                  String t = System.console().readLine();
62                                  type = UddiType.values()[Integer.parseInt(t)];
63                          }
64  
65                          DigSigUtil ds = null;
66  
67                          
68                          ds = new DigSigUtil();
69                          ds.put(DigSigUtil.SIGNATURE_KEYSTORE_FILE, "keystore.jks");
70                          ds.put(DigSigUtil.SIGNATURE_KEYSTORE_FILETYPE, "JKS");
71                          ds.put(DigSigUtil.SIGNATURE_KEYSTORE_FILE_PASSWORD, "Test");
72                          ds.put(DigSigUtil.SIGNATURE_KEYSTORE_KEY_ALIAS, "Test");
73                          ds.put(DigSigUtil.SIGNATURE_OPTION_CERT_INCLUSION_BASE64, "true");
74  
75                          ds.put(DigSigUtil.SIGNATURE_OPTION_CERT_INCLUSION_SERIAL, "true");
76                          ds.put(DigSigUtil.SIGNATURE_OPTION_CERT_INCLUSION_SUBJECTDN, "true");
77                          ds.put(DigSigUtil.TRUSTSTORE_FILE, "truststore.jks");
78                          ds.put(DigSigUtil.TRUSTSTORE_FILETYPE, "JKS");
79                          ds.put(DigSigUtil.TRUSTSTORE_FILE_PASSWORD, "Test");
80  
81                          FileInputStream fis = new FileInputStream(fileIn);
82                          Class expectedType = null;
83                          switch (type) {
84                                  case Binding:
85                                          expectedType = BindingTemplate.class;
86                                          break;
87                                  case Business:
88                                          expectedType = BusinessEntity.class;
89                                          break;
90                                  case PublisherAssertion:
91                                          expectedType = PublisherAssertion.class;
92                                          break;
93                                  case Service:
94                                          expectedType = BusinessService.class;
95                                          break;
96                                  case TModel:
97                                          expectedType = TModel.class;
98                                          break;
99                          }
100                         Object be = XmlUtils.unmarshal(fis, expectedType);
101                         fis.close();
102                         fis = null;
103 
104                         switch (type) {
105                                 case Binding:
106                                         ((BindingTemplate) be).getSignature().clear();
107                                         break;
108                                 case Business:
109                                         ((BusinessEntity) be).getSignature().clear();
110                                         break;
111                                 case PublisherAssertion:
112                                         ((PublisherAssertion) be).getSignature().clear();
113                                         break;
114                                 case Service:
115                                         ((BusinessService) be).getSignature().clear();
116                                         break;
117                                 case TModel:
118                                         ((TModel) be).getSignature().clear();
119                                         break;
120                         }
121 
122                         System.out.println("signing");
123                         Object signUDDI_JAXBObject = ds.signUddiEntity(be);
124                         System.out.println("signed");
125                         DigSigUtil.JAXB_ToStdOut(signUDDI_JAXBObject);
126 
127                         System.out.println("verifing");
128                         AtomicReference<String> msg = new AtomicReference<String>();
129                         boolean verifySigned_UDDI_JAXB_Object = ds.verifySignedUddiEntity(signUDDI_JAXBObject, msg);
130                         if (verifySigned_UDDI_JAXB_Object) {
131                                 System.out.println("signature validation passed (expected)");
132                                 FileOutputStream fos = new FileOutputStream(fileOut);
133                                 JAXB.marshal(signUDDI_JAXBObject, fos);
134                                 fos.close();
135                         } else {
136                                 System.out.println("signature validation failed (not expected)");
137                         }
138                         System.out.println(msg.get());
139 
140                 } catch (Exception e) {
141                         e.printStackTrace();
142                 }
143         }
144 
145 }