# -------------------------------------------------------------------
# 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 instance
noInfoForCBhandler = Cannot obtain a callback handler with available configuration information 
cannotLoadPolicyValidatorCbClass = Cannot load custom policy validator callback class : \"{0}\"
cannotCreatePolicyValidatorCallbackInstance = Cannot create custom policy validator callback class instance : \"{0}\"
cannotLoadRampartConfigCallbackClass = Cannot load rampart config callback class : \"{0}\"
cannotCreateRampartConfigCallbackInstance = Cannot create rampart config callback class instance : \"{0}\"
missingEncryptionUser=Encryption user not specified (The context is created by the initiating party)
rampartConfigMissing = Rampart policy configuration missing

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 specified 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
errorInSignatureWithACustomToken = Error in signature with a custom token
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 missing
sctIssuerPolicyMissing = sct-issuer-policy parameter missing 
errorInTokenCancellation = Error in canceling token
tokenToBeCancelledInvalid = Token to be canceled 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
missingSecurityHeader = Missing wsse:Security header in request
missingSOAPHeader = SOAP header missing
clientAuthRequired= Service requires SSL mutual authentication

#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}
noCertForSubject = Could not get certificates for subject  {0}
certPathVerificationFailed = Certificate path verification failed for certificate with subject
noCertificatesForIssuer = No certificates were found for issuer \"{0}\" and issuer serial number \"{1}\"

#Rampart Results Validation Errors
timestampMissing = Missing Timestamp
encryptedPartMissing = Missing encryption result for id : {0}
invalidNumberOfEncryptedParts = Invalid number of encrypted parts
protectionOrderMismatch = Protection order mismatch 
samlTokenMissing = SAML Token missing in request
binaryTokenMissing = Binary Security Token missing in request
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}
signedElementNotSigned = Element must be signed : {0}
bodyNotSigned = Soap Body must be signed 
unexprectedSignature = Unexpected signature
invalidTransport = Expected transport is "https" but incoming transport found : \"{0}\" 
requiredElementsMissing = Required Elements not found in the incoming message : {0}
repeatingNonceValue = Nonce value : {0}, already seen before for user name : {1}. Possibly this could be a replay attack.
invalidNonceLifeTime = Invalid value for nonceLifeTime in rampart configuration file.
invalidIssuerAddress = Invalid value for Issuer
invalidSignatureAlgo=Invalid signature algorithm for Asymmetric binding

