pax_global_header00006660000000000000000000000064117612271230014514gustar00rootroot0000000000000052 comment=f45275278d32e65842b4604b4ad4d9b35c9b5cda trilead-putty-extension-trilead-putty-extension-1.2/000077500000000000000000000000001176122712300230165ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/.gitignore000066400000000000000000000000311176122712300250000ustar00rootroot00000000000000*.iml *.ipr *.iws target trilead-putty-extension-trilead-putty-extension-1.2/pom.xml000066400000000000000000000030721176122712300243350ustar00rootroot00000000000000 4.0.0 org.kohsuke pom 3 trilead-putty-extension 1.2 PuTTY support for Trilead SSH2 library Loads SSH key in the PuTTY format http://${project.artifactId}.kohsuke.org/ commons-io commons-io 1.3 test org.jenkins-ci trilead-ssh2 build214-jenkins-1 junit junit 3.8.1 test scm:git:git@github.com/kohsuke/${project.artifactId}.git scm:git:ssh://git@github.com/kohsuke/${project.artifactId}.git http://${project.artifactId}.kohsuke.org/ github-pages gitsite:git@github.com/kohsuke/${project.artifactId}.git trilead-putty-extension-trilead-putty-extension-1.2/src/000077500000000000000000000000001176122712300236055ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/main/000077500000000000000000000000001176122712300245315ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/main/java/000077500000000000000000000000001176122712300254525ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/main/java/org/000077500000000000000000000000001176122712300262415ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/main/java/org/kohsuke/000077500000000000000000000000001176122712300277125ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/main/java/org/kohsuke/putty/000077500000000000000000000000001176122712300310775ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/main/java/org/kohsuke/putty/DEREncoder.java000066400000000000000000000067471176122712300336720ustar00rootroot00000000000000/* * The MIT License * * Copyright (c) 2009-, Kohsuke Kawaguchi * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package org.kohsuke.putty; import com.trilead.ssh2.crypto.Base64; import java.io.DataOutputStream; import java.io.IOException; import java.io.ByteArrayOutputStream; import java.math.BigInteger; /** * ASN.1 DER encoder. * * This is the binary packaging format used by OpenSSH key. * * @author Kohsuke Kawaguchi */ final class DEREncoder { private final DataOutputStream out; private final ByteArrayOutputStream baos = new ByteArrayOutputStream(); public DEREncoder() { this.out = new DataOutputStream(baos); } public void reset() { baos.reset(); } public byte[] toByteArray() { return baos.toByteArray(); } /** * Converts that to base64 with new lines to make it 64-chars per line. */ public String toBase64() { char[] r = Base64.encode(toByteArray()); StringBuilder buf = new StringBuilder(); for (int i=0; i=0; i--) out.write((len>>(8*i))&0xFF); } private int countByteLen(int len) { int bytes=0; while(len>0) { bytes++; len>>=8; } return bytes; } public DEREncoder write(BigInteger i) throws IOException { out.write(0x02); byte[] bytes = i.toByteArray(); writeLength(bytes.length); out.write(bytes); return this; } public DEREncoder write(BigInteger... ints) throws IOException { for (BigInteger i : ints) { write(i); } return this; } } trilead-putty-extension-trilead-putty-extension-1.2/src/main/java/org/kohsuke/putty/KeyReader.java000066400000000000000000000042711176122712300336210ustar00rootroot00000000000000/* * The MIT License * * Copyright (c) 2009-, Kohsuke Kawaguchi * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package org.kohsuke.putty; import java.io.DataInput; import java.io.DataInputStream; import java.io.ByteArrayInputStream; import java.io.IOException; import java.math.BigInteger; /** * Parses the putty key bit vector, which is an encoded sequence * of {@link BigInteger}s. * * @author Kohsuke Kawaguchi */ class KeyReader { private final DataInput di; KeyReader(byte[] key) { this.di = new DataInputStream(new ByteArrayInputStream(key)); } /** * Skips an integer without reading it. */ public void skip() { try { di.skipBytes(di.readInt()); } catch (IOException e) { throw new AssertionError(e); } } private byte[] read() { try { int len = di.readInt(); byte[] r = new byte[len]; di.readFully(r); return r; } catch (IOException e) { throw new AssertionError(e); } } /** * Reads the next integer. */ public BigInteger readInt() { return new BigInteger(read()); } } trilead-putty-extension-trilead-putty-extension-1.2/src/main/java/org/kohsuke/putty/PuTTYKey.java000066400000000000000000000231221176122712300334000ustar00rootroot00000000000000/* * The MIT License * * Copyright (c) 2009-, Kohsuke Kawaguchi * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package org.kohsuke.putty; import com.trilead.ssh2.crypto.cipher.AES; import com.trilead.ssh2.crypto.cipher.CBCMode; import com.trilead.ssh2.crypto.Base64; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.io.FileWriter; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.HashMap; import java.util.Map; /** * Interprets PuTTY's ".ppk" file. * *

Notes

*
    *
  1. * The file appears to be a text file but it doesn't have the fixed encoding. * So we just use the platform default encoding, which is what PuTTY seems to use. * Fortunately, the important part is all ASCII, so this shouldn't really hurt * the interpretation of the key. *
* *

Sample PuTTY file format

*
PuTTY-User-Key-File-2: ssh-rsa
Encryption: none
Comment: rsa-key-20080514
Public-Lines: 4
AAAAB3NzaC1yc2EAAAABJQAAAIEAiPVUpONjGeVrwgRPOqy3Ym6kF/f8bltnmjA2
BMdAtaOpiD8A2ooqtLS5zWYuc0xkW0ogoKvORN+RF4JI+uNUlkxWxnzJM9JLpnvA
HrMoVFaQ0cgDMIHtE1Ob1cGAhlNInPCRnGNJpBNcJ/OJye3yt7WqHP4SPCCLb6nL
nmBUrLM=
Private-Lines: 8
AAAAgGtYgJzpktzyFjBIkSAmgeVdozVhgKmF6WsDMUID9HKwtU8cn83h6h7ug8qA
hUWcvVxO201/vViTjWVz9ALph3uMnpJiuQaaNYIGztGJBRsBwmQW9738pUXcsUXZ
79KJP01oHn6Wkrgk26DIOsz04QOBI6C8RumBO4+F1WdfueM9AAAAQQDmA4hcK8Bx
nVtEpcF310mKD3nsbJqARdw5NV9kCxPnEsmy7Sy1L4Ob/nTIrynbc3MA9HQVJkUz
7V0va5Pjm/T7AAAAQQCYbnG0UEekwk0LG1Hkxh1OrKMxCw2KWMN8ac3L0LVBg/Tk
8EnB2oT45GGeJaw7KzdoOMFZz0iXLsVLNUjNn2mpAAAAQQCN6SEfWqiNzyc/w5n/
lFVDHExfVUJp0wXv+kzZzylnw4fs00lC3k4PZDSsb+jYCMesnfJjhDgkUA0XPyo8
Emdk
Private-MAC: 50c45751d18d74c00fca395deb7b7695e3ed6f77
 * 
* * @author Kohsuke Kawaguchi */ public class PuTTYKey { private static final String PUTTY_SIGNATURE = "PuTTY-User-Key-File-"; private final byte[] privateKey; private final byte[] publicKey; /** * For each line that looks like "Xyz: vvv", it will be stored in this map. */ private final Map headers = new HashMap(); public PuTTYKey(File ppkFile, String passphrase) throws IOException { this(new FileReader(ppkFile),passphrase); } public PuTTYKey(InputStream in, String passphrase) throws IOException { this(new InputStreamReader(in),passphrase); } public PuTTYKey(Reader in, String passphrase) throws IOException { BufferedReader r = new BufferedReader(in); Map payload = new HashMap(); // parse the text into headers and payloads try { String headerName = null; String line; while((line=r.readLine())!=null) { int idx = line.indexOf(": "); if(idx>0) { headerName =line.substring(0,idx); headers.put(headerName,line.substring(idx+2)); } else { String s = payload.get(headerName); if(s==null) s=line; else s+=line; payload.put(headerName,s); } } } finally { r.close(); } boolean encrypted = "aes256-cbc".equals(headers.get("Encryption")); publicKey = decodeBase64(payload.get("Public-Lines")); byte[] privateLines = decodeBase64(payload.get("Private-Lines")); if(encrypted) { AES aes = new AES(); byte[] key = toKey(passphrase); aes.init(false,key); CBCMode cbc = new CBCMode(aes, new byte[16], false); // initial vector=0 byte[] out = new byte[privateLines.length]; for( int i=0; i * This is used to decrypt the private key when it's encrypted. */ private byte[] toKey(String passphrase) { try { MessageDigest digest = MessageDigest.getInstance("SHA-1"); digest.update(new byte[]{0,0,0,0}); digest.update(passphrase.getBytes()); byte[] key1 = digest.digest(); digest.update(new byte[]{0,0,0,1}); digest.update(passphrase.getBytes()); byte[] key2 = digest.digest(); byte[] r = new byte[32]; System.arraycopy(key1,0,r, 0,20); System.arraycopy(key2,0,r,20,12); return r; } catch (NoSuchAlgorithmException e) { throw new AssertionError(e); // impossible } } private static byte[] decodeBase64(String s) throws IOException { return Base64.decode(s.toCharArray()); } /** * Converts this key into OpenSSH format. * * @return * A multi-line string that can be written back to a file. */ public String toOpenSSH() throws IOException { if(getAlgorithm().equals("ssh-rsa")) { KeyReader r = new KeyReader(publicKey); r.skip(); // skip this BigInteger e = r.readInt(); BigInteger n = r.readInt(); r = new KeyReader(privateKey); BigInteger d = r.readInt(); BigInteger p = r.readInt(); BigInteger q = r.readInt(); BigInteger iqmp = r.readInt(); BigInteger dmp1 = d.mod(p.subtract(BigInteger.ONE)); BigInteger dmq1 = d.mod(q.subtract(BigInteger.ONE)); DEREncoder payload = new DEREncoder().writeSequence( new DEREncoder().write(BigInteger.ZERO, n, e, d, p, q, dmp1, dmq1, iqmp).toByteArray() ); StringBuilder buf = new StringBuilder(); buf.append("-----BEGIN RSA PRIVATE KEY-----\n"); buf.append(payload.toBase64()); buf.append("-----END RSA PRIVATE KEY-----\n"); // debug assist // Object o = PEMDecoder.decode(buf.toString().toCharArray(), null); return buf.toString(); } if(getAlgorithm().equals("ssh-dss")) { KeyReader r = new KeyReader(publicKey); r.skip(); // skip this BigInteger p = r.readInt(); BigInteger q = r.readInt(); BigInteger g = r.readInt(); BigInteger y = r.readInt(); r = new KeyReader(privateKey); BigInteger x = r.readInt(); DEREncoder payload = new DEREncoder().writeSequence( new DEREncoder().write(BigInteger.ZERO, p, q, g, y, x).toByteArray() ); StringBuilder buf = new StringBuilder(); buf.append("-----BEGIN DSA PRIVATE KEY-----\n"); buf.append(payload.toBase64()); buf.append("-----END DSA PRIVATE KEY-----\n"); // debug assist // Object o = PEMDecoder.decode(buf.toString().toCharArray(), null); return buf.toString(); } throw new IllegalArgumentException("Unrecognized key type: "+getAlgorithm()); } /** * Converts the key to OpenSSH format, then write it to a file. */ public void toOpenSSH(File f) throws IOException { FileWriter w = new FileWriter(f); try { w.write(toOpenSSH()); } finally { w.close(); } } /** * Checks if the given file is a PuTTY's ".ppk" file, by looking at the file contents. */ public static boolean isPuTTYKeyFile(File ppkFile) throws IOException { return isPuTTYKeyFile(new FileReader(ppkFile)); } public static boolean isPuTTYKeyFile(InputStream in) throws IOException { return isPuTTYKeyFile(new InputStreamReader(in)); } public static boolean isPuTTYKeyFile(Reader _reader) throws IOException { BufferedReader r = new BufferedReader(_reader); try { String line; while((line=r.readLine())!=null) { if(line.startsWith(PUTTY_SIGNATURE)) return true; } return false; } finally { r.close(); } } } trilead-putty-extension-trilead-putty-extension-1.2/src/site/000077500000000000000000000000001176122712300245515ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/site/apt/000077500000000000000000000000001176122712300253355ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/site/apt/index.apt000066400000000000000000000010601176122712300271470ustar00rootroot00000000000000What is this? This is a small library that allows you to programatically convert the PuTTY key file (.ppk) to the OpenSSH format. Such a conversion relies on a few cryptographic operations that are not available out of the box from JDK, so this library depends on {{{http://www.trilead.com/Products/Trilead-SSH-2-Java/}the trilead Java SSH2 library}} for those algorithms (but if you prefer to use this with other toolkits, you should be able to easily port this library.) See {{{/nonav/apidocs/}javadoc}} for more details. trilead-putty-extension-trilead-putty-extension-1.2/src/site/site.xml000066400000000000000000000012111176122712300262320ustar00rootroot00000000000000 org.kohsuke maven-skin 1.2 ${reports} trilead-putty-extension-trilead-putty-extension-1.2/src/test/000077500000000000000000000000001176122712300245645ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/test/java/000077500000000000000000000000001176122712300255055ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/test/java/org/000077500000000000000000000000001176122712300262745ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/test/java/org/kohsuke/000077500000000000000000000000001176122712300277455ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/test/java/org/kohsuke/putty/000077500000000000000000000000001176122712300311325ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/test/java/org/kohsuke/putty/PuTTYTest.java000066400000000000000000000024661176122712300336320ustar00rootroot00000000000000package org.kohsuke.putty; import junit.framework.TestCase; import org.apache.commons.io.IOUtils; import org.kohsuke.putty.PuTTYKey; import java.io.IOException; import java.io.StringReader; import java.util.List; /** * @author Kohsuke Kawaguchi */ public class PuTTYTest extends TestCase { public void test1enc() throws IOException { PuTTYKey key = new PuTTYKey(getClass().getResourceAsStream("test1-encrypted.ppk"), "test"); verifyWith(key,"test1-openssh.txt"); } public void test1() throws IOException { PuTTYKey key = new PuTTYKey(getClass().getResourceAsStream("test1.ppk"),null); verifyWith(key,"test1-openssh.txt"); } public void test2enc() throws IOException { PuTTYKey key = new PuTTYKey(getClass().getResourceAsStream("test2-encrypted.ppk"), "test"); verifyWith(key,"test2-openssh.txt"); } public void test2() throws IOException { PuTTYKey key = new PuTTYKey(getClass().getResourceAsStream("test2.ppk"),null); verifyWith(key,"test2-openssh.txt"); } private void verifyWith(PuTTYKey key, String res) throws IOException { List answer = IOUtils.readLines(getClass().getResourceAsStream(res)); List test = IOUtils.readLines(new StringReader(key.toOpenSSH())); assertEquals(answer,test); } } trilead-putty-extension-trilead-putty-extension-1.2/src/test/resources/000077500000000000000000000000001176122712300265765ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/test/resources/org/000077500000000000000000000000001176122712300273655ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/test/resources/org/kohsuke/000077500000000000000000000000001176122712300310365ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/test/resources/org/kohsuke/putty/000077500000000000000000000000001176122712300322235ustar00rootroot00000000000000test1-encrypted.ppk000066400000000000000000000015231176122712300357140ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/test/resources/org/kohsuke/puttyPuTTY-User-Key-File-2: ssh-rsa Encryption: aes256-cbc Comment: rsa-key-20080514 Public-Lines: 4 AAAAB3NzaC1yc2EAAAABJQAAAIEAiPVUpONjGeVrwgRPOqy3Ym6kF/f8bltnmjA2 BMdAtaOpiD8A2ooqtLS5zWYuc0xkW0ogoKvORN+RF4JI+uNUlkxWxnzJM9JLpnvA HrMoVFaQ0cgDMIHtE1Ob1cGAhlNInPCRnGNJpBNcJ/OJye3yt7WqHP4SPCCLb6nL nmBUrLM= Private-Lines: 8 tkv5O5P7vkoSVZB9LX5qvAO1kt/hPhGf27UM93Ti3UDay1KU3pVG0yJt7I3J6wD1 GHq0CGzl1jbAAD+dm4lTmIYTmNE46QgWG6G5IWAbtTsixh+qRIW+z6GmYvgbDl7s ijqPOcB5AW5+4vTowi4hh49u23/CHKl0Jx5jL3o6j16ytXqJlHoCjR5HoIe720m0 BzF9XdJxXsXw0lTZ7qe9w/Nhofue1YBEMK49HQkoCmFPqpMvsB86I/G9VbrjAYMS rFLnF482a/+drJtZ3BUborv7iisFL+ZTtr/8IuZtPOi4IqzHr62l+CrIZMMfu9Bv KsRKx1Wqbb61v8sfbkDGQeb0tVo7PqatEfdz2Dp2X/ScWakUm5M9Zlwcai2TZ3eV 9VPfQDfVdK+sgBs85Qm3OQ5RgoTQFnyO1HH9Gi7sIhCMfVqeCfLC2sPzpAET6qE0 qyEUeF4MFjxsfABY0eZQZw== Private-MAC: f1c3796f2906e45280f6e0a4e6e68248e0278c0f test1-openssh.txt000066400000000000000000000015631176122712300354270ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/test/resources/org/kohsuke/putty-----BEGIN RSA PRIVATE KEY----- MIICWgIBAAKBgQCI9VSk42MZ5WvCBE86rLdibqQX9/xuW2eaMDYEx0C1o6mIPwDa iiq0tLnNZi5zTGRbSiCgq85E35EXgkj641SWTFbGfMkz0kume8AesyhUVpDRyAMw ge0TU5vVwYCGU0ic8JGcY0mkE1wn84nJ7fK3taoc/hI8IItvqcueYFSsswIBJQKB gGtYgJzpktzyFjBIkSAmgeVdozVhgKmF6WsDMUID9HKwtU8cn83h6h7ug8qAhUWc vVxO201/vViTjWVz9ALph3uMnpJiuQaaNYIGztGJBRsBwmQW9738pUXcsUXZ79KJ P01oHn6Wkrgk26DIOsz04QOBI6C8RumBO4+F1WdfueM9AkEA5gOIXCvAcZ1bRKXB d9dJig957GyagEXcOTVfZAsT5xLJsu0stS+Dm/50yK8p23NzAPR0FSZFM+1dL2uT 45v0+wJBAJhucbRQR6TCTQsbUeTGHU6sozELDYpYw3xpzcvQtUGD9OTwScHahPjk YZ4lrDsrN2g4wVnPSJcuxUs1SM2faakCQB8VO/DHpGJhX1xNwDLKENtOMxIcg5TL K5kHNmd3Hl1/FFZzE+EiGLQ3JInSe0crRuR0D6/UvT5eWLNhkIaKsmcCQCUT8iTw 7tUMqvTdIcIGrS7QDAUCsEQ/Gss8VKcyxE402rQ6cs5J6P5FY9pcMNAfRNQpeyOu 9ftCul5m6DIELnUCQQCN6SEfWqiNzyc/w5n/lFVDHExfVUJp0wXv+kzZzylnw4fs 00lC3k4PZDSsb+jYCMesnfJjhDgkUA0XPyo8Emdk -----END RSA PRIVATE KEY----- trilead-putty-extension-trilead-putty-extension-1.2/src/test/resources/org/kohsuke/putty/test1.ppk000066400000000000000000000014711176122712300340020ustar00rootroot00000000000000PuTTY-User-Key-File-2: ssh-rsa Encryption: none Comment: rsa-key-20080514 Public-Lines: 4 AAAAB3NzaC1yc2EAAAABJQAAAIEAiPVUpONjGeVrwgRPOqy3Ym6kF/f8bltnmjA2 BMdAtaOpiD8A2ooqtLS5zWYuc0xkW0ogoKvORN+RF4JI+uNUlkxWxnzJM9JLpnvA HrMoVFaQ0cgDMIHtE1Ob1cGAhlNInPCRnGNJpBNcJ/OJye3yt7WqHP4SPCCLb6nL nmBUrLM= Private-Lines: 8 AAAAgGtYgJzpktzyFjBIkSAmgeVdozVhgKmF6WsDMUID9HKwtU8cn83h6h7ug8qA hUWcvVxO201/vViTjWVz9ALph3uMnpJiuQaaNYIGztGJBRsBwmQW9738pUXcsUXZ 79KJP01oHn6Wkrgk26DIOsz04QOBI6C8RumBO4+F1WdfueM9AAAAQQDmA4hcK8Bx nVtEpcF310mKD3nsbJqARdw5NV9kCxPnEsmy7Sy1L4Ob/nTIrynbc3MA9HQVJkUz 7V0va5Pjm/T7AAAAQQCYbnG0UEekwk0LG1Hkxh1OrKMxCw2KWMN8ac3L0LVBg/Tk 8EnB2oT45GGeJaw7KzdoOMFZz0iXLsVLNUjNn2mpAAAAQQCN6SEfWqiNzyc/w5n/ lFVDHExfVUJp0wXv+kzZzylnw4fs00lC3k4PZDSsb+jYCMesnfJjhDgkUA0XPyo8 Emdk Private-MAC: 50c45751d18d74c00fca395deb7b7695e3ed6f77 test2-encrypted.ppk000066400000000000000000000014431176122712300357160ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/test/resources/org/kohsuke/puttyPuTTY-User-Key-File-2: ssh-dss Encryption: aes256-cbc Comment: dsa-key-20080514 Public-Lines: 10 AAAAB3NzaC1kc3MAAACBAKcvdT5wspR3XR1b6xaXKUgZYxfOjOytKT8RBvtZiTpp 23wx2x31Dl2oXw+MOpoVTZMSwv+JC8QMr4wViEMeC3suA0tyW9r0XPHmEJ0e7ctw iryqMZeuzBXVV7kkE8mzKgGXaHirJ5j2FuElBrEkXNJ8RgeDAXfKNt7ID5ph+mzl AAAAFQC7iQ0hOR/gC30f+r6r0jGs6FpntQAAAIEAgyMO0bw1bq+7T51HQJOjnO2v 2UWuWLJAzyTSEhddfw+3fj162QVsShfPRiFV5ZmA5p32SaFm8G3e6G4a2WRrwy3q aYrQ7hk/G759aMCD66ES2yAl8Z3MePsEEvJjwuobL8wzHkQOL7fNqOCWwipEuzpF afzrXYWf7DKx4c1vPMYAAACAAiD8nRuDM+3ntocUBpdJSKZjnG8Ws1hCUVcZlBKV er6EFfHigDBK//K2o8Y5lmZcLlOjRYfB9iPYyk95+C5tldd6NRuSp5H+hUbc6+P5 x2UhWPceNel4rEwK1cWwE0/4hiI/K+iyiZ4bYEbRzwfbuDferI9mS/zL2pd2zGHw oik= Private-Lines: 1 UJQn7pw6IHbA+DWyBHq3rGTWLCQ3Z7ucz5NAo6prTnA= Private-MAC: 7888f3cc7bb7582cbc666cb6aab61dfe1a86c446 test2-openssh.txt000066400000000000000000000012341176122712300354230ustar00rootroot00000000000000trilead-putty-extension-trilead-putty-extension-1.2/src/test/resources/org/kohsuke/putty-----BEGIN DSA PRIVATE KEY----- MIIBuwIBAAKBgQCnL3U+cLKUd10dW+sWlylIGWMXzozsrSk/EQb7WYk6adt8Mdsd 9Q5dqF8PjDqaFU2TEsL/iQvEDK+MFYhDHgt7LgNLclva9Fzx5hCdHu3LcIq8qjGX rswV1Ve5JBPJsyoBl2h4qyeY9hbhJQaxJFzSfEYHgwF3yjbeyA+aYfps5QIVALuJ DSE5H+ALfR/6vqvSMazoWme1AoGBAIMjDtG8NW6vu0+dR0CTo5ztr9lFrliyQM8k 0hIXXX8Pt349etkFbEoXz0YhVeWZgOad9kmhZvBt3uhuGtlka8Mt6mmK0O4ZPxu+ fWjAg+uhEtsgJfGdzHj7BBLyY8LqGy/MMx5EDi+3zajglsIqRLs6RWn8612Fn+wy seHNbzzGAoGAAiD8nRuDM+3ntocUBpdJSKZjnG8Ws1hCUVcZlBKVer6EFfHigDBK //K2o8Y5lmZcLlOjRYfB9iPYyk95+C5tldd6NRuSp5H+hUbc6+P5x2UhWPceNel4 rEwK1cWwE0/4hiI/K+iyiZ4bYEbRzwfbuDferI9mS/zL2pd2zGHwoikCFHpOruqg qowWEPmBEsFBuXt9bDLx -----END DSA PRIVATE KEY----- trilead-putty-extension-trilead-putty-extension-1.2/src/test/resources/org/kohsuke/putty/test2.ppk000066400000000000000000000014211176122712300337760ustar00rootroot00000000000000PuTTY-User-Key-File-2: ssh-dss Encryption: none Comment: dsa-key-20080514 Public-Lines: 10 AAAAB3NzaC1kc3MAAACBAKcvdT5wspR3XR1b6xaXKUgZYxfOjOytKT8RBvtZiTpp 23wx2x31Dl2oXw+MOpoVTZMSwv+JC8QMr4wViEMeC3suA0tyW9r0XPHmEJ0e7ctw iryqMZeuzBXVV7kkE8mzKgGXaHirJ5j2FuElBrEkXNJ8RgeDAXfKNt7ID5ph+mzl AAAAFQC7iQ0hOR/gC30f+r6r0jGs6FpntQAAAIEAgyMO0bw1bq+7T51HQJOjnO2v 2UWuWLJAzyTSEhddfw+3fj162QVsShfPRiFV5ZmA5p32SaFm8G3e6G4a2WRrwy3q aYrQ7hk/G759aMCD66ES2yAl8Z3MePsEEvJjwuobL8wzHkQOL7fNqOCWwipEuzpF afzrXYWf7DKx4c1vPMYAAACAAiD8nRuDM+3ntocUBpdJSKZjnG8Ws1hCUVcZlBKV er6EFfHigDBK//K2o8Y5lmZcLlOjRYfB9iPYyk95+C5tldd6NRuSp5H+hUbc6+P5 x2UhWPceNel4rEwK1cWwE0/4hiI/K+iyiZ4bYEbRzwfbuDferI9mS/zL2pd2zGHw oik= Private-Lines: 1 AAAAFHpOruqgqowWEPmBEsFBuXt9bDLx Private-MAC: 32c9b2f07721f69c2ead252aa9c9849b1e532798