<?xml version="1.0" encoding="utf-8"?>
<!--
   ====================================================================
   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.
   ====================================================================
-->
<xs:schema xmlns="http://schemas.microsoft.com/office/2006/keyEncryptor/password" xmlns:e="http://schemas.microsoft.com/office/2006/encryption" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://schemas.microsoft.com/office/2006/keyEncryptor/password" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:import namespace="http://schemas.microsoft.com/office/2006/encryption" schemaLocation="encryptionInfo.xsd"/>
	<xs:simpleType name="ST_PasswordKeyEncryptorUri">
		<xs:restriction base="xs:token">
			<xs:enumeration value="http://schemas.microsoft.com/office/2006/keyEncryptor/password"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="CT_PasswordKeyEncryptor">
		<xs:attribute name="saltSize" type="e:ST_SaltSize" use="required">
			<xs:annotation><xs:documentation>A SaltSize that specifies the size of the salt for a PasswordKeyEncryptor.</xs:documentation></xs:annotation>
		</xs:attribute>
		<xs:attribute name="blockSize" type="e:ST_BlockSize" use="required">
			<xs:annotation><xs:documentation>A BlockSize that specifies the block size for a PasswordKeyEncryptor.</xs:documentation></xs:annotation>
		</xs:attribute>
		<xs:attribute name="keyBits" type="e:ST_KeyBits" use="required">
			<xs:annotation><xs:documentation>A KeyBits that specifies the number of bits for a PasswordKeyEncryptor.</xs:documentation></xs:annotation>
		</xs:attribute>
		<xs:attribute name="hashSize" type="e:ST_HashSize" use="required">
			<xs:annotation><xs:documentation>A HashSize that specifies the size of the binary form of the hash for a PasswordKeyEncryptor.</xs:documentation></xs:annotation>
		</xs:attribute>
		<xs:attribute name="cipherAlgorithm" type="e:ST_CipherAlgorithm" use="required">
			<xs:annotation><xs:documentation>A CipherAlgorithm that specifies the cipher algorithm for a PasswordKeyEncryptor. The cipher algorithm specified MUST be the same as the cipher algorithm specified for the Encryption.keyData element.</xs:documentation></xs:annotation>
		</xs:attribute>
		<xs:attribute name="cipherChaining" type="e:ST_CipherChaining" use="required">
			<xs:annotation><xs:documentation>A CipherChaining that specifies the cipher chaining mode for a PasswordKeyEncryptor.</xs:documentation></xs:annotation>
		</xs:attribute>
		<xs:attribute name="hashAlgorithm" type="e:ST_HashAlgorithm" use="required">
			<xs:annotation><xs:documentation>A HashAlgorithm that specifies the hashing algorithm for a PasswordKeyEncryptor. The hashing algorithm specified MUST be the same as the hashing algorithm specified for the Encryption.keyData element.</xs:documentation></xs:annotation>
		</xs:attribute>
		<xs:attribute name="saltValue" type="xs:base64Binary" use="required">
			<xs:annotation><xs:documentation>A base64-encoded binary byte array that specifies the salt value for a PasswordKeyEncryptor. The number of bytes required by the decoded form of this element MUST be saltSize.</xs:documentation></xs:annotation>
		</xs:attribute>
		<xs:attribute name="spinCount" type="e:ST_SpinCount" use="required">
			<xs:annotation><xs:documentation>A SpinCount that specifies the spin count for a PasswordKeyEncryptor.</xs:documentation></xs:annotation>
		</xs:attribute>
		<xs:attribute name="encryptedVerifierHashInput" type="xs:base64Binary" use="required">
			<xs:annotation><xs:documentation>A base64-encoded value that specifies the encrypted verifier hash input for a PasswordKeyEncryptor used in password verification.</xs:documentation></xs:annotation>
		</xs:attribute>
		<xs:attribute name="encryptedVerifierHashValue" type="xs:base64Binary" use="required">
			<xs:annotation><xs:documentation>A base64-encoded value that specifies the encrypted verifier hash value for a PasswordKeyEncryptor used in password verification.</xs:documentation></xs:annotation>
		</xs:attribute>
		<xs:attribute name="encryptedKeyValue" type="xs:base64Binary" use="required">
			<xs:annotation><xs:documentation>A base64-encoded value that specifies the encrypted form of the intermediate key.</xs:documentation></xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:element name="encryptedKey" type="CT_PasswordKeyEncryptor"/>
</xs:schema>
