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#ifndef __com_sun_star_embed_XStorageRawAccess_idl__ 24#define __com_sun_star_embed_XStorageRawAccess_idl__ 25 26#ifndef __com_sun_star_uno_XInterface_idl__ 27#include <com/sun/star/uno/XInterface.idl> 28#endif 29 30#ifndef __com_sun_star_io_XStream_idl__ 31#include <com/sun/star/io/XStream.idl> 32#endif 33 34#ifndef __com_sun_star_io_XInputStream_idl__ 35#include <com/sun/star/io/XInputStream.idl> 36#endif 37 38#ifndef __com_sun_star_io_IOException_idl__ 39#include <com/sun/star/io/IOException.idl> 40#endif 41 42#ifndef __com_sun_star_lang_IllegalArgumentException_idl__ 43#include <com/sun/star/lang/IllegalArgumentException.idl> 44#endif 45 46#ifndef __com_sun_star_embed_StorageWrappedTargetException_idl__ 47#include <com/sun/star/embed/StorageWrappedTargetException.idl> 48#endif 49 50#ifndef __com_sun_star_embed_InvalidStorageException_idl__ 51#include <com/sun/star/embed/InvalidStorageException.idl> 52#endif 53 54#ifndef __com_sun_star_container_NoSuchElementException_idl__ 55#include <com/sun/star/container/NoSuchElementException.idl> 56#endif 57 58#ifndef __com_sun_star_container_ElementExistException_idl__ 59#include <com/sun/star/container/ElementExistException.idl> 60#endif 61 62#ifndef __com_sun_star_packages_NoEncryptionException_idl__ 63#include <com/sun/star/packages/NoEncryptionException.idl> 64#endif 65 66#ifndef __com_sun_star_packages_NoRawFormatException_idl__ 67#include <com/sun/star/packages/NoRawFormatException.idl> 68#endif 69 70 71//============================================================================ 72 73 module com { module sun { module star { module embed { 74 75//============================================================================ 76/** This interface represents main storage functionality. 77 */ 78published interface XStorageRawAccess 79{ 80 // ----------------------------------------------------------------------- 81 /** allows to get a plain raw stream representing a package stream. 82 83 <p> 84 This method returns a stream from the package as it is stored there, 85 without any decompression/decription and etc. This method can be 86 helpful to check file consistency, for example by signing. 87 </p> 88 89 @returns 90 the raw representation of encrypted stream with all the data 91 required to copy the stream without information loss 92 93 @param sStreamName 94 the name of the substream that should be open 95 96 @throws ::com::sun::star::embed::InvalidStorageException 97 this storage is in invalid state for any reason 98 99 @throws ::com::sun::star::lang::IllegalArgumentException 100 one of provided arguments is illegal 101 102 @throws ::com::sun::star::container::NoSuchElementException 103 there is no element with specified name 104 105 @throws ::com::sun::star::io::IOException 106 in case of io errors during stream opening 107 108 @throws ::com::sun::star::embed::StorageWrappedTargetException 109 wraps other exceptions 110 */ 111 ::com::sun::star::io::XInputStream getPlainRawStreamElement( 112 [in] string sStreamName ) 113 raises( ::com::sun::star::embed::InvalidStorageException, 114 ::com::sun::star::lang::IllegalArgumentException, 115 ::com::sun::star::container::NoSuchElementException, 116 ::com::sun::star::io::IOException, 117 ::com::sun::star::embed::StorageWrappedTargetException ); 118 119 // ----------------------------------------------------------------------- 120 /** allows to get a raw stream representing encrypted stream with header. 121 122 <p> 123 This method allows to transport encrypted streams without decryption. 124 Mainly this method is introduced to allow to copy one encrypted 125 storage stream to another without decryption. It is not reccomended to 126 use this method outside of storage implementation since different 127 storages implementation could have different encryption format. If the 128 method is used outside of storage implementation the user code is 129 resposible to get sure that the raw format of source and target 130 storages is the same. 131 </p> 132 133 <p> 134 The difference of this method from the previous one is that it handles 135 only encrypted streams. The contents of returned by these methods 136 streams can differ for the same entry, since this method can add 137 additional data into the stream to allow successful insertion. 138 </p> 139 140 @param sStreamName 141 the name of the substream that should be open 142 143 @param xInputStream 144 a raw stream representing encrypted stream 145 146 @throws ::com::sun::star::embed::InvalidStorageException 147 this storage is in invalid state for any reason 148 149 @throws ::com::sun::star::lang::IllegalArgumentException 150 one of provided arguments is illegal 151 152 @throws ::com::sun::star::packages::NoEncryptionException 153 the stream is not an encrypted one 154 155 @throws ::com::sun::star::container::NoSuchElementException 156 there is no element with specified name 157 158 @throws ::com::sun::star::io::IOException 159 in case of io errors during stream opening 160 161 @throws ::com::sun::star::embed::StorageWrappedTargetException 162 wraps other exceptions 163 */ 164 ::com::sun::star::io::XInputStream getRawEncrStreamElement( 165 [in] string sStreamName ) 166 raises( ::com::sun::star::embed::InvalidStorageException, 167 ::com::sun::star::lang::IllegalArgumentException, 168 ::com::sun::star::packages::NoEncryptionException, 169 ::com::sun::star::container::NoSuchElementException, 170 ::com::sun::star::io::IOException, 171 ::com::sun::star::embed::StorageWrappedTargetException ); 172 173 // ----------------------------------------------------------------------- 174 /** allows to insert a raw stream representing encrypted stream with 175 header. 176 177 <p> 178 This method allows to insert a stream retrived by 179 <method>XStorageRawAccess::getRawEncrStreamElement()</method> into a 180 storage. 181 </p> 182 183 <p> 184 This method allows to transport encrypted streams without decryption. 185 Mainly this method is introduced to allow to copy one encrypted 186 storage stream to another without decryption. It is not reccomended to 187 use this method outside of storage implementation since different 188 storages implementation could have different encryption format. 189 </p> 190 191 @param sStreamName 192 the name of the substream that should be open 193 194 @param xInputStream 195 a raw stream representing encrypted stream 196 197 @throws ::com::sun::star::embed::InvalidStorageException 198 this storage is in invalid state for any reason 199 200 @throws ::com::sun::star::lang::IllegalArgumentException 201 one of provided arguments is illegal 202 203 @throws ::com::sun::star::packages::NoRawFormatException 204 the stream is not one of raw package stream format 205 206 @throws ::com::sun::star::container::ElementExistException 207 an element with specified name already exists 208 209 @throws ::com::sun::star::io::IOException 210 in case of io errors during stream opening 211 212 @throws ::com::sun::star::embed::StorageWrappedTargetException 213 wraps other exceptions 214 */ 215 void insertRawEncrStreamElement( 216 [in] string sStreamName, 217 [in] ::com::sun::star::io::XInputStream xInStream ) 218 raises( ::com::sun::star::embed::InvalidStorageException, 219 ::com::sun::star::lang::IllegalArgumentException, 220 ::com::sun::star::packages::NoRawFormatException, 221 ::com::sun::star::container::ElementExistException, 222 ::com::sun::star::io::IOException, 223 ::com::sun::star::embed::StorageWrappedTargetException ); 224}; 225 226//============================================================================ 227 228}; }; }; }; 229 230#endif 231 232