1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_ucbhelper.hxx"
26 #include <com/sun/star/ucb/CertificateValidationRequest.hpp>
27 #include <ucbhelper/simplecertificatevalidationrequest.hxx>
28 
29 using namespace com::sun::star;
30 using namespace ucbhelper;
31 
32 //=========================================================================
33 SimpleCertificateValidationRequest::SimpleCertificateValidationRequest( const sal_Int32 & lCertificateValidity,
34                                                                         const com::sun::star::uno::Reference<com::sun::star::security::XCertificate> pCertificate,
35 																		const rtl::OUString & hostname)
36 {
37     // Fill request...
38     ucb::CertificateValidationRequest aRequest;
39     aRequest.CertificateValidity = lCertificateValidity;
40     aRequest.Certificate = pCertificate;
41 	aRequest.HostName = hostname;
42 
43     setRequest( uno::makeAny( aRequest ) );
44 
45     uno::Sequence< uno::Reference< task::XInteractionContinuation > > aContinuations( 2 );
46     aContinuations[ 0 ] = new InteractionAbort( this );
47     aContinuations[ 1 ] = new InteractionApprove( this );
48 
49     setContinuations( aContinuations );
50 	pCertificate.get();
51 }
52 
53 //=========================================================================
54 sal_Int32 SimpleCertificateValidationRequest::getResponse() const
55 {
56     rtl::Reference< InteractionContinuation > xSelection = getSelection();
57     if ( xSelection.is() )
58     {
59         InteractionContinuation * pSelection = xSelection.get();
60 
61         uno::Reference< task::XInteractionAbort > xAbort(
62                                         pSelection, uno::UNO_QUERY );
63         if ( xAbort.is() )
64             return 1;
65 
66         uno::Reference< task::XInteractionRetry > xRetry(
67                                         pSelection, uno::UNO_QUERY );
68         if ( xRetry.is() )
69             return 2;
70 
71         uno::Reference< task::XInteractionApprove > xApprove(
72                                         pSelection, uno::UNO_QUERY );
73         if ( xApprove.is() )
74             return 4;
75 
76         uno::Reference< task::XInteractionDisapprove > xDisapprove(
77                                         pSelection, uno::UNO_QUERY );
78         if ( xDisapprove.is() )
79             return 8;
80 
81         OSL_ENSURE( sal_False, "CertificateValidationRequest - Unknown continuation!" );
82     }
83     return 0;
84 }
85