blob: 1dafbcb8e52ffb3dc517c4dce7bd0d96f4a28427 [file] [log] [blame]
/* GENERATED SOURCE. DO NOT MODIFY. */
package com.android.org.bouncycastle.jcajce.util;
import java.security.PrivateKey;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* Wrapper for a private key that carries annotations that can be used
* for tracking or debugging.
* @hide This class is not part of the Android public SDK API
*/
public class AnnotatedPrivateKey
implements PrivateKey
{
public static final String LABEL = "label";
private final PrivateKey key;
private final Map<String, Object> annotations;
AnnotatedPrivateKey(PrivateKey key, String label)
{
this.key = key;
this.annotations = Collections.singletonMap(LABEL, (Object)label);
}
AnnotatedPrivateKey(PrivateKey key, Map<String, Object> annotations)
{
this.key = key;
this.annotations = annotations;
}
public PrivateKey getKey()
{
return key;
}
public Map<String, Object> getAnnotations()
{
return annotations;
}
public String getAlgorithm()
{
return key.getAlgorithm();
}
public Object getAnnotation(String key)
{
return annotations.get(key);
}
/**
* Return a new annotated key with an additional annotation added to it.
*
* @param name the name of the annotation to add.
* @param annotation the object providing the annotation details.
* @return a new annotated key with the extra annotation.
*/
public AnnotatedPrivateKey addAnnotation(String name, Object annotation)
{
Map<String, Object> newAnnotations = new HashMap<String, Object>(annotations);
newAnnotations.put(name, annotation);
return new AnnotatedPrivateKey(this.key, Collections.unmodifiableMap(newAnnotations));
}
/**
* Return a new annotated key with the named annotation removed.
*
* @param name the name of the annotation to remove.
* @return a new annotated key with the named annotation removed.
*/
public AnnotatedPrivateKey removeAnnotation(String name)
{
Map<String, Object> newAnnotations = new HashMap<String, Object>(annotations);
newAnnotations.remove(name);
return new AnnotatedPrivateKey(this.key, Collections.unmodifiableMap(newAnnotations));
}
public String getFormat()
{
return key.getFormat();
}
public byte[] getEncoded()
{
return key.getEncoded();
}
public int hashCode()
{
return this.key.hashCode();
}
public boolean equals(Object o)
{
if (o instanceof AnnotatedPrivateKey)
{
return this.key.equals(((AnnotatedPrivateKey)o).key);
}
return this.key.equals(o);
}
public String toString()
{
if (annotations.containsKey(LABEL))
{
return annotations.get(LABEL).toString();
}
return key.toString();
}
}