Credential.java
/*-
* #%L
* io.earcam.utilitarian.security
* %%
* Copyright (C) 2017 earcam
* %%
* SPDX-License-Identifier: (BSD-3-Clause OR EPL-1.0 OR Apache-2.0 OR MIT)
*
* You <b>must</b> choose to accept, in full - any individual or combination of
* the following licenses:
* <ul>
* <li><a href="https://opensource.org/licenses/BSD-3-Clause">BSD-3-Clause</a></li>
* <li><a href="https://www.eclipse.org/legal/epl-v10.html">EPL-1.0</a></li>
* <li><a href="https://www.apache.org/licenses/LICENSE-2.0">Apache-2.0</a></li>
* <li><a href="https://opensource.org/licenses/MIT">MIT</a></li>
* </ul>
* #L%
*/
package io.earcam.utilitarian.security;
import java.util.Arrays;
import java.util.Objects;
import javax.security.auth.Destroyable;
/**
* Implements {@link AutoCloseable} to provoke compiler warnings, where the
* implementation of {@link #close()} calls {@link #destroy()}
*
*/
public class Credential implements Destroyable, AutoCloseable {
private String name;
private char[] password;
public Credential(String name, char[] password)
{
Objects.requireNonNull(name, "name");
this.name = name;
this.password = password;
}
@Override
public void destroy()
{
name = null;
Arrays.fill(password, ' ');
password = null;
}
@Override
public boolean isDestroyed()
{
return name == null;
}
public String name()
{
return name;
}
public char[] password()
{
return password;
}
@Override
public void close()
{
destroy();
}
}