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