📄 swingui.java
字号:
certGen.setPublicKey( csr.getPublicKey() ); //certGen.setSignatureAlgorithm("SHA1withDSA"); certGen.setSignatureAlgorithm("SHA1withRSA"); // FIXME bondolo 20040317 needs fixing. certGen.setSerialNumber( BigInteger.valueOf(1) ); // return issuer info for generating service cert // the cert X509Certificate newCert = certGen.generateX509Certificate( issuer.subjectPkey ); net.jxta.impl.protocol.Certificate cert_msg = new net.jxta.impl.protocol.Certificate(); List newChain = new ArrayList( Arrays.asList(issuerChain) ); newChain.add( 0, newCert ); cert_msg.setCertificates( newChain ); XMLDocument asXML = (XMLDocument) cert_msg.getDocument( MimeMediaType.XMLUTF8 ); JFileChooser fc = new JFileChooser(); //In response to a button click: int returnVal = fc.showSaveDialog(this); if(returnVal == JFileChooser.APPROVE_OPTION) { FileWriter csr_file = new FileWriter(fc.getSelectedFile()); asXML.sendToWriter( csr_file ); csr_file.close(); authenticationStatus.setText("Signed certificate saved." ); } else { authenticationStatus.setText("Save certificate cancelled." ); } } catch( NoSuchAlgorithmException failed ) { authenticationStatus.setText("Certificate signing failed:" + failed.getMessage()); } catch( NoSuchProviderException failed ) { authenticationStatus.setText("Certificate signing failed:" + failed.getMessage()); } catch( InvalidKeyException failed ) { authenticationStatus.setText("Certificate signing failed:" + failed.getMessage()); } catch( SignatureException failed ) { authenticationStatus.setText("Certificate signing failed:" + failed.getMessage()); } catch( IOException failed ) { authenticationStatus.setText("Certificate signing failed:" + failed.getMessage()); } }//GEN-LAST:event_adminSignCSRButtonActionPerformed private void memberGenerateCSRButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_memberGenerateCSRButtonActionPerformed if( null == memberCredential ) { authenticationStatus.setText("Not authenticated -- cannot generate Certificate Signing Request."); return; } X509Certificate cert = memberCredential.getCertificate(); PrivateKey key = null; try { key = memberCredential.getPrivateKey(); } catch( IllegalStateException notLocal ) {;} if( null == key ) { authenticationStatus.setText("Credential is not a local login credential." ); return; } try { PKCS10CertificationRequest csr = new PKCS10CertificationRequest( "SHA1withRSA", new X509Principal( cert.getSubjectX500Principal().getEncoded() ), cert.getPublicKey(), new DERSet(), key ); net.jxta.impl.protocol.CertificateSigningRequest csr_msg = new net.jxta.impl.protocol.CertificateSigningRequest(); csr_msg.setCSR( csr ); XMLDocument asXML = (XMLDocument) csr_msg.getDocument( MimeMediaType.XMLUTF8 ); JFileChooser fc = new JFileChooser(); //In response to a button click: int returnVal = fc.showSaveDialog(this); if(returnVal == JFileChooser.APPROVE_OPTION) { FileWriter csr_file = new FileWriter(fc.getSelectedFile()); asXML.sendToWriter( csr_file ); csr_file.close(); authenticationStatus.setText("Certificate Signing Request saved as file: " + fc.getSelectedFile().getCanonicalPath() ); } else { authenticationStatus.setText("Certificate Signing Request not saved."); } } catch( NoSuchAlgorithmException failed ) { authenticationStatus.setText("Certificate Signing Request generation failed:" + failed.getMessage()); } catch( NoSuchProviderException failed ) { authenticationStatus.setText("Certificate Signing Request generation failed:" + failed.getMessage()); } catch( InvalidKeyException failed ) { authenticationStatus.setText("Certificate Signing Request generation failed:" + failed.getMessage()); } catch( SignatureException failed ) { authenticationStatus.setText("Certificate Signing Request generation failed:" + failed.getMessage()); } catch( IOException failed ) { authenticationStatus.setText("Certificate Signing Request generation failed:" + failed.getMessage()); } }//GEN-LAST:event_memberGenerateCSRButtonActionPerformed private void memberAuthenticateButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_memberAuthenticateButtonActionPerformed if( null != memberCredential ) { authenticationStatus.setText("Already authenticated."); return; } StringAuthenticator memberAuthenticator = null; try { AuthenticationCredential application = new AuthenticationCredential( group, "StringAuthentication", null ); memberAuthenticator = (StringAuthenticator) membership.apply(application); } catch( ProtocolNotSupportedException noAuthenticator ) { authenticationStatus.setText("Could not create authenticator: " + noAuthenticator.getMessage()); return; } memberAuthenticator.setAuth1_KeyStorePassword(keyStorePasswordField.getPassword()); memberAuthenticator.setAuth2Identity(group.getPeerID()); memberAuthenticator.setAuth3_IdentityPassword(memberPasswordField.getPassword()); // clear the password memberPasswordField.setText(""); try { memberCredential = (PSECredential) membership.join( memberAuthenticator ); authenticationStatus.setText("Member authentication successful."); } catch( PeerGroupException failed ) { authenticationStatus.setText("Member authentication failed: " + failed.getMessage()); return; } X509Certificate[] chain = memberCredential.getCertificateChain(); memberGenerateCSRButton.setEnabled(true); memberResignButton.setEnabled(true); if(chain.length > 1) { // If there's a certificate chain then perhaps admin and owner // be should enabled. if( chain[1].getPublicKey().equals(Main.PSE_SAMPLE_GROUP_ROOT_CERT.getPublicKey())) { // Signed by the root? That makes us an admin and maybe an owner tabs.add( adminTab ); tabs.add( ownerTab ); } } }//GEN-LAST:event_memberAuthenticateButtonActionPerformed private void swingUIClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_swingUIClosed // Shutdown the pse peer group. group.stopApp(); group.unref(); // Un-reference the parent peer group. parentgroup.unref(); }//GEN-LAST:event_swingUIClosed private void invitationPasswordFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_invitationPasswordFieldKeyReleased invitationAuthenticator.setAuth3_IdentityPassword(invitationPasswordField.getPassword()); invitationConfirmButton.setEnabled(invitationAuthenticator.isReadyForJoin()); }//GEN-LAST:event_invitationPasswordFieldKeyReleased private void invitationConfirmButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_invitationConfirmButtonActionPerformed boolean ownerInvite = invitationAuthenticator.getCertificate(null, group.getPeerID()).getPublicKey().equals(Main.PSE_SAMPLE_GROUP_ROOT_CERT.getPublicKey()); invitationAuthenticator.setAuth1_KeyStorePassword(keyStorePasswordField.getPassword()); if( ownerInvite ) { // If the invitation is for the owner identity then store it under the peer group id. invitationAuthenticator.setAuth2Identity(group.getPeerGroupID()); } else { // Otherwise store it under another random key. invitationAuthenticator.setAuth2Identity(IDFactory.newCodatID(group.getPeerGroupID())); } invitationAuthenticator.setAuth3_IdentityPassword(invitationPasswordField.getPassword()); // clear the password invitationPasswordField.setText(""); try { invitationCredential = (PSECredential) membership.join( invitationAuthenticator ); tabs.remove( invitationTab ); tabs.add( memberTab ); if( ownerInvite ) { tabs.add( ownerTab ); } authenticationStatus.setText("Invitation confirmed."); } catch( PeerGroupException failed ) { authenticationStatus.setText("Invitation confirmation failed: " + failed.getMessage()); } }//GEN-LAST:event_invitationConfirmButtonActionPerformed private void invitationPasswordFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_invitationPasswordFieldActionPerformed// TODO add your handling code here: }//GEN-LAST:event_invitationPasswordFieldActionPerformed private void keyStorePasswordFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_keyStorePasswordFieldActionPerformed// TODO add your handling code here: }//GEN-LAST:event_keyStorePasswordFieldActionPerformed private void generateMemberCertButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_generateMemberCertButtonActionPerformed try { X509Certificate checkCert = membership.getPSEConfig().getTrustedCertificate(group.getPeerID()); if( null != checkCert ) { authenticationStatus.setText("Member certificate already present."); } PSEUtils.IssuerInfo issuer = null; if( null != invitationCredential ) { issuer = new PSEUtils.IssuerInfo(); issuer.cert = invitationCredential.getCertificate(); issuer.subjectPkey = invitationCredential.getPrivateKey(); } PSEUtils.IssuerInfo certs = PSEUtils.genCert( group.getPeerName(), issuer); X509Certificate chain[]; if( null != issuer ) { chain = new X509Certificate[] { certs.cert, certs.issuer }; } else { chain = new X509Certificate[] { certs.cert }; } if( null == membership.getDefaultCredential() ) { // if the keychain hasn't been unlocked then set the keystore password. membership.getPSEConfig().setKeyStorePassword(keyStorePasswordField.getPassword()); } // Save our new certificate into the keystore. membership.getPSEConfig().setKey( group.getPeerID(), chain, certs.subjectPkey, memberPasswordField.getPassword() ); authenticationStatus.setText("New member certificate generated."); memberAuthenticateButton.setEnabled(true); } catch( KeyStoreException failed ) { authenticationStatus.setText("Certificate generation failed: " + failed.getMessage() ); } catch( IOException failed ) { authenticationStatus.setText("Certificate generation failed: " + failed.getMessage() ); } }//GEN-LAST:event_generateMemberCertButtonActionPerformed private void authenticationStatusActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_authenticationStatusActionPerformed// TODO add your handling code here: }//GEN-LAST:event_authenticationStatusActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPasswordField adminInvitationPasswordField; private javax.swing.JLabel adminInvitationPasswordLabel; private javax.swing.JButton adminInviteButton; private javax.swing.JButton adminSignCSRButton; private javax.swing.JPanel adminTab; private javax.swing.JTextField authenticationStatus; private javax.swing.JButton generateMemberCertButton; private javax.swing.JButton invitationConfirmButton; private javax.swing.JPasswordField invitationPasswordField; private javax.swing.JPanel invitationTab; private javax.swing.JPasswordField keyStorePasswordField; private javax.swing.JLabel keyStorePasswordLabel; private javax.swing.JButton memberAuthenticateButton; private javax.swing.JButton memberGenerateCSRButton; private javax.swing.JButton memberImportCertButton; private javax.swing.JPasswordField memberPasswordField; private javax.swing.JButton memberResignButton; private javax.swing.JPanel memberTab; private javax.swing.JButton ownerAuthenticat
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -