From 1538c32d65152d1792e6d2404f2018c9db29ab19 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Sat, 4 Apr 2015 17:17:58 -0700 Subject: Add Ed25519 host key support --- .../com/trilead/ssh2/crypto/key/Ed25519Key.java | 45 ++++++++++++++++++++++ .../trilead/ssh2/crypto/key/Ed25519PrivateKey.java | 35 +++++++++++++++++ .../trilead/ssh2/crypto/key/Ed25519PublicKey.java | 35 +++++++++++++++++ 3 files changed, 115 insertions(+) create mode 100644 sshlib/src/main/java/com/trilead/ssh2/crypto/key/Ed25519Key.java create mode 100644 sshlib/src/main/java/com/trilead/ssh2/crypto/key/Ed25519PrivateKey.java create mode 100644 sshlib/src/main/java/com/trilead/ssh2/crypto/key/Ed25519PublicKey.java (limited to 'sshlib/src/main/java/com/trilead/ssh2/crypto') diff --git a/sshlib/src/main/java/com/trilead/ssh2/crypto/key/Ed25519Key.java b/sshlib/src/main/java/com/trilead/ssh2/crypto/key/Ed25519Key.java new file mode 100644 index 0000000..5c9e549 --- /dev/null +++ b/sshlib/src/main/java/com/trilead/ssh2/crypto/key/Ed25519Key.java @@ -0,0 +1,45 @@ +/* + * ConnectBot: simple, powerful, open-source SSH client for Android + * Copyright 2015 Kenny Root + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.trilead.ssh2.crypto.key; + +import java.security.Key; + +/** + * Java representation of a native Ed25519 key. + * + * @author Kenny Root + */ +public class Ed25519Key implements Key { + private final byte[] keyBytes; + + protected Ed25519Key(byte[] keyBytes) { + this.keyBytes = keyBytes; + } + + public String getAlgorithm() { + return "Ed25519"; + } + + public String getFormat() { + return "RAW"; + } + + public byte[] getEncoded() { + return keyBytes; + } +} diff --git a/sshlib/src/main/java/com/trilead/ssh2/crypto/key/Ed25519PrivateKey.java b/sshlib/src/main/java/com/trilead/ssh2/crypto/key/Ed25519PrivateKey.java new file mode 100644 index 0000000..05ab4ee --- /dev/null +++ b/sshlib/src/main/java/com/trilead/ssh2/crypto/key/Ed25519PrivateKey.java @@ -0,0 +1,35 @@ +/* + * ConnectBot: simple, powerful, open-source SSH client for Android + * Copyright 2015 Kenny Root + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.trilead.ssh2.crypto.key; + +import java.security.PrivateKey; + +/** + * Java representation of a native Ed25519 key. + * + * @author Kenny Root + */ +public class Ed25519PrivateKey extends Ed25519Key implements PrivateKey { + private Ed25519PrivateKey(byte[] keyBytes) { + super(keyBytes); + } + + public static Ed25519PrivateKey getInstance(byte[] keyBytes) { + return new Ed25519PrivateKey(keyBytes); + } +} diff --git a/sshlib/src/main/java/com/trilead/ssh2/crypto/key/Ed25519PublicKey.java b/sshlib/src/main/java/com/trilead/ssh2/crypto/key/Ed25519PublicKey.java new file mode 100644 index 0000000..a4e2092 --- /dev/null +++ b/sshlib/src/main/java/com/trilead/ssh2/crypto/key/Ed25519PublicKey.java @@ -0,0 +1,35 @@ +/* + * ConnectBot: simple, powerful, open-source SSH client for Android + * Copyright 2015 Kenny Root, Jeffrey Sharkey + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.trilead.ssh2.crypto.key; + +import java.security.PublicKey; + +/** + * Java representation of a native Ed25519 key. + * + * @author Kenny Root + */ +public class Ed25519PublicKey extends Ed25519Key implements PublicKey { + private Ed25519PublicKey(byte[] keyBytes) { + super(keyBytes); + } + + public static Ed25519PublicKey getInstance(byte[] keyBytes) { + return new Ed25519PublicKey(keyBytes); + } +} -- cgit v1.2.3