/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/


#ifndef __com_sun_star_embed_XEncryptionProtectedSource2_idl__
#define __com_sun_star_embed_XEncryptionProtectedSource2_idl__

#ifndef __com_sun_star_embed_XEncryptionProtectedSource_idl__
#include <com/sun/star/embed/XEncryptionProtectedSource.idl>
#endif

#ifndef __com_sun_star_beans_NamedValue_idl__
#include <com/sun/star/beans/NamedValue.idl>
#endif

//============================================================================

module com {  module sun {  module star {  module embed {

//============================================================================
/** This interface allows to set a password for an object.

    @since OOo 3.4
 */
interface XEncryptionProtectedSource2: XEncryptionProtectedSource
{
	// -----------------------------------------------------------------------
	/** sets an encryption data for the object.

        @param aEncryptionData
            the new encryption data

        @throws ::com::sun::star::io::IOException
            in case the data could not be set
	 */
	void setEncryptionData( [in] sequence< ::com::sun::star::beans::NamedValue > aEncryptionData )
		raises( ::com::sun::star::io::IOException );
};

//============================================================================

}; }; }; };

#endif

