blob: 864992d483326f1c05d80e86d066221ed5b3823f [file] [log] [blame]
/*
* 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.
*/
/**
* @author Vladimir N. Molotkov
* @version $Revision$
*/
package org.apache.harmony.security.tests.support.cert;
import java.io.ObjectStreamException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PublicKey;
import java.security.SignatureException;
import java.security.cert.Certificate;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateException;
import java.security.cert.X509Extension;
import java.util.Set;
/**
* Stub class for <code>java.security.cert.Certificate</code> tests
*/
public class MyCertificate extends Certificate implements X509Extension {
private static final long serialVersionUID = -1835303280727190066L;
// MyCertificate encoding
private final byte[] encoding;
public CertificateRep rep;
/**
* Constructs new object of class <code>MyCertificate</code>
*
* @param type
* @param encoding
*/
public MyCertificate(String type, byte[] encoding) {
super(type);
// don't copy to allow null parameter in test
this.encoding = encoding;
}
/**
* Returns <code>MyCertificate</code> encoding
*/
public byte[] getEncoded() throws CertificateEncodingException {
// do copy to force NPE in test
return encoding.clone();
}
/**
* Does nothing
*/
public void verify(PublicKey key) throws CertificateException,
NoSuchAlgorithmException, InvalidKeyException,
NoSuchProviderException, SignatureException {
}
/**
* Does nothing
*/
public void verify(PublicKey key, String sigProvider)
throws CertificateException, NoSuchAlgorithmException,
InvalidKeyException, NoSuchProviderException, SignatureException {
}
/**
* Returns formatted <code>String</code>
* describing <code>MyCertificate</code> object
*/
public String toString() {
return "[My test Certificate, type: " + getType() + "]";
}
public Object writeReplace() throws ObjectStreamException {
return super.writeReplace();
}
/**
* Returns public key (stub) from <code>MyCertificate</code> object
*/
public PublicKey getPublicKey() {
return new PublicKey() {
private static final long serialVersionUID = 788077928335589816L;
public String getAlgorithm() {
return "TEST";
}
public byte[] getEncoded() {
return new byte[] {(byte)1, (byte)2, (byte)3};
}
public String getFormat() {
return "TEST_FORMAT";
}
};
}
public Certificate.CertificateRep getCertificateRep()
throws ObjectStreamException {
Object obj = super.writeReplace();
return (MyCertificateRep) obj;
}
public class MyCertificateRep extends Certificate.CertificateRep {
private static final long serialVersionUID = -3474284043994635553L;
private String type;
private byte[] data;
public MyCertificateRep(String type, byte[] data) {
super(type, data);
this.data = data;
this.type = type;
}
public Object readResolve() throws ObjectStreamException {
return super.readResolve();
}
public String getType() {
return type;
}
public byte[] getData() {
return data;
}
}
public Set<String> getNonCriticalExtensionOIDs() {
return null;
}
public Set<String> getCriticalExtensionOIDs() {
return null;
}
public byte[] getExtensionValue(String oid) {
return null;
}
public boolean hasUnsupportedCriticalExtension() {
return false;
}
}