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