package gnu.testlet.gnu.crypto.keyring;
// ----------------------------------------------------------------------------
// $Id: TestOfPublicKeyring.java,v 1.2 2005/10/06 04:24:20 rsdio Exp $
//
// Copyright (C) 2003 Free Software Foundation, Inc.
//
// This file is part of GNU Crypto.
//
// GNU Crypto is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2, or (at your option)
// any later version.
//
// GNU Crypto is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; see the file COPYING. If not, write to the
//
// Free Software Foundation Inc.,
// 51 Franklin Street, Fifth Floor,
// Boston, MA 02110-1301
// USA
//
// Linking this library statically or dynamically with other modules is
// making a combined work based on this library. Thus, the terms and
// conditions of the GNU General Public License cover the whole
// combination.
//
// As a special exception, the copyright holders of this library give
// you permission to link this library with independent modules to
// produce an executable, regardless of the license terms of these
// independent modules, and to copy and distribute the resulting
// executable under terms of your choice, provided that you also meet,
// for each linked independent module, the terms and conditions of the
// license of that module. An independent module is a module which is
// not derived from or based on this library. If you modify this
// library, you may extend this exception to your version of the
// library, but you are not obligated to do so. If you do not wish to
// do so, delete this exception statement from your version.
// ----------------------------------------------------------------------------
// Tags: GNU-CRYPTO
import gnu.crypto.keyring.GnuPublicKeyring;
import gnu.crypto.keyring.IKeyring;
import gnu.testlet.TestHarness;
import gnu.testlet.Testlet;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.security.cert.Certificate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>Conformance tests for the GNU (public) Keyring implementation.</p>
*
* @version $Revision: 1.2 $
*/
public class TestOfPublicKeyring implements Testlet {
// Constants and variables
// -------------------------------------------------------------------------
private static final byte[] keyring = new byte[] {
// (byte) 0x47,(byte) 0x4b,(byte) 0x52,(byte) 0x01,(byte) 0x04,(byte) 0x03,(byte) 0x00,(byte) 0x00,
(byte) 0x47,(byte) 0x4b,(byte) 0x52,(byte) 0x01,(byte) 0x01,(byte) 0x03,(byte) 0x00,(byte) 0x00,
(byte) 0x00,(byte) 0x53,(byte) 0x00,(byte) 0x04,(byte) 0x73,(byte) 0x61,(byte) 0x6c,(byte) 0x74,
(byte) 0x00,(byte) 0x10,(byte) 0x46,(byte) 0x34,(byte) 0x42,(byte) 0x35,(byte) 0x35,(byte) 0x43,
(byte) 0x36,(byte) 0x34,(byte) 0x35,(byte) 0x46,(byte) 0x30,(byte) 0x33,(byte) 0x33,(byte) 0x35,
(byte) 0x31,(byte) 0x43,(byte) 0x00,(byte) 0x0a,(byte) 0x61,(byte) 0x6c,(byte) 0x69,(byte) 0x61,
(byte) 0x73,(byte) 0x2d,(byte) 0x6c,(byte) 0x69,(byte) 0x73,(byte) 0x74,(byte) 0x00,(byte) 0x10,
(byte) 0x76,(byte) 0x65,(byte) 0x72,(byte) 0x69,(byte) 0x73,(byte) 0x69,(byte) 0x67,(byte) 0x6e,
(byte) 0x63,(byte) 0x6c,(byte) 0x61,(byte) 0x73,(byte) 0x73,(byte) 0x31,(byte) 0x63,(byte) 0x61,
(byte) 0x00,(byte) 0x06,(byte) 0x6d,(byte) 0x61,(byte) 0x63,(byte) 0x6c,(byte) 0x65,(byte) 0x6e,
(byte) 0x00,(byte) 0x02,(byte) 0x32,(byte) 0x30,(byte) 0x00,(byte) 0x03,(byte) 0x6d,(byte) 0x61,
(byte) 0x63,(byte) 0x00,(byte) 0x0a,(byte) 0x48,(byte) 0x4d,(byte) 0x41,(byte) 0x43,(byte) 0x2d,
(byte) 0x53,(byte) 0x48,(byte) 0x41,(byte) 0x2d,(byte) 0x31,(byte) 0x00,(byte) 0x00,(byte) 0x02,
(byte) 0x6e,(byte) 0x04,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x32,(byte) 0x00,(byte) 0x0a,
(byte) 0x61,(byte) 0x6c,(byte) 0x69,(byte) 0x61,(byte) 0x73,(byte) 0x2d,(byte) 0x6c,(byte) 0x69,
(byte) 0x73,(byte) 0x74,(byte) 0x00,(byte) 0x10,(byte) 0x76,(byte) 0x65,(byte) 0x72,(byte) 0x69,
(byte) 0x73,(byte) 0x69,(byte) 0x67,(byte) 0x6e,(byte) 0x63,(byte) 0x6c,(byte) 0x61,(byte) 0x73,
(byte) 0x73,(byte) 0x31,(byte) 0x63,(byte) 0x61,(byte) 0x00,(byte) 0x09,(byte) 0x61,(byte) 0x6c,
(byte) 0x67,(byte) 0x6f,(byte) 0x72,(byte) 0x69,(byte) 0x74,(byte) 0x68,(byte) 0x6d,(byte) 0x00,
(byte) 0x07,(byte) 0x44,(byte) 0x45,(byte) 0x46,(byte) 0x4c,(byte) 0x41,(byte) 0x54,(byte) 0x45,
(byte) 0x00,(byte) 0x00,(byte) 0x02,(byte) 0x1f,(byte) 0x78,(byte) 0x9c,(byte) 0x63,(byte) 0x65,
(byte) 0x60,(byte) 0x60,(byte) 0x70,(byte) 0x61,(byte) 0x60,(byte) 0x29,(byte) 0xa9,(byte) 0x2c,
(byte) 0x48,(byte) 0x65,(byte) 0x60,(byte) 0x8d,(byte) 0xd0,(byte) 0x33,(byte) 0x35,(byte) 0xb0,
(byte) 0x64,(byte) 0xe0,(byte) 0x4d,(byte) 0x2e,(byte) 0x4a,(byte) 0x4d,(byte) 0x2c,(byte) 0xc9,
(byte) 0xcc,(byte) 0xcf,(byte) 0xd3,(byte) 0x4d,(byte) 0x49,(byte) 0x2c,(byte) 0x49,(byte) 0x65,
(byte) 0xe0,(byte) 0x35,(byte) 0x34,(byte) 0x30,(byte) 0x37,(byte) 0x30,(byte) 0x37,(byte) 0x31,
(byte) 0xb3,(byte) 0x34,(byte) 0xb1,(byte) 0x30,(byte) 0xb4,(byte) 0x34,(byte) 0x60,(byte) 0x60,
(byte) 0x4d,(byte) 0xcc,(byte) 0xc9,(byte) 0x4c,(byte) 0x2c,(byte) 0x66,(byte) 0x10,(byte) 0x28,
(byte) 0x4b,(byte) 0x2d,(byte) 0xca,(byte) 0x2c,(byte) 0xce,(byte) 0x4c,(byte) 0xcf,(byte) 0x4b,
(byte) 0xce,(byte) 0x49,(byte) 0x2c,(byte) 0x2e,(byte) 0x36,(byte) 0x4c,(byte) 0x4e,(byte) 0x64,
(byte) 0x60,(byte) 0x60,(byte) 0x72,(byte) 0x30,(byte) 0x68,(byte) 0x62,(byte) 0xb2,(byte) 0x31,
(byte) 0x68,(byte) 0x62,(byte) 0x5c,(byte) 0xca,(byte) 0x24,(byte) 0x60,(byte) 0x14,(byte) 0x60,
(byte) 0x7c,(byte) 0x3e,(byte) 0xe0,(byte) 0x62,(byte) 0xd8,(byte) 0xe7,(byte) 0x98,(byte) 0xc6,
(byte) 0xb5,(byte) 0xa9,(byte) 0x31,(byte) 0xfe,(byte) 0x27,(byte) 0x54,(byte) 0x0d,(byte) 0x78,
(byte) 0xd9,(byte) 0x38,(byte) 0xb5,(byte) 0xda,(byte) 0x3c,(byte) 0xda,(byte) 0xbe,(byte) 0xf3,
(byte) 0x32,(byte) 0x32,(byte) 0x32,(byte) 0xb1,(byte) 0x32,(byte) 0x18,(byte) 0xc4,(byte) 0x1b,
(byte) 0x72,(byte) 0x1b,(byte) 0x70,(byte) 0xb2,(byte) 0x31,(byte) 0x87,(byte) 0xb2,(byte) 0xb0,
(byte) 0x09,(byte) 0x33,(byte) 0x85,(byte) 0x06,(byte) 0x1b,(byte) 0x8a,(byte) 0x1b,(byte) 0x88,
(byte) 0x82,(byte) 0x38,(byte) 0x5c,(byte) 0xc2,(byte) 0x7c,(byte) 0x61,(byte) 0x40,(byte) 0x63,
(byte) 0x83,(byte) 0x81,(byte) 0xc6,(byte) 0xea,(byte) 0x28,(byte) 0x78,(byte) 0xe6,(byte) 0x25,
(byte) 0xeb,(byte) 0x19,(byte) 0x9a,(byte) 0x1b,(byte) 0x98,(byte) 0x82,(byte) 0x24,(byte) 0xb8,
(byte) 0x85,(byte) 0xf5,(byte) 0x9c,(byte) 0x41,(byte) 0xf6,(byte) 0x28,(byte) 0x18,(byte) 0x2a,
(byte) 0x04,(byte) 0x94,(byte) 0x26,(byte) 0xe5,(byte) 0x64,(byte) 0x26,(byte) 0x2b,(byte) 0x04,
(byte) 0x14,(byte) 0x65,(byte) 0xe6,(byte) 0x26,(byte) 0x16,(byte) 0x55,(byte) 0x2a,(byte) 0x38,
(byte) 0xa7,(byte) 0x16,(byte) 0x95,(byte) 0x64,(byte) 0xa6,(byte) 0x65,(byte) 0x26,(byte) 0x83,
(byte) 0x1d,(byte) 0xac,(byte) 0xe0,(byte) 0x58,(byte) 0x5a,(byte) 0x92,(byte) 0x91,(byte) 0x5f,
(byte) 0x94,(byte) 0x59,(byte) 0x52,(byte) 0x69,(byte) 0x20,(byte) 0x27,(byte) 0xce,(byte) 0x6b,
(byte) 0x69,(byte) 0x66,(byte) 0x60,(byte) 0x68,(byte) 0x64,(byte) 0x69,(byte) 0x00,(byte) 0x06,
(byte) 0x51,(byte) 0xe2,(byte) 0xbc,(byte) 0x46,(byte) 0x06,(byte) 0x06,(byte) 0x40,(byte) 0x9f,
(byte) 0x18,(byte) 0x19,(byte) 0x9b,(byte) 0x5a,(byte) 0x9a,(byte) 0x5a,(byte) 0x46,(byte) 0xd1,
(byte) 0xde,(byte) 0x01,(byte) 0x8d,(byte) 0xf3,(byte) 0x91,(byte) 0xfd,(byte) 0xcc,(byte) 0xc8,
(byte) 0xca,(byte) 0xc0,(byte) 0xdc,(byte) 0xd8,(byte) 0xcb,(byte) 0x60,(byte) 0xd0,(byte) 0xd8,
(byte) 0xc9,(byte) 0xd4,(byte) 0xd8,(byte) 0xc8,(byte) 0xf0,(byte) 0x54,(byte) 0x72,(byte) 0x7f,
(byte) 0xee,(byte) 0xe2,(byte) 0xb0,(byte) 0x44,(byte) 0xdd,(byte) 0x99,(byte) 0x1e,(byte) 0x85,
(byte) 0xdf,(byte) 0xd2,(byte) 0xef,(byte) 0xed,(byte) 0xec,(byte) 0x7d,(byte) 0xbd,(byte) 0x7d,
(byte) 0x5e,(byte) 0x5b,(byte) 0x03,(byte) 0xd7,(byte) 0x44,(byte) 0xbe,(byte) 0x5f,(byte) 0x16,
(byte) 0xaa,(byte) 0xeb,(byte) 0xdd,(byte) 0x3a,(byte) 0x9a,(byte) 0x9e,(byte) 0x16,(byte) 0xaf,
(byte) 0x58,(byte) 0x30,(byte) 0x5b,(byte) 0x25,(byte) 0x96,(byte) 0x57,(byte) 0xfe,(byte) 0x4c,
(byte) 0x6a,(byte) 0x1e,(byte) 0xcf,(byte) 0x86,(byte) 0x0b,(byte) 0x61,(byte) 0x2d,(byte) 0x12,
(byte) 0xed,(byte) 0xb3,(byte) 0xd8,(byte) 0x66,(byte) 0x0b,(byte) 0x2c,(byte) 0x2c,(byte) 0xbe,
(byte) 0xbf,(byte) 0x25,(byte) 0xc2,(byte) 0x32,(byte) 0x3b,(byte) 0xef,(byte) 0xe0,(byte) 0x37,
(byte) 0xd1,(byte) 0xab,(byte) 0x2b,(byte) 0x56,(byte) 0xd8,(byte) 0xaf,(byte) 0x12,(byte) 0x62,
(byte) 0xeb,(byte) 0x35,(byte) 0x5c,(byte) 0x53,(byte) 0xbf,(byte) 0xc1,(byte) 0xe4,(byte) 0x7a,
(byte) 0xbf,(byte) 0x49,(byte) 0x7a,(byte) 0x07,(byte) 0xe7,(byte) 0x59,(byte) 0x11,(byte) 0xc1,
(byte) 0x47,(byte) 0x7e,(byte) 0xae,(byte) 0x61,(byte) 0x99,(byte) 0xf2,(byte) 0x15,(byte) 0x4c,
(byte) 0x0d,(byte) 0xb7,(byte) 0xee,(byte) 0xb8,(byte) 0x4f,(byte) 0xd4,(byte) 0xdc,(byte) 0x6d,
(byte) 0x76,(byte) 0x32,(byte) 0x39,(byte) 0xe6,(byte) 0xe8,(byte) 0x83,(byte) 0xeb,(byte) 0xba,
(byte) 0xed,(byte) 0xd5,(byte) 0x0b,(byte) 0xb7,(byte) 0x1b,(byte) 0x6d,(byte) 0xa8,(byte) 0x36,
(byte) 0xd8,(byte) 0xa5,(byte) 0xa5,(byte) 0x6f,(byte) 0xb8,(byte) 0xea,(byte) 0xdd,(byte) 0xe2,
(byte) 0xf4,(byte) 0x5b,(byte) 0xb7,(byte) 0x99,(byte) 0x98,(byte) 0x19,(byte) 0x19,(byte) 0x18,
(byte) 0xd1,(byte) 0xa2,(byte) 0x84,(byte) 0x19,(byte) 0xe8,(byte) 0x2e,(byte) 0x6f,(byte) 0x97,
(byte) 0xb4,(byte) 0x84,(byte) 0x8c,(byte) 0x94,(byte) 0x27,(byte) 0x33,(byte) 0xa4,(byte) 0x3f,
(byte) 0x6f,(byte) 0x28,(byte) 0x7a,(byte) 0x36,(byte) 0xb5,(byte) 0xb3,(byte) 0xe6,(byte) 0x6e,
(byte) 0xf5,(byte) 0xe6,(byte) 0xa9,(byte) 0x07,(byte) 0x64,(byte) 0xf5,(byte) 0x6e,(byte) 0xdc,
(byte) 0x90,(byte) 0xbc,(byte) 0xa0,(byte) 0x6b,(byte) 0x62,(byte) 0x7b,(byte) 0x2c,(byte) 0x60,
(byte) 0x96,(byte) 0x40,(byte) 0x5b,(byte) 0xcf,(byte) 0x2a,(byte) 0x7b,(byte) 0xeb,(byte) 0x15,
(byte) 0x2c,(byte) 0x7f,(byte) 0xcc,(byte) 0x83,(byte) 0xa6,(byte) 0x1e,(byte) 0xbe,(byte) 0x79,
(byte) 0xf2,(byte) 0xf6,(byte) 0xd9,(byte) 0x4f,(byte) 0x6d,(byte) 0x6c,(byte) 0x47,(byte) 0x36,
(byte) 0x4a,(byte) 0x7f,(byte) 0x68,(byte) 0xea,(byte) 0x30,(byte) 0x70,(byte) 0xea,(byte) 0x13,
(byte) 0x0f,(byte) 0x90,(byte) 0x49,(byte) 0xa9,(byte) 0xda,(byte) 0x61,(byte) 0x37,(byte) 0xd3,
(byte) 0xb3,(byte) 0x64,(byte) 0xfa,(byte) 0x9f,(byte) 0x35,(byte) 0x4c,(byte) 0xce,(byte) 0xbf,
(byte) 0xa7,(byte) 0xf1,(byte) 0x84,(byte) 0xb1,(byte) 0xa8,(byte) 0xf2,(byte) 0xd4,(byte) 0xd4,
(byte) 0xb4,(byte) 0xcf,(byte) 0x55,(byte) 0x59,(byte) 0x7e,(byte) 0xe3,(byte) 0x83,(byte) 0x91,
(byte) 0xe6,(byte) 0xd6,(byte) 0x25,(byte) 0xf7,(byte) 0x63,(byte) 0x17,(byte) 0xf9,(byte) 0x1c,
(byte) 0x15,(byte) 0x33,(byte) 0x5a,(byte) 0xe1,(byte) 0xf4,(byte) 0xcd,(byte) 0x75,(byte) 0xd9,
(byte) 0x36,(byte) 0xb3,(byte) 0x9d,(byte) 0x0f,(byte) 0xf6,(byte) 0xa7,(byte) 0x9a,(byte) 0x4d,
(byte) 0x3e,(byte) 0x74,(byte) 0xe9,(byte) 0x7a,(byte) 0xf6,(byte) 0x9d,(byte) 0x7b,(byte) 0x91,
(byte) 0xd7,(byte) 0x16,(byte) 0x99,(byte) 0xfe,(byte) 0x70,(byte) 0x05,(byte) 0x00,(byte) 0xc4,
(byte) 0x7a,(byte) 0xe5,(byte) 0xbb,(byte) 0x04,(byte) 0xf9,(byte) 0x0f,(byte) 0x26,(byte) 0x22,
(byte) 0xfc,(byte) 0x61,(byte) 0xb6,(byte) 0xcf,(byte) 0x0c,(byte) 0xba,(byte) 0x43,(byte) 0xc1,
(byte) 0xb9,(byte) 0xd6,(byte) 0xae,(byte) 0xb3,(byte) 0xd8,(byte) 0x21,(byte) 0x23
};
private static final String ALIAS = "verisignclass1ca";
// Constructor(s)
// -------------------------------------------------------------------------
// default 0-arguments constructor
// Class methods
// -------------------------------------------------------------------------
// Instance methods
// -------------------------------------------------------------------------
public void test(final TestHarness harness) {
harness.checkPoint("TestOfPublicKeyring");
final GnuPublicKeyring kr = new GnuPublicKeyring();
try {
final Map attributes = new HashMap();
attributes.put(IKeyring.KEYRING_DATA_IN, new ByteArrayInputStream(keyring));
attributes.put(IKeyring.KEYRING_PASSWORD, "password".toCharArray());
// IMPORTANT:
// the following relies on an X509 cert provider; which we're not.
// GNU Classpath (gLibj.zip) is; you need to add it to the java
// launcher classpath, and include the GNU provider ("GNU") before
// exercising this code; eg:
//
// Security.addProvider(new gnu.java.security.provider.Gnu());
//
// kr.load(attributes);
// harness.check(true, "load(...)");
//
// harness.check(kr.containsCertificate(ALIAS), "containsCertificate(...)");
//
// final List list = kr.get(ALIAS);
// harness.check(list.size() == 1, "get(...).size() == 1");
//
// final Certificate cert = kr.getCertificate(ALIAS);
// harness.check(cert != null, "getCertificate(...) != null");
//
//// System.out.println("cert="+cert);
} catch (Exception x) {
harness.debug(x);
harness.fail("TestOfPublicKeyring");
}
}
}