# -------------------------------------------------------------------
# Copyright 2001-2004 The Apache Software Foundation.
#
# Licensed 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.
# -------------------------------------------------------------------


missingConfiguration = Missing or malformed configuration: \"{0}\"
expectedParameterMissing = Expected parameter missing : \"{0}\" 
missingScopeValue = Missing or incorrect scope value
canotFindContextIdentifier = Cannot find context identifier
missingWSAAction = wsa:Action value missing
missingWSATo = wsa:To address value missing
cannotCrateCryptoInstance = Cannot create Crypto instace
noInfoForCBhandler = Cannot obtain a callback handler with available configuration information 
missingEncryptionUser=Encryption user not specified (The context is created by the initiating party)

missingSignatureCrypto=Signature crypto information not available
missingEncryptionCrypto=Encryption crypto information not available
missingCallbackHandler=Password callback handler cannot be located
errorInObtainingSct=Error in obtaining SCT from \"{0}\"
errorInObtainingToken=Error in obtaining a token
errorInExtractingMsgProps = Error in extracting message properties
userMissing = No user value in the rampart configuration policy
cbHandlerMissing = Password CallbackHandler not speficied in rampart configuration policy or the CallbackHandler instance not available in the MessageContext
errorInGettingPasswordForUser = Error in getting password for user : \"{0}\"
noPasswordForUser = No password supplied by the callback handler for the user : \"{0}\"
unsupportedSignedSupportingToken = Unsupported SignedSupportingToken : \"{0}\"
errorExtractingToken = Error extracting token : \"{0}\"
errorInAddingTokenIntoStore = Error in adding token into store
errorInDerivedKeyTokenSignature = Error in DerivedKeyToken signature
errorInSignatureWithX509Token = Error in signature with X509Token
errorCreatingEncryptedKey = Error in creating an encrypted key
errorGettingSignatureValuesForSigconf = Error in getting signature values for signature confirmation
cannotLoadPWCBClass = Cannot load password callback class: {0}
cannotCreatePWCBInstance = Cannot create instance of password callback : {0}
pwcbFailed = password callback failed
unknownKeyRefSpeficier = Unknown key reference specifier for X509Token
errorInRetrievingTokenId = Error in retrieving token : {0}
errorInEncryption = Error in encryption
errorInDKEncr = Error in encryption with a derived key
errorCreatingRahasToken = Error in creating a org.apache.rahas.Token instance
UnsupportedTokenInSupportingToken = Unsupported token in supporting tokens
encryptionTokenMissing = Encryption token missing
signatureTokenMissing = Signature token missging
errorInEncryption = Error during encryption
sctIssuerPolicyMissing = sct-issuer-policy parameter missing 
errorInTokenCancellation = Error in cancelling token
tokenToBeCancelledInvalid = Token to be cancelled is invalid or expired 
errorCreatingRSTTemplateForSCT=Error in creating RST template for SCT
noSecurityToken = Missing security token
noSecurityResults= No security processing results from the incoming message
missingEncryptedKeyInRequest=There was no EncryptedKey in the request message
rampartConigMissing = Please include configured RampartConfiguration assertion in policy

#Errors in processors
errorProcessingUT = Error in processing UsernameToken

cannotValidateTimestamp = The timestamp could not be validated
trustVerificationError = The certificate used for the signature is not trusted
cannotFindAliasForCert = Could not get alias for certificate with {0}
noCertForAlias = Could not get certificates for alias  {0}
certPathVerificationFailed = Certificate path verification failed for certificate with subject

#Rampart Results Validation Errors
timestampMissing = Missing Timestamp
encryptedPartMissing = Missing encryption result for id : {0}
invalidNumberOfEncryptedParts = Invalid number of encrypted parts
protectionOrderMismatch = Protection order mismatch
usernameTokenMissing = UsernameToken missing in request
signatureMissing = Message is not signed
unexprectedEncryptedPart = Unexpected encrypted data found, no encryption required
encryptionMissing = Expected encrypted part missing
signedPartHeaderNotSigned = Soap Header must be signed : {0}
