Path: blob/master/test/jdk/java/security/cert/X509Certificate/VerifyDefault.java
41152 views
/*1* Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/**24* @test25* @bug 817502926* @library /test/lib27* @summary check that default implementation of28* X509Certificate.verify(PublicKey, Provider) works on custom29* X509Certificate impl.30*/3132import java.math.BigInteger;33import java.security.InvalidKeyException;34import java.security.NoSuchAlgorithmException;35import java.security.NoSuchProviderException;36import java.security.Principal;37import java.security.Provider;38import java.security.PublicKey;39import java.security.SignatureException;40import java.security.cert.CertificateEncodingException;41import java.security.cert.CertificateException;42import java.security.cert.CertificateExpiredException;43import java.security.cert.CertificateNotYetValidException;44import java.security.cert.X509Certificate;45import java.util.Collection;46import java.util.Date;47import java.util.List;48import java.util.Set;49import jdk.test.lib.security.CertUtils;5051public class VerifyDefault {52private static final String TEST_CERT =53"-----BEGIN CERTIFICATE-----\n" +54"MIICvTCCAaWgAwIBAgIEGYqL9TANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRT\n" +55"ZWxmMB4XDTE3MDMyODE2NDcyNloXDTE3MDYyNjE2NDcyNlowDzENMAsGA1UEAxME\n" +56"U2VsZjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL1pfSJljFVSABOL\n" +57"tJbIVPEkz1+2AFgzY1hqwE0EH80lvhOEkiPPYCKwBE5VTZdyFfwFjpyx7eEeJMNT\n" +58"o7cixfmkQaiXHr/S1AS4BRTqLG/zgLzoJpVbzi45rnVEZc0oTm11KG3uUxkZTRr3\n" +59"5ORbYyZpkscKwHL2M0J/1GmnA1hmhQdwUQyIKxg4eKQwyE+/TdbFlCWVNnOlb+91\n" +60"eXvS11nIJ1oaBgn7u4qihuVmFmngLMxExnLYKV6AwdkwFD6pERObclRD9vAl5eUk\n" +61"+sM6zQYwfLdyC2i8e+ETBeOg1ijptM4KT5Uaq89zxjLR0DPH4S+aILp3gYHGrW5r\n" +62"eMxZAEMCAwEAAaMhMB8wHQYDVR0OBBYEFOME39JtbjzQaK3ufpKo/Pl4sZ8XMA0G\n" +63"CSqGSIb3DQEBCwUAA4IBAQCDcw0+Sf0yeVROVlb2/VV3oIblHkGQheXeIurW64k7\n" +64"tEzHtx9i8dnj5lzTZNH6hU4GRlyULbSDzjcM3P2XFRsM+0a/kEJZVqnLz5ji//7/\n" +65"ZXaRX0TiE2IfFOTGbO6LusO3yR4tOER/WHllz2H21C2SbW3+92Ou28glTZa42AAZ\n" +66"mUj9j+p6mZqD4/tUBqAEqqQoMIhw9CNjc46STNayBjt/0/+I2pfy6LagrMbjBzZ0\n" +67"A5kXg9WjnywGk8XFr/3RZz8DrUmCYs2qCYLCHQHsuCE6gCuf9wKhKyD51MFXXRr0\n" +68"cyG6LYQjrreMHYk4ZfN2NPC6lGjWxB5mIbV/DuikCnYu\n" +69"-----END CERTIFICATE-----";7071private static class TestX509Certificate extends X509Certificate {72private final X509Certificate cert;73TestX509Certificate(X509Certificate cert) {74this.cert = cert;75}76public Set<String> getCriticalExtensionOIDs() {77return cert.getCriticalExtensionOIDs();78}79public byte[] getExtensionValue(String oid) {80return cert.getExtensionValue(oid);81}82public Set<String> getNonCriticalExtensionOIDs() {83return cert.getNonCriticalExtensionOIDs();84}85public boolean hasUnsupportedCriticalExtension() {86return cert.hasUnsupportedCriticalExtension();87}88public void checkValidity() throws CertificateExpiredException,89CertificateNotYetValidException {90cert.checkValidity();91}92public void checkValidity(Date date) throws CertificateExpiredException,93CertificateNotYetValidException {94cert.checkValidity(date);95}96public int getVersion() { return cert.getVersion(); }97public BigInteger getSerialNumber() { return cert.getSerialNumber(); }98public Principal getIssuerDN() { return cert.getIssuerDN(); }99public Principal getSubjectDN() { return cert.getSubjectDN(); }100public Date getNotBefore() { return cert.getNotBefore(); }101public Date getNotAfter() { return cert.getNotAfter(); }102public byte[] getTBSCertificate() throws CertificateEncodingException {103return cert.getTBSCertificate();104}105public byte[] getSignature() { return cert.getSignature(); }106public String getSigAlgName() { return cert.getSigAlgName(); }107public String getSigAlgOID() { return cert.getSigAlgOID(); }108public byte[] getSigAlgParams() { return cert.getSigAlgParams(); }109public boolean[] getIssuerUniqueID() {110return cert.getIssuerUniqueID();111}112public boolean[] getSubjectUniqueID() {113return cert.getSubjectUniqueID();114}115public boolean[] getKeyUsage() { return cert.getKeyUsage(); }116public int getBasicConstraints() { return cert.getBasicConstraints(); }117public byte[] getEncoded() throws CertificateEncodingException {118return cert.getEncoded();119}120public void verify(PublicKey key) throws CertificateException,121InvalidKeyException, NoSuchAlgorithmException,122NoSuchProviderException, SignatureException {123cert.verify(key);124}125public void verify(PublicKey key, String sigProvider) throws126CertificateException, InvalidKeyException, NoSuchAlgorithmException,127NoSuchProviderException, SignatureException {128cert.verify(key, sigProvider);129}130public PublicKey getPublicKey() { return cert.getPublicKey(); }131public String toString() { return cert.toString(); }132}133134public static void main(String[] args) throws Exception {135X509Certificate cert = CertUtils.getCertFromString(TEST_CERT);136new TestX509Certificate(cert).verify(cert.getPublicKey(),137(Provider)null);138}139}140141142