# -------------------------------------------------------------------
# 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 = Unsupprted 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