/** * 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. */ package org.apache.wss4j.stax.test; import java.io.IOException; import java.security.cert.X509Certificate; import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.UnsupportedCallbackException; import org.apache.wss4j.common.ext.WSPasswordCallback; import org.apache.wss4j.common.saml.builder.SAML1Constants; public class CallbackHandlerImpl implements CallbackHandler { private String username = "default"; private byte[] secret; public enum Statement { AUTHN, ATTR, AUTHZ } private String subjectName = "uid=joe,ou=people,ou=saml-demo,o=example.com"; private String subjectQualifier = "www.example.com"; private String confirmationMethod = SAML1Constants.CONF_SENDER_VOUCHES; private X509Certificate[] certs; private byte[] ephemeralKey; private String issuer; public CallbackHandlerImpl() { } public CallbackHandlerImpl(String username) { if (username != null) { this.username = username; } } public CallbackHandlerImpl(byte[] secret) { this.secret = secret; } @Override public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { if (callbacks[0] instanceof WSPasswordCallback) { WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; if (pc.getUsage() == WSPasswordCallback.DECRYPT || pc.getUsage() == WSPasswordCallback.SIGNATURE || pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN ) { pc.setPassword(username); } else if (pc.getUsage() == WSPasswordCallback.SECRET_KEY || pc.getUsage() == WSPasswordCallback.SECURITY_CONTEXT_TOKEN) { pc.setKey(secret); } else if (pc.getUsage() == WSPasswordCallback.PASSWORD_ENCRYPTOR_PASSWORD) { pc.setPassword("this-is-a-secret"); } else { throw new UnsupportedCallbackException(pc, "Unrecognized CallbackHandlerImpl"); } } } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSubjectName() { return subjectName; } public void setSubjectName(String subjectName) { this.subjectName = subjectName; } public String getSubjectQualifier() { return subjectQualifier; } public void setSubjectQualifier(String subjectQualifier) { this.subjectQualifier = subjectQualifier; } public String getConfirmationMethod() { return confirmationMethod; } public void setConfirmationMethod(String confirmationMethod) { this.confirmationMethod = confirmationMethod; } public X509Certificate[] getCerts() { return certs; } public void setCerts(X509Certificate[] certs) { this.certs = certs; } public byte[] getEphemeralKey() { return ephemeralKey; } public void setEphemeralKey(byte[] ephemeralKey) { this.ephemeralKey = ephemeralKey; } public String getIssuer() { return issuer; } public void setIssuer(String issuer) { this.issuer = issuer; } public byte[] getSecret() { return secret; } public void setSecret(byte[] secret) { this.secret = secret; } }