Class EdDSAUtils
- java.lang.Object
-
- org.apache.sshd.common.util.security.eddsa.generic.EdDSAUtils
-
public final class EdDSAUtils extends java.lang.ObjectUtilities to extract the raw key bytes from ed25519 or ed448 public keys, in a manner that is independent of the actual concrete key implementation classes.
-
-
Field Summary
Fields Modifier and Type Field Description private static intED25519_LENGTHprivate static byte[]ED25519_OIDprivate static byte[]ED25519_PKCS8_PREFIXprivate static byte[]ED25519_X509_PREFIXprivate static intED448_LENGTHprivate static byte[]ED448_OIDprivate static byte[]ED448_PKCS8_PREFIXprivate static byte[]ED448_X509_PREFIX
-
Constructor Summary
Constructors Modifier Constructor Description privateEdDSAUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static booleanarrayEq(byte[] a, byte[] b)private static byte[]asn1Parse(byte[] encoded)Extracts the private key bytes from an encoded EdDSA private key by parsing the bytes as ASN.1 according to RFC 5958 (PKCS #8 encoding):static java.security.spec.KeySpeccreatePrivateKeySpec(byte[] keyData)Creates aKeySpecfor re-creating an ed25519 or ed448 public key from the raw key bytes.static java.security.spec.KeySpeccreatePublicKeySpec(byte[] keyData)Creates aKeySpecfor re-creating an ed25519 or ed448 public key from the raw key bytes.static byte[]getBytes(java.security.PrivateKey key)Retrieves the raw key bytes from an ed25519 or ed448PrivateKey.static byte[]getBytes(java.security.PublicKey key)Retrieves the raw key bytes from an ed25519 or ed448PublicKey.private static booleanstartsWith(byte[] data, byte[] prefix)
-
-
-
Field Detail
-
ED25519_LENGTH
private static final int ED25519_LENGTH
- See Also:
- Constant Field Values
-
ED448_LENGTH
private static final int ED448_LENGTH
- See Also:
- Constant Field Values
-
ED25519_X509_PREFIX
private static final byte[] ED25519_X509_PREFIX
-
ED448_X509_PREFIX
private static final byte[] ED448_X509_PREFIX
-
ED25519_PKCS8_PREFIX
private static final byte[] ED25519_PKCS8_PREFIX
-
ED448_PKCS8_PREFIX
private static final byte[] ED448_PKCS8_PREFIX
-
ED25519_OID
private static final byte[] ED25519_OID
-
ED448_OID
private static final byte[] ED448_OID
-
-
Method Detail
-
arrayEq
private static boolean arrayEq(byte[] a, byte[] b)
-
startsWith
private static boolean startsWith(byte[] data, byte[] prefix)
-
getBytes
public static byte[] getBytes(java.security.PublicKey key) throws java.security.InvalidKeyExceptionRetrieves the raw key bytes from an ed25519 or ed448PublicKey.- Parameters:
key-PublicKeyto get the bytes of- Returns:
- the raw key bytes
- Throws:
java.security.InvalidKeyException- if the key is not an ed25519 or ed448 key, or if it doesn't use X.509 encoding
-
getBytes
public static byte[] getBytes(java.security.PrivateKey key) throws java.security.InvalidKeyExceptionRetrieves the raw key bytes from an ed25519 or ed448PrivateKey.- Parameters:
key-PrivateKeyto get the bytes of- Returns:
- the raw key bytes
- Throws:
java.security.InvalidKeyException- if the key is not an ed25519 or ed448 key, or if it doesn't use PKCS#8 encoding
-
asn1Parse
private static byte[] asn1Parse(byte[] encoded) throws java.security.InvalidKeyExceptionExtracts the private key bytes from an encoded EdDSA private key by parsing the bytes as ASN.1 according to RFC 5958 (PKCS #8 encoding):OneAsymmetricKey ::= SEQUENCE { version Version, privateKeyAlgorithm PrivateKeyAlgorithmIdentifier, privateKey PrivateKey, ... } Version ::= INTEGER PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier PrivateKey ::= OCTET STRING AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL }and RFC 8410: "... when encoding a OneAsymmetricKey object, the private key is wrapped in a CurvePrivateKey object and wrapped by the OCTET STRING of the 'privateKey' field."
CurvePrivateKey ::= OCTET STRING
-
createPublicKeySpec
public static java.security.spec.KeySpec createPublicKeySpec(byte[] keyData) throws java.security.InvalidKeyExceptionCreates aKeySpecfor re-creating an ed25519 or ed448 public key from the raw key bytes.- Parameters:
keyData- the raw key bytes- Returns:
- the
KeySpec - Throws:
java.security.InvalidKeyException- if the key bytes do not have the appropriate length for an ed25519 or ed448 key
-
createPrivateKeySpec
public static java.security.spec.KeySpec createPrivateKeySpec(byte[] keyData) throws java.security.InvalidKeyExceptionCreates aKeySpecfor re-creating an ed25519 or ed448 public key from the raw key bytes.- Parameters:
keyData- the raw key bytes- Returns:
- the
KeySpec - Throws:
java.security.InvalidKeyException- if the key bytes do not have the appropriate length for an ed25519 or ed448 key
-
-