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 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 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