001 /* 002 * Licensed Materials - Property of IBM 003 * Restricted Materials of IBM 004 * 005 * com.ibm.rational.wvcm.stp.cc.CcTrustManagerCallback 006 * 007 * (C) Copyright IBM Corporation 2011. All Rights Reserved. 008 * Note to U.S. Government Users Restricted Rights: Use, duplication or 009 * disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 010 */ 011 package com.ibm.rational.wvcm.stp.cc; 012 013 import java.security.cert.CertificateException; 014 import java.security.cert.X509Certificate; 015 import java.util.List; 016 017 /** 018 * This callback is used to handle SSL Certificate problems when initiating a 019 * connection to a remote CCRC WAN server over HTTPS. The callback is not 020 * invoked if the certificate is stored and trusted on the client already. 021 */ 022 public interface CcTrustManagerCallback { 023 024 /** 025 * Provides the caller details about what is wrong with a certificate 026 */ 027 public enum CertificateStatus { 028 /** 029 * The certificate is not trusted 030 */ 031 CERTIFICATE_NOT_TRUSTED, 032 033 /** 034 * The certificate's date is out of range 035 */ 036 CERTIFICATE_DATE_OUT_OF_RANGE, 037 038 /** 039 * The certificate's name does not match what is trusted in the store 040 */ 041 CERTIFICATE_NAME_MISMATCH 042 } 043 044 /** 045 * The caller provides a response in reply to the callback to indicate 046 * how to handle the certificate problem. 047 */ 048 public enum CertificateResponse { 049 050 /** 051 * Temporarily accept the certificate for this session. 052 */ 053 ACCEPT_CERTIFICATE_TEMPORARILY, 054 055 /** 056 * Accept this certificate and install it into the key store 057 */ 058 ACCEPT_AND_INSTALL_CERTIFICATE, 059 060 /** 061 * Reject this certificate for this session. 062 */ 063 REJECT_CERTIFICATE 064 } 065 066 /** 067 * Callback is invoked when there is a problem with the certificate provided 068 * by the server. Check the <code>CertificateException</code> and the 069 * <code>CertificateStatus</code> for more details. Respond to the 070 * certificate problem using a <code>CertificateResponse</code> 071 * 072 * @param cert Java x.509 certificate 073 * @param status List of certificate problems 074 * @param certEx Java certificate exception 075 * @return CertificateResponse accept/install/reject 076 */ 077 CertificateResponse getCertificateResponse( 078 X509Certificate cert, 079 List<CertificateStatus> status, 080 CertificateException certEx); 081 082 }