Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/java/security/cert/X509Certificate/VerifyDefault.java
47490 views
/*1* Copyright (c) 2017, 2020, 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 ../../testlibrary27* @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;4950public class VerifyDefault {51private static final String TEST_CERT =52"-----BEGIN CERTIFICATE-----\n" +53"MIICvTCCAaWgAwIBAgIEGYqL9TANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRT\n" +54"ZWxmMB4XDTE3MDMyODE2NDcyNloXDTE3MDYyNjE2NDcyNlowDzENMAsGA1UEAxME\n" +55"U2VsZjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL1pfSJljFVSABOL\n" +56"tJbIVPEkz1+2AFgzY1hqwE0EH80lvhOEkiPPYCKwBE5VTZdyFfwFjpyx7eEeJMNT\n" +57"o7cixfmkQaiXHr/S1AS4BRTqLG/zgLzoJpVbzi45rnVEZc0oTm11KG3uUxkZTRr3\n" +58"5ORbYyZpkscKwHL2M0J/1GmnA1hmhQdwUQyIKxg4eKQwyE+/TdbFlCWVNnOlb+91\n" +59"eXvS11nIJ1oaBgn7u4qihuVmFmngLMxExnLYKV6AwdkwFD6pERObclRD9vAl5eUk\n" +60"+sM6zQYwfLdyC2i8e+ETBeOg1ijptM4KT5Uaq89zxjLR0DPH4S+aILp3gYHGrW5r\n" +61"eMxZAEMCAwEAAaMhMB8wHQYDVR0OBBYEFOME39JtbjzQaK3ufpKo/Pl4sZ8XMA0G\n" +62"CSqGSIb3DQEBCwUAA4IBAQCDcw0+Sf0yeVROVlb2/VV3oIblHkGQheXeIurW64k7\n" +63"tEzHtx9i8dnj5lzTZNH6hU4GRlyULbSDzjcM3P2XFRsM+0a/kEJZVqnLz5ji//7/\n" +64"ZXaRX0TiE2IfFOTGbO6LusO3yR4tOER/WHllz2H21C2SbW3+92Ou28glTZa42AAZ\n" +65"mUj9j+p6mZqD4/tUBqAEqqQoMIhw9CNjc46STNayBjt/0/+I2pfy6LagrMbjBzZ0\n" +66"A5kXg9WjnywGk8XFr/3RZz8DrUmCYs2qCYLCHQHsuCE6gCuf9wKhKyD51MFXXRr0\n" +67"cyG6LYQjrreMHYk4ZfN2NPC6lGjWxB5mIbV/DuikCnYu\n" +68"-----END CERTIFICATE-----";6970private static class TestX509Certificate extends X509Certificate {71private final X509Certificate cert;72TestX509Certificate(X509Certificate cert) {73this.cert = cert;74}75public Set<String> getCriticalExtensionOIDs() {76return cert.getCriticalExtensionOIDs();77}78public byte[] getExtensionValue(String oid) {79return cert.getExtensionValue(oid);80}81public Set<String> getNonCriticalExtensionOIDs() {82return cert.getNonCriticalExtensionOIDs();83}84public boolean hasUnsupportedCriticalExtension() {85return cert.hasUnsupportedCriticalExtension();86}87public void checkValidity() throws CertificateExpiredException,88CertificateNotYetValidException {89cert.checkValidity();90}91public void checkValidity(Date date) throws CertificateExpiredException,92CertificateNotYetValidException {93cert.checkValidity(date);94}95public int getVersion() { return cert.getVersion(); }96public BigInteger getSerialNumber() { return cert.getSerialNumber(); }97public Principal getIssuerDN() { return cert.getIssuerDN(); }98public Principal getSubjectDN() { return cert.getSubjectDN(); }99public Date getNotBefore() { return cert.getNotBefore(); }100public Date getNotAfter() { return cert.getNotAfter(); }101public byte[] getTBSCertificate() throws CertificateEncodingException {102return cert.getTBSCertificate();103}104public byte[] getSignature() { return cert.getSignature(); }105public String getSigAlgName() { return cert.getSigAlgName(); }106public String getSigAlgOID() { return cert.getSigAlgOID(); }107public byte[] getSigAlgParams() { return cert.getSigAlgParams(); }108public boolean[] getIssuerUniqueID() {109return cert.getIssuerUniqueID();110}111public boolean[] getSubjectUniqueID() {112return cert.getSubjectUniqueID();113}114public boolean[] getKeyUsage() { return cert.getKeyUsage(); }115public int getBasicConstraints() { return cert.getBasicConstraints(); }116public byte[] getEncoded() throws CertificateEncodingException {117return cert.getEncoded();118}119public void verify(PublicKey key) throws CertificateException,120InvalidKeyException, NoSuchAlgorithmException,121NoSuchProviderException, SignatureException {122cert.verify(key);123}124public void verify(PublicKey key, String sigProvider) throws125CertificateException, InvalidKeyException, NoSuchAlgorithmException,126NoSuchProviderException, SignatureException {127cert.verify(key, sigProvider);128}129public PublicKey getPublicKey() { return cert.getPublicKey(); }130public String toString() { return cert.toString(); }131}132133public static void main(String[] args) throws Exception {134X509Certificate cert = CertUtils.getCertFromString(TEST_CERT);135new TestX509Certificate(cert).verify(cert.getPublicKey(),136(Provider)null);137}138}139140141