mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8172366: Support SHA-3 based signatures
Enhance default JDK providers including SUN, SunRsaSign, and SunEC, with signatures using SHA-3 family of digests. Reviewed-by: xuelei
This commit is contained in:
parent
46598c8644
commit
40206822f4
20 changed files with 673 additions and 95 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -47,11 +47,16 @@ import sun.security.jca.JCAUtil;
|
|||
* Standards and Technology (NIST), using SHA digest algorithms
|
||||
* from FIPS180-3.
|
||||
*
|
||||
* This file contains both the signature implementation for the
|
||||
* commonly used SHA1withDSA (DSS), SHA224withDSA, SHA256withDSA,
|
||||
* as well as RawDSA, used by TLS among others. RawDSA expects
|
||||
* the 20 byte SHA-1 digest as input via update rather than the
|
||||
* original data like other signature implementations.
|
||||
* This file contains the signature implementation for the
|
||||
* SHA1withDSA (DSS), SHA224withDSA, SHA256withDSA, SHA384withDSA,
|
||||
* SHA512withDSA, SHA3-224withDSA, SHA3-256withDSA, SHA3-384withDSA,
|
||||
* SHA3-512withDSA, as well as RawDSA, used by TLS among others.
|
||||
* RawDSA expects the 20 byte SHA-1 digest as input via update rather
|
||||
* than the original data like other signature implementations.
|
||||
*
|
||||
* In addition, IEEE P1363 signature format is supported. The
|
||||
* corresponding implementation is registered under <sig>inP1363Format,
|
||||
* e.g. SHA256withDSAinP1363Format.
|
||||
*
|
||||
* @author Benjamin Renaud
|
||||
*
|
||||
|
@ -504,6 +509,78 @@ abstract class DSA extends SignatureSpi {
|
|||
return printable;
|
||||
}
|
||||
|
||||
/**
|
||||
* SHA3-224withDSA implementation.
|
||||
*/
|
||||
public static final class SHA3_224withDSA extends DSA {
|
||||
public SHA3_224withDSA() throws NoSuchAlgorithmException {
|
||||
super(MessageDigest.getInstance("SHA3-224"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* SHA3-224withDSA implementation that uses the IEEE P1363 format.
|
||||
*/
|
||||
public static final class SHA3_224withDSAinP1363Format extends DSA {
|
||||
public SHA3_224withDSAinP1363Format() throws NoSuchAlgorithmException {
|
||||
super(MessageDigest.getInstance("SHA3-224"), true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard SHA3-256withDSA implementation.
|
||||
*/
|
||||
public static final class SHA3_256withDSA extends DSA {
|
||||
public SHA3_256withDSA() throws NoSuchAlgorithmException {
|
||||
super(MessageDigest.getInstance("SHA3-256"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard SHA3-256withDSA implementation that uses the IEEE P1363 format.
|
||||
*/
|
||||
public static final class SHA3_256withDSAinP1363Format extends DSA {
|
||||
public SHA3_256withDSAinP1363Format() throws NoSuchAlgorithmException {
|
||||
super(MessageDigest.getInstance("SHA3-256"), true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard SHA3-384withDSA implementation.
|
||||
*/
|
||||
public static final class SHA3_384withDSA extends DSA {
|
||||
public SHA3_384withDSA() throws NoSuchAlgorithmException {
|
||||
super(MessageDigest.getInstance("SHA3-384"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard SHA3-384withDSA implementation that uses the IEEE P1363 format.
|
||||
*/
|
||||
public static final class SHA3_384withDSAinP1363Format extends DSA {
|
||||
public SHA3_384withDSAinP1363Format() throws NoSuchAlgorithmException {
|
||||
super(MessageDigest.getInstance("SHA3-384"), true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard SHA3-512withDSA implementation.
|
||||
*/
|
||||
public static final class SHA3_512withDSA extends DSA {
|
||||
public SHA3_512withDSA() throws NoSuchAlgorithmException {
|
||||
super(MessageDigest.getInstance("SHA3-512"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard SHA3-512withDSA implementation that uses the IEEE P1363 format.
|
||||
*/
|
||||
public static final class SHA3_512withDSAinP1363Format extends DSA {
|
||||
public SHA3_512withDSAinP1363Format() throws NoSuchAlgorithmException {
|
||||
super(MessageDigest.getInstance("SHA3-512"), true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard SHA224withDSA implementation as defined in FIPS186-3.
|
||||
*/
|
||||
|
@ -540,6 +617,42 @@ abstract class DSA extends SignatureSpi {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard SHA384withDSA implementation as defined in FIPS186-3.
|
||||
*/
|
||||
public static final class SHA384withDSA extends DSA {
|
||||
public SHA384withDSA() throws NoSuchAlgorithmException {
|
||||
super(MessageDigest.getInstance("SHA-384"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* SHA384withDSA implementation that uses the IEEE P1363 format.
|
||||
*/
|
||||
public static final class SHA384withDSAinP1363Format extends DSA {
|
||||
public SHA384withDSAinP1363Format() throws NoSuchAlgorithmException {
|
||||
super(MessageDigest.getInstance("SHA-384"), true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard SHA512withDSA implementation as defined in FIPS186-3.
|
||||
*/
|
||||
public static final class SHA512withDSA extends DSA {
|
||||
public SHA512withDSA() throws NoSuchAlgorithmException {
|
||||
super(MessageDigest.getInstance("SHA-512"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* SHA512withDSA implementation that uses the IEEE P1363 format.
|
||||
*/
|
||||
public static final class SHA512withDSAinP1363Format extends DSA {
|
||||
public SHA512withDSAinP1363Format() throws NoSuchAlgorithmException {
|
||||
super(MessageDigest.getInstance("SHA-512"), true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard SHA1withDSA implementation.
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue