public final class ECCelerate extends Provider
This class represents the master class of the IAIK security package provider. It extends the java.security.Provider class for registering the IAIK ECCelerate™ provider specific security implementations within the Java security architecture. The IAIK provider supports both, algorithm implementations for JCA, and for the JCE extension.
Also note that the IAIK ECCelerate™ provider depends on the IAIK JCE provider (version 5.51 or later). Hence, the latter must also be registered.
The following table lists the names of several algorithms supported by this provider. The table is divided into two parts. The first part contains the JCA related implementations, and the second part lists the JCE algorithms. For each algorithm, the corresponding specification and all registered aliases are reported.
JCA implementations | ||
---|---|---|
Signature Algorithms Signature ecdsa = Signature.getInstance(<Standard Name> | <Alias>, ECCelerate.getInstance()); | ||
Standard Name | Specification | Aliases |
SHA3-224withECDSA |
The SHA3-224 based Elliptic Curve Digital Signature Algorithm as specified in ANSI X9.62 [1] | SHA3-224withECDSA, ecdsaWithSHA3-224, SHA3-224/ECDSA, ecdsaWithSHA3-224, SHA3-224/ECDSA, SHA-3-224/ECDSA, 2.16.840.1.101.3.4.3.7 |
SHA3-256withECDSA |
The SHA3-256 based Elliptic Curve Digital Signature Algorithm as specified in ANSI X9.62 [1] | SHA3-256withECDSA, ecdsaWithSHA3-256, SHA3-256/ECDSA, ecdsaWithSHA3-256, SHA3-256/ECDSA, SHA-3-256/ECDSA, 2.16.840.1.101.3.4.3.8 |
SHA3-384withECDSA |
The SHA3-384 based Elliptic Curve Digital Signature Algorithm as specified in ANSI X9.62 [1] | SHA3-384withECDSA, ecdsaWithSHA3-384, SHA3-384/ECDSA, ecdsaWithSHA3-384, SHA3-384/ECDSA, SHA-3-384/ECDSA, 2.16.840.1.101.3.4.3.9 |
SHA3-512withECDSA |
The SHA3-512 based Elliptic Curve Digital Signature Algorithm as specified in ANSI X9.62 [1] | SHA3-512withECDSA, ecdsaWithSHA3-512, SHA3-512/ECDSA, ecdsaWithSHA3-512, SHA3-512/ECDSA, SHA-3-512/ECDSA, 2.16.840.1.101.3.4.3.10 |
SHAwithECDSA |
The SHA-1 based Elliptic Curve Digital Signature Algorithm as specified in ANSI X9.62 [1] | ECDSA, SHA1withECDSA, SHA-1withECDSA, SHA/ECDSA, SHA1/ECDSA, SHA-1/ECDSA, ecdsaWithSHA1, ecdsa-with-SHA1, 1.2.840.10045.4.1 |
SHA224withECDSA |
The SHA-224 based Elliptic Curve Digital Signature Algorithm as specified in ANSI X9.62 [1] | SHA-224withECDSA, SHA224/ECDSA, SHA-224/ECDSA, ecdsaWithSHA224, 1.2.840.10045.4.3.1 |
SHA256withECDSA |
The SHA-256 based Elliptic Curve Digital Signature Algorithm as specified in ANSI X9.62 [1] | SHA-256withECDSA, SHA256/ECDSA, SHA-256/ECDSA, ecdsaWithSHA256, 1.2.840.10045.4.3.2 |
SHA384withECDSA |
The SHA-384 based Elliptic Curve Digital Signature Algorithm as specified in ANSI X9.62 [1] | SHA-384withECDSA, SHA384/ECDSA, SHA-384/ECDSA, ecdsaWithSHA384, 1.2.840.10045.4.3.3 |
SHA512withECDSA |
The SHA-512 based Elliptic Curve Digital Signature Algorithm as specified in ANSI X9.62 [1] | SHA-512withECDSA, SHA512/ECDSA, SHA-512/ECDSA, ecdsaWithSHA512 1.2.840.10045.4.3.4 |
RIPEMD160withECDSA |
The RipeMD160 based Elliptic Curve Digital Signature Algorithm | RIPEMD-160withECDSA, RIPEMD160/ECDSA, RIPEMD-160/ECDSA |
WHIRLPOOLwithECDSA |
The Whirlpool based Elliptic Curve Digital Signature Algorithm | WHIRLPOOL/ECDSA |
NONEwithECDSA |
The raw Elliptic Curve Digital Signature Algorithm | RawECDSA |
SHAwithECDSAPlain |
The SHA-1 based Elliptic Curve Digital Signature Algorithm as specified in BSI TR-03111 [2] | ecdsaPlainWithSHA1, 0.4.0.127.0.7.1.1.4.1.1 |
SHA224withECDSAPlain |
The SHA-224 based Elliptic Curve Digital Signature Algorithm as specified in BSI TR-03111 [2] | ecdsaPlainWithSHA224, 0.4.0.127.0.7.1.1.4.1.2 |
SHA256withECDSAPlain |
The SHA-256 based Elliptic Curve Digital Signature Algorithm as specified in BSI TR-03111 [2] | ecdsaPlainWithSHA256, 0.4.0.127.0.7.1.1.4.1.3 |
SHA384withECDSAPlain |
The SHA-384 based Elliptic Curve Digital Signature Algorithm as specified in BSI TR-03111 [2] | ecdsaPlainWithSHA384, 0.4.0.127.0.7.1.1.4.1.4 |
SHA512withECDSAPlain |
The SHA-512 based Elliptic Curve Digital Signature Algorithm as specified in BSI TR-03111 [2] | ecdsaPlainWithSHA512, 0.4.0.127.0.7.1.1.4.1.5 |
RIPEMD160withECDSAPlain |
The RipeMD160 based Elliptic Curve Digital Signature Algorithm as specified in BSI TR-03111 [2] | ecdsaPlainWithRIPEMD160, 0.4.0.127.0.7.1.1.4.1.6 |
WHIRLPOOLwithECDSAPlain |
The Whirlpool based Elliptic Curve Digital Signature Algorithm as specified in BSI TR-03111 [2] | |
NONEwithECDSAPlain |
The raw Elliptic Curve Digital Signature Algorithm | RawECDSAPlain |
EdDSA25519 |
The Curve25519-based Edwards Curve Digital Signature Algorithm as specified in RFC 8032 [8]. | PureEdDSA, Ed25519, 1.3.101.112 |
EdDSA25519ph |
The Curve25519-based pre-hash Edwards Curve Digital Signature Algorithm as specified in RFC 8032 [8]. | EdDSA25519ph, HashEdDSA, SHA512withEdDSA, SHA-512withEdDSA, SHA512/EdDSA, SHA-512/EdDSA, SHA-512withHashEdDSA, SHA512/HashEdDSA, SHA-512/HashEdDSA |
EdDSA25519ctx |
The Curve25519-based Edwards Curve Digital Signature Algorithm with context as specified in RFC 8032 [8]. | Ed25519ctx |
EdDSA448 |
The Curve448-based Edwards Curve Digital Signature Algorithm as specified in RFC 8032 [8]. | Ed448, 1.3.101.113 |
EdDSA448ph |
The Curve448-based pre-hash Edwards Curve Digital Signature Algorithm as specified in RFC 8032 [8]. | Ed448ph, SHAKE256withEdDSA, SHAKE-256withEdDSA, eddsaWithSHAKE256, SHAKE256/EdDSA, SHAKE-256/EdDSA, SHAKE-256withHashEdDSA, SHAKE256/HashEdDSA, SHAKE-256/HashEdDSA |
Key Pair Generators
KeyPairGenerator generator = KeyPairGenerator.getInstance(<Standard Name> | <Alias>, ECCelerate.getInstance()); | ||
Standard Name | Specification | Aliases |
EC |
EC Key pair generator as specified in FIPS 186-4 [5] | ECDSA, ECDH |
Key Factories
KeyFactory generator = KeyFactory.getInstance(<Standard Name> | <Alias>, ECCelerate.getInstance()); | ||
Standard Name | Specification | Aliases |
EC |
Key factory for converting keys into key specifications (and vice versa) | ECDSA, ECDH, 1.2.840.10045.2.1 |
Algorithm Parameters
AlgorithmParameters generator = AlgorithmParameters.getInstance(<Standard Name> | <Alias>, ECCelerate.getInstance()); | ||
Standard Name | Specification | Aliases |
EC |
Algorithm parameters representation for the supported EC protocols | ECDSA, ECDH, 1.2.840.10045.2.1 |
JCE implementations | ||
---|---|---|
Key Agreement Algorithms
KeyAgreement keyAgrement = KeyAgreement.getInstance(<Standard Name> | <Alias>, ECCelerate.getInstance()); | ||
Standard Name | Specification | Aliases |
ECDH |
The Elliptic Curve Diffie Hellman key agreement protocol as specified in IEEE 1363a [3, 4] | |
ECDHwithCofactor |
The Elliptic Curve Diffie Hellman (with cofactor) key agreement protocol as specified in IEEE 1363a [3, 4] | |
X25519 |
The X25519 key agreement protocol as specified in RFC 7748. | |
X448 |
The X448 key agreement protocol as specified in RFC 7748. | |
ECMQVKeyAgreement - see Addon Docu | The Elliptic Curve Menezes Qu Vanstone key agreement protocol as specified in SEC1 v2.0 [7] (only if the addon is available) | |
Cipher Algorithms
Cipher cipher = Cipher.getInstance(<Standard Name> | <Alias>, ECCelerate.getInstance()); | ||
Standard Name | Specification | Aliases |
ECIES |
The Elliptic Curve Integrated Encryption Scheme as specified in SEC1 v2.0 [7] |
References:
[1] ANSI X9.62-2005, "American National Standard for Financial Services - The Elliptic Curve Digital Signature Algorithm (ECDSA)" , ASC X9, November 2005.
[2] Bundesamt fuer Sicherheit in der Informationstechnik (BSI), "Technical Guideline TR-03111 - Elliptic Curve Cryptography" , Version 1.11, April 2009.
[3] Institute of Electrical and Electronics Engineers (IEEE), Specifications for Public-Key Cryptography, IEEE Standard 1363-2000, August 2000
[4] Institute of Electrical and Electronics Engineers (IEEE), Specifications for Public-Key Cryptography - Amendment 1: Additional Techniques, IEEE Standard 1363a-2004, October 2004
[5] FIPS PUB 186-4 FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION Digital Signature Standard (DSS), Patrick Gallagher and Deputy Director Foreword and Cita Furlani Director, 2013
[6] NIST SP800-57 - Part 1, "Recommendation for Key Management", March 2007
[7] Certicom Research. 2009. Standards for Efficient Cryptography - SEC 1: Elliptic Curve Cryptography v2.0
[8] S. Josefsson, I. Liusvaara, "Edwards-curve Digital Signature Algorithm (EdDSA)", https://tools.ietf.org/html/rfc8032
[9] S. Turner, D. Brown, K. Yiu, R. Housley, T. Polk, "Elliptic Curve Cryptography Subject Public Key Information", https://tools.ietf.org/html/rfc5480
Provider.Service
defaults
Constructor and Description |
---|
ECCelerate()
Deprecated.
Use
getInstance() instead. |
ECCelerate(boolean enableAddon)
Deprecated.
Use
setAddonEnabled(boolean) and getInstance() instead. |
Modifier and Type | Method and Description |
---|---|
static void |
addAsProvider()
You can use this static method to register this provider with the default
settings (a
ClassLoader will be used search for the addon). |
static void |
addAsProvider(boolean enableAddon)
You can use this static method to register this provider.
|
static boolean |
areSP80057RecommendationsEnforced()
Indicates whether the security strength recommendations of [6] for ECDSA
are being enforced.
|
static void |
enablePointCompression(boolean enable)
Enables/disables point compression.
|
static void |
enableSideChannelProtection(boolean enable)
Enables/disables basic protection against side channel (timing attacks).
|
static void |
enforceSP80057Recommendations(boolean enable)
Lets the user enable or disable the enforcement of the security strength
recommendations listed in [6] for ECDSA.
|
static ECCelerate |
getInstance()
Returns a singleton of this provider.
|
static OptimizationLevel |
getOptimizationLevel()
Returns the currently used optimization level.
|
static boolean |
hasJCEWithSHA3()
Deprecated.
As of version 5.0, ECCelerate always requires an JCE version
that supports SHA-3.
|
static void |
insertProviderAt(int position)
You can use this static method to register this provider with the default
settings (a
ClassLoader will be used search for the addon). |
static void |
insertProviderAt(int position,
boolean enableAddon)
You can use this static method to register this provider.
|
static boolean |
isAddonAvailable()
Method to check if the ECCelerate Addon is in the classpath.
|
static boolean |
isNISTSP56AFullCheckEnabled()
Returns
true , if the full key check is enabled. |
static boolean |
isPointCompressionEnabled()
Indicates whether point compression is enabled.
|
static boolean |
isSideChannelProtectionEnabled()
Indicates whether the basic protection against side channels (timing
attacks) is enabled or not.
|
static void |
setAddonEnabled(boolean enable)
This method can manually set whether or not the iaik_eccelerate_addon.jar
should be used.
|
static void |
setNISTSP56AFullCheckEnabled(boolean enable)
Allows the user decide, whether an EC public key should be fully verified
or not.
|
static void |
setOptimizationLevel(OptimizationLevel level)
Allows the user to set the optimization level.
|
clear, compute, computeIfAbsent, computeIfPresent, elements, entrySet, forEach, get, getInfo, getName, getOrDefault, getProperty, getService, getServices, getVersion, keys, keySet, load, merge, put, putAll, putIfAbsent, putService, remove, remove, removeService, replace, replace, replaceAll, toString, values
getProperty, list, list, load, loadFromXML, propertyNames, save, setProperty, store, store, storeToXML, storeToXML, stringPropertyNames
clone, contains, containsKey, containsValue, equals, hashCode, isEmpty, rehash, size
@Deprecated public ECCelerate()
getInstance()
instead.@Deprecated public ECCelerate(boolean enableAddon)
setAddonEnabled(boolean)
and getInstance()
instead.enableAddon
- allows the user to enable the addon. Note:
iaik_eccelerate_addon.jar must be part of the classpath for this
to workpublic static ECCelerate getInstance()
public static void setOptimizationLevel(OptimizationLevel level)
level
- the optimization level to setpublic static OptimizationLevel getOptimizationLevel()
public static boolean isAddonAvailable()
true
, if iaik_eccelerate_addon.jar
is
included in the classpath, and false
otherwise.public static void setAddonEnabled(boolean enable)
enable
is set to true
. No classloader will be
used to look for the respective implementations.enable
- boolean
to set manually, if the jar file containing
the speed-ups is present. Disables the classloader.public static void addAsProvider()
ClassLoader
will be used search for the addon).public static void addAsProvider(boolean enableAddon)
enableAddon
- if false
a ClassLoader
will be used to look
for the addon; if true
it is assumed that the addon
is presentpublic static void insertProviderAt(int position, boolean enableAddon)
position
- the position for this providerenableAddon
- if false
a ClassLoader
will be used to look
for the addon; if true
it is assumed that the addon
is presentpublic static void insertProviderAt(int position)
ClassLoader
will be used search for the addon).position
- the position for this providerpublic static boolean areSP80057RecommendationsEnforced()
public static void enforceSP80057Recommendations(boolean enable)
enable
- flag to indicate if security strength recommendations should be
enabledpublic static boolean isSideChannelProtectionEnabled()
public static void enableSideChannelProtection(boolean enable)
enable
- flag to indicate if side channel protection should be enabledpublic static void enablePointCompression(boolean enable)
enable
- flag to indicate if point compression should be enabledpublic static boolean isPointCompressionEnabled()
@Deprecated public static boolean hasJCEWithSHA3()
public static void setNISTSP56AFullCheckEnabled(boolean enable)
enable
- if true
full key checks will be performedpublic static boolean isNISTSP56AFullCheckEnabled()
true
, if the full key check is enabled.true
, if the full key check is enabledCopyright © 2011–2022 Stiftung SIC. All rights reserved.