xref: /AOO42X/main/oox/source/helper/openssl_wrapper.cxx (revision b1c5455db1639c48e26c568e4fa7ee78ca5d60ee)
1*4e7b0f82SDamjan Jovanovic /**************************************************************
2*4e7b0f82SDamjan Jovanovic  *
3*4e7b0f82SDamjan Jovanovic  * Licensed to the Apache Software Foundation (ASF) under one
4*4e7b0f82SDamjan Jovanovic  * or more contributor license agreements.  See the NOTICE file
5*4e7b0f82SDamjan Jovanovic  * distributed with this work for additional information
6*4e7b0f82SDamjan Jovanovic  * regarding copyright ownership.  The ASF licenses this file
7*4e7b0f82SDamjan Jovanovic  * to you under the Apache License, Version 2.0 (the
8*4e7b0f82SDamjan Jovanovic  * "License"); you may not use this file except in compliance
9*4e7b0f82SDamjan Jovanovic  * with the License.  You may obtain a copy of the License at
10*4e7b0f82SDamjan Jovanovic  *
11*4e7b0f82SDamjan Jovanovic  *   http://www.apache.org/licenses/LICENSE-2.0
12*4e7b0f82SDamjan Jovanovic  *
13*4e7b0f82SDamjan Jovanovic  * Unless required by applicable law or agreed to in writing,
14*4e7b0f82SDamjan Jovanovic  * software distributed under the License is distributed on an
15*4e7b0f82SDamjan Jovanovic  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*4e7b0f82SDamjan Jovanovic  * KIND, either express or implied.  See the License for the
17*4e7b0f82SDamjan Jovanovic  * specific language governing permissions and limitations
18*4e7b0f82SDamjan Jovanovic  * under the License.
19*4e7b0f82SDamjan Jovanovic  *
20*4e7b0f82SDamjan Jovanovic  *************************************************************/
21*4e7b0f82SDamjan Jovanovic 
22*4e7b0f82SDamjan Jovanovic 
23*4e7b0f82SDamjan Jovanovic 
24*4e7b0f82SDamjan Jovanovic #include "oox/helper/openssl_wrapper.hxx"
25*4e7b0f82SDamjan Jovanovic #include "rtl/ustrbuf.hxx"
26*4e7b0f82SDamjan Jovanovic 
27*4e7b0f82SDamjan Jovanovic #include <openssl/err.h>
28*4e7b0f82SDamjan Jovanovic 
29*4e7b0f82SDamjan Jovanovic 
30*4e7b0f82SDamjan Jovanovic namespace oox {
31*4e7b0f82SDamjan Jovanovic 
32*4e7b0f82SDamjan Jovanovic // ============================================================================
33*4e7b0f82SDamjan Jovanovic 
34*4e7b0f82SDamjan Jovanovic using namespace ::com::sun::star::uno;
35*4e7b0f82SDamjan Jovanovic 
36*4e7b0f82SDamjan Jovanovic using ::rtl::OUString;
37*4e7b0f82SDamjan Jovanovic using ::rtl::OUStringBuffer;
38*4e7b0f82SDamjan Jovanovic 
39*4e7b0f82SDamjan Jovanovic // ============================================================================
40*4e7b0f82SDamjan Jovanovic 
error_cb(const char * message,size_t len,void * userData)41*4e7b0f82SDamjan Jovanovic static int error_cb( const char *message, size_t len, void *userData )
42*4e7b0f82SDamjan Jovanovic {
43*4e7b0f82SDamjan Jovanovic     OUStringBuffer* buffer = (OUStringBuffer*) userData;
44*4e7b0f82SDamjan Jovanovic     buffer->appendAscii( "\n    " );
45*4e7b0f82SDamjan Jovanovic     // The message often ends in its own '\n', remove this:
46*4e7b0f82SDamjan Jovanovic     if( len > 0 && message[ len - 1 ] == '\n' )
47*4e7b0f82SDamjan Jovanovic         buffer->appendAscii( message, len - 1 );
48*4e7b0f82SDamjan Jovanovic     else
49*4e7b0f82SDamjan Jovanovic         buffer->appendAscii( message, len );
50*4e7b0f82SDamjan Jovanovic     return 1;
51*4e7b0f82SDamjan Jovanovic }
52*4e7b0f82SDamjan Jovanovic 
throwOpenSSLException(const char * prefix)53*4e7b0f82SDamjan Jovanovic void throwOpenSSLException( const char *prefix ) throw ( Exception )
54*4e7b0f82SDamjan Jovanovic {
55*4e7b0f82SDamjan Jovanovic     OUStringBuffer buffer;
56*4e7b0f82SDamjan Jovanovic     buffer.appendAscii( prefix );
57*4e7b0f82SDamjan Jovanovic     ERR_print_errors_cb( error_cb, &buffer );
58*4e7b0f82SDamjan Jovanovic     throw Exception( buffer.makeStringAndClear(), Reference< XInterface >() );
59*4e7b0f82SDamjan Jovanovic }
60*4e7b0f82SDamjan Jovanovic 
61*4e7b0f82SDamjan Jovanovic // ============================================================================
62*4e7b0f82SDamjan Jovanovic 
63*4e7b0f82SDamjan Jovanovic } // namespace oox
64