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