diff options
author | Mat Booth | 2015-02-19 16:29:51 +0000 |
---|---|---|
committer | Mat Booth | 2015-02-19 16:29:51 +0000 |
commit | d31efa93808629d9a90d4b3bfd75f51b9d02d10a (patch) | |
tree | 63a12231d815e661317f1f90db69e4370a202319 | |
parent | d657bf7275518f5cf2c295a03ed1d97bc871602e (diff) | |
download | eclipse.platform.team-d31efa93808629d9a90d4b3bfd75f51b9d02d10a.tar.gz eclipse.platform.team-d31efa93808629d9a90d4b3bfd75f51b9d02d10a.tar.xz eclipse.platform.team-d31efa93808629d9a90d4b3bfd75f51b9d02d10a.zip |
Bug 460265 - Remove org.eclipse.team.cvs.ssh from eclipse.platform.teamI20150414-1400I20150414-0800I20150408-1100I20150407-0800I20150331-0800I20150324-0800I20150320-0800I20150320-0030I20150319-1640I20150319-1430I20150318-2000I20150318-1300I20150318-0800I20150317-2000I20150317-1130I20150317-0800I20150316-2000I20150316-0800I20150315-2000I20150311-1300I20150310-0800I20150305-1200I20150303-0800I20150224-0800
repository
Change-Id: I5c76b833b91aed8b5abbf6afb28cb31f9656aff3
Signed-off-by: Mat Booth <mat.booth@redhat.com>
28 files changed, 0 insertions, 3451 deletions
diff --git a/bundles/org.eclipse.team.cvs.ssh/.classpath b/bundles/org.eclipse.team.cvs.ssh/.classpath deleted file mode 100644 index ce7393340..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/.classpath +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" path="src"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/> - <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> - <classpathentry kind="output" path="bin"/> -</classpath> diff --git a/bundles/org.eclipse.team.cvs.ssh/.cvsignore b/bundles/org.eclipse.team.cvs.ssh/.cvsignore deleted file mode 100644 index c5e82d745..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -bin
\ No newline at end of file diff --git a/bundles/org.eclipse.team.cvs.ssh/.options b/bundles/org.eclipse.team.cvs.ssh/.options deleted file mode 100644 index d90ae7ce7..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/.options +++ /dev/null @@ -1,7 +0,0 @@ -# Debugging options for the org.eclipse.team.cvs.ssh plugin. - -# Turn on debugging for the plugin. -org.eclipse.team.cvs.ssh/debug=false - -# Shows ssh protocol messages -org.eclipse.team.cvs.ssh/ssh_protocol=false
\ No newline at end of file diff --git a/bundles/org.eclipse.team.cvs.ssh/.project b/bundles/org.eclipse.team.cvs.ssh/.project deleted file mode 100644 index ee32c8e15..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/.project +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>org.eclipse.team.cvs.ssh</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.pde.ManifestBuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.pde.SchemaBuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.jdt.core.javanature</nature> - <nature>org.eclipse.pde.PluginNature</nature> - <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature> - </natures> -</projectDescription> diff --git a/bundles/org.eclipse.team.cvs.ssh/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.team.cvs.ssh/.settings/org.eclipse.core.runtime.prefs deleted file mode 100644 index c522e1f4a..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/.settings/org.eclipse.core.runtime.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1
-line.separator=\n
diff --git a/bundles/org.eclipse.team.cvs.ssh/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.team.cvs.ssh/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 4e75a07bd..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,73 +0,0 @@ -#Tue Feb 01 14:42:43 CET 2011 -eclipse.preferences.version=1 -org.eclipse.jdt.core.builder.cleanOutputFolder=clean -org.eclipse.jdt.core.builder.duplicateResourceTask=warning -org.eclipse.jdt.core.builder.invalidClasspath=abort -org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore -org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch -org.eclipse.jdt.core.circularClasspath=error -org.eclipse.jdt.core.classpath.exclusionPatterns=enabled -org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.4 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.maxProblemPerUnit=100 -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=warning -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=warning -org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning -org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore -org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=error -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore -org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=error -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning -org.eclipse.jdt.core.compiler.problem.nullReference=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error -org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled -org.eclipse.jdt.core.compiler.problem.unusedImport=error -org.eclipse.jdt.core.compiler.problem.unusedLabel=error -org.eclipse.jdt.core.compiler.problem.unusedLocal=error -org.eclipse.jdt.core.compiler.problem.unusedParameter=warning -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.source=1.3 -org.eclipse.jdt.core.incompatibleJDKLevel=ignore -org.eclipse.jdt.core.incompleteClasspath=error diff --git a/bundles/org.eclipse.team.cvs.ssh/.settings/org.eclipse.jdt.launching.prefs b/bundles/org.eclipse.team.cvs.ssh/.settings/org.eclipse.jdt.launching.prefs deleted file mode 100644 index 07990c2e3..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/.settings/org.eclipse.jdt.launching.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Tue Feb 01 14:42:43 CET 2011 -eclipse.preferences.version=1 -org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=error diff --git a/bundles/org.eclipse.team.cvs.ssh/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.team.cvs.ssh/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index a173ae6df..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Wed Mar 15 16:55:04 EST 2006 -eclipse.preferences.version=1 -internal.default.compliance=user diff --git a/bundles/org.eclipse.team.cvs.ssh/META-INF/MANIFEST.MF b/bundles/org.eclipse.team.cvs.ssh/META-INF/MANIFEST.MF deleted file mode 100644 index 75605143e..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/META-INF/MANIFEST.MF +++ /dev/null @@ -1,15 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: %pluginName -Bundle-SymbolicName: org.eclipse.team.cvs.ssh;singleton:=true -Bundle-Version: 3.2.200.qualifier -Bundle-Activator: org.eclipse.team.internal.ccvs.ssh.SSHPlugin -Bundle-Vendor: %providerName -Bundle-Localization: plugin -Export-Package: org.eclipse.team.internal.ccvs.ssh;x-friends:="org.eclipse.team.cvs.ssh2" -Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.1.0,4.0.0)", - org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)", - org.eclipse.team.cvs.core;bundle-version="[3.2.0,4.0.0)", - org.eclipse.team.core;bundle-version="[3.2.0,4.0.0)" -Bundle-ActivationPolicy: lazy -Bundle-RequiredExecutionEnvironment: J2SE-1.4 diff --git a/bundles/org.eclipse.team.cvs.ssh/about.html b/bundles/org.eclipse.team.cvs.ssh/about.html deleted file mode 100644 index 32d78aa68..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/about.html +++ /dev/null @@ -1,114 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> -<title>About</title> -</head> -<body lang="EN-US"> -<h2>About This Content</h2> - -<p>October 30, 2006</p> -<h3>License</h3> - -<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise -indicated below, the Content is provided to you under the terms and conditions of the -Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available -at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. -For purposes of the EPL, "Program" will mean the Content.</p> - -<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is -being redistributed by another party ("Redistributor") and different terms and conditions may -apply to your use of any object code in the Content. Check the Redistributor's license that was -provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise -indicated below, the terms and conditions of the EPL still apply to any source code in the Content -and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p> - -<h3>Third Party Content</h3> - -<p>The Content includes items that have been sourced from third parties as set out below. If you -did not receive this Content directly from the Eclipse Foundation, the following is provided -for informational purposes only, and you should look to the Redistributor’s license for -terms and conditions of use.</p> - -<h4>The Java (TM) Ssh Applet</h4> -<p>The following classes:</p> - -<ul> - <li>Cipher</li> - <li>Client</li> - <li>ClientPacket</li> - <li>KnownHosts</li> - <li>Misc</li> - <li>Packet</li> - <li>Policy</li> - <li>ServerPacket</li> - <li>SSHMethod</li> - <li>SSHPlugin</li> - <li>SSHServerConnection</li> -</ul> - -<p>and the following files:</p> - -<ul> - <li>messages.properties</li> -</ul> - -<p>are located in the package org.eclipse.team.internal.ccvs.ssh in the plug-in JAR and are based on "The Java SSh Applet" developed by Cedric Gourio. The Java Ssh Applet includes the following copyright notice which must be included in any redistribution:</p> - -<blockquote> - Copyright (c) 1998 Cedric Gourio<br> - (<a href="http://www.math.ucdavis.edu/~bill/java/ssh/">http://www.math.ucdavis.edu/~bill/java/ssh/</a>)<br> - (<a href="mailto:javassh@france-mail.com">javassh@france-mail.com</a>) - - <p>This program is FREE FOR COMMERCIAL AND NON-COMMERCIAL USE.<br> - You can freely modify the code.</p> - - <p>You should however include this copyright notice in any redistribution<br> - and please keep in touch with the author for any feedback.</p> -</blockquote> - -<h4>The Blowfish Encryption Algorithm</h4> -<p>The following classes in the package org.eclipse.team.internal.ccvs.ssh in the plug-in JAR are based on an algorithm developed by Bruce Schneier. -The algorithm was originally published in a paper that is located at <a href="http://www.counterpane.com/bfsverlag.html">http://www.counterpane.com/bfsverlag.html</a>. -Your use of the Blowfish Encryption Algorithm in both source and binary code form contained in the plug-in is not subject to any -additional terms and conditions:</p> - -<ul> - <li>Blowfish</li> -</ul> - -<h3>Cryptography</h3> - -<h4>Export Control</h4> -<p>The plug-in contains encryption software. The country in which you are currently may have restrictions on the import, possession, -and use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check the country's -laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this -is permitted.</p> - -<h4>Encryption Items</h4> - -<p>Details of the encryption software in this plug-in are provided to assist in obtaining relevant export control classification and approval. -Cryptography in this plug-in has been deemed eligible by the U.S. Government Department of Commerce for export under License Exception Technology Software Unrestricted (TSU) for both object code and source code.</p> - -<p>The plug-in contains an implementation of the Secure Shell (SSH) protocol that encrypts the network traffic (program code files -in file versioning systems) between a Concurrent Versions System (CVS) server and a CVS client. Data is encrypted using the Blowfish algorithm -which is a 64-bit symmetric cipher that uses a key varying in length from 32 bits to 448 bits. The RSA PKCS #1 v1.5 key exchange algorithm is -used to authenticate and exchange keys with a minimum modulus size of 96 bits and a maximum modulus size theoretically unlimited since the -implementation uses the java.math.BigInteger class which has a maximum positive integer range limited only by the available memory in the computer. -In practice, the key length is defined by the CVS server with which communication is initiated.</p> - -<p>The following Java classes contain encryption items (the plug-in may contain both binary and source code):</p> - -<ul> - <li>org.eclipse.team.internal.ccvs.ssh.Blowfish</li> - <li>org.eclipse.team.internal.ccvs.ssh.Cipher</li> - <li>org.eclipse.team.internal.ccvs.ssh.Client</li> - <li>org.eclipse.team.internal.ccvs.ssh.ClientPacket</li> - <li>org.eclipse.team.internal.ccvs.ssh.Misc</li> -</ul> - -<small>Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.</small> - -</body> -</html>
\ No newline at end of file diff --git a/bundles/org.eclipse.team.cvs.ssh/build.properties b/bundles/org.eclipse.team.cvs.ssh/build.properties deleted file mode 100644 index f681f7af6..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/build.properties +++ /dev/null @@ -1,19 +0,0 @@ -############################################################################### -# Copyright (c) 2000, 2014 IBM Corporation and others. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License v1.0 -# which accompanies this distribution, and is available at -# http://www.eclipse.org/legal/epl-v10.html -# -# Contributors: -# IBM Corporation - initial API and implementation -############################################################################### -# Eclipse build contribution -source..=src/ -src.includes=about.html -bin.includes = about.html,\ - plugin.properties,\ - .,\ - .options,\ - META-INF/,\ - plugin.xml diff --git a/bundles/org.eclipse.team.cvs.ssh/plugin.properties b/bundles/org.eclipse.team.cvs.ssh/plugin.properties deleted file mode 100644 index 8a84ddab1..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/plugin.properties +++ /dev/null @@ -1,13 +0,0 @@ -############################################################################### -# Copyright (c) 2000, 2014 IBM Corporation and others. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License v1.0 -# which accompanies this distribution, and is available at -# http://www.eclipse.org/legal/epl-v10.html -# -# Contributors: -# IBM Corporation - initial API and implementation -############################################################################### -providerName=Eclipse.org -pluginName=CVS SSH Core -traceComponentLabel=Platform Team CVS SSH diff --git a/bundles/org.eclipse.team.cvs.ssh/plugin.xml b/bundles/org.eclipse.team.cvs.ssh/plugin.xml deleted file mode 100644 index 6a47c84ed..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/plugin.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<?eclipse version="3.4"?> -<plugin> - <extension - point="org.eclipse.ui.trace.traceComponents"> - <component - id="org.eclipse.team.cvs.ssh.trace" - label="%traceComponentLabel"> - <bundle - consumed="false" - name="org.eclipse.team.cvs.ssh"> - </bundle> - </component> - </extension> -</plugin> diff --git a/bundles/org.eclipse.team.cvs.ssh/pom.xml b/bundles/org.eclipse.team.cvs.ssh/pom.xml deleted file mode 100644 index 787a87ec4..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (c) 2012, 2014 Eclipse Foundation and others. - All rights reserved. This program and the accompanying materials - are made available under the terms of the Eclipse Distribution License v1.0 - which accompanies this distribution, and is available at - http://www.eclipse.org/org/documents/edl-v10.php - - Contributors: - Igor Fedorenko - initial implementation ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <artifactId>eclipse.platform.team</artifactId> - <groupId>eclipse.platform.team</groupId> - <version>4.5.0-SNAPSHOT</version> - <relativePath>../../</relativePath> - </parent> - <groupId>org.eclipse.team</groupId> - <artifactId>org.eclipse.team.cvs.ssh</artifactId> - <version>3.2.200-SNAPSHOT</version> - <packaging>eclipse-plugin</packaging> -</project> diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Blowfish.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Blowfish.java deleted file mode 100644 index e85f3057e..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Blowfish.java +++ /dev/null @@ -1,1220 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.team.internal.ccvs.ssh; - -public class Blowfish extends Cipher { - private int[] P = new int[18]; - private int[][] S = new int[4][256]; - - private int lastEncipherXL = 0; - private int lastEncipherXR = 0; - private int lastDecipherXL = 0; - private int lastDecipherXR = 0; - - private final static int[] INIT_DATA = - { - 0x243f6a88, - 0x85a308d3, - 0x13198a2e, - 0x03707344, - 0xa4093822, - 0x299f31d0, - 0x082efa98, - 0xec4e6c89, - 0x452821e6, - 0x38d01377, - 0xbe5466cf, - 0x34e90c6c, - 0xc0ac29b7, - 0xc97c50dd, - 0x3f84d5b5, - 0xb5470917, - 0x9216d5d9, - 0x8979fb1b, - 0xd1310ba6, - 0x98dfb5ac, - 0x2ffd72db, - 0xd01adfb7, - 0xb8e1afed, - 0x6a267e96, - 0xba7c9045, - 0xf12c7f99, - 0x24a19947, - 0xb3916cf7, - 0x0801f2e2, - 0x858efc16, - 0x636920d8, - 0x71574e69, - 0xa458fea3, - 0xf4933d7e, - 0x0d95748f, - 0x728eb658, - 0x718bcd58, - 0x82154aee, - 0x7b54a41d, - 0xc25a59b5, - 0x9c30d539, - 0x2af26013, - 0xc5d1b023, - 0x286085f0, - 0xca417918, - 0xb8db38ef, - 0x8e79dcb0, - 0x603a180e, - 0x6c9e0e8b, - 0xb01e8a3e, - 0xd71577c1, - 0xbd314b27, - 0x78af2fda, - 0x55605c60, - 0xe65525f3, - 0xaa55ab94, - 0x57489862, - 0x63e81440, - 0x55ca396a, - 0x2aab10b6, - 0xb4cc5c34, - 0x1141e8ce, - 0xa15486af, - 0x7c72e993, - 0xb3ee1411, - 0x636fbc2a, - 0x2ba9c55d, - 0x741831f6, - 0xce5c3e16, - 0x9b87931e, - 0xafd6ba33, - 0x6c24cf5c, - 0x7a325381, - 0x28958677, - 0x3b8f4898, - 0x6b4bb9af, - 0xc4bfe81b, - 0x66282193, - 0x61d809cc, - 0xfb21a991, - 0x487cac60, - 0x5dec8032, - 0xef845d5d, - 0xe98575b1, - 0xdc262302, - 0xeb651b88, - 0x23893e81, - 0xd396acc5, - 0x0f6d6ff3, - 0x83f44239, - 0x2e0b4482, - 0xa4842004, - 0x69c8f04a, - 0x9e1f9b5e, - 0x21c66842, - 0xf6e96c9a, - 0x670c9c61, - 0xabd388f0, - 0x6a51a0d2, - 0xd8542f68, - 0x960fa728, - 0xab5133a3, - 0x6eef0b6c, - 0x137a3be4, - 0xba3bf050, - 0x7efb2a98, - 0xa1f1651d, - 0x39af0176, - 0x66ca593e, - 0x82430e88, - 0x8cee8619, - 0x456f9fb4, - 0x7d84a5c3, - 0x3b8b5ebe, - 0xe06f75d8, - 0x85c12073, - 0x401a449f, - 0x56c16aa6, - 0x4ed3aa62, - 0x363f7706, - 0x1bfedf72, - 0x429b023d, - 0x37d0d724, - 0xd00a1248, - 0xdb0fead3, - 0x49f1c09b, - 0x075372c9, - 0x80991b7b, - 0x25d479d8, - 0xf6e8def7, - 0xe3fe501a, - 0xb6794c3b, - 0x976ce0bd, - 0x04c006ba, - 0xc1a94fb6, - 0x409f60c4, - 0x5e5c9ec2, - 0x196a2463, - 0x68fb6faf, - 0x3e6c53b5, - 0x1339b2eb, - 0x3b52ec6f, - 0x6dfc511f, - 0x9b30952c, - 0xcc814544, - 0xaf5ebd09, - 0xbee3d004, - 0xde334afd, - 0x660f2807, - 0x192e4bb3, - 0xc0cba857, - 0x45c8740f, - 0xd20b5f39, - 0xb9d3fbdb, - 0x5579c0bd, - 0x1a60320a, - 0xd6a100c6, - 0x402c7279, - 0x679f25fe, - 0xfb1fa3cc, - 0x8ea5e9f8, - 0xdb3222f8, - 0x3c7516df, - 0xfd616b15, - 0x2f501ec8, - 0xad0552ab, - 0x323db5fa, - 0xfd238760, - 0x53317b48, - 0x3e00df82, - 0x9e5c57bb, - 0xca6f8ca0, - 0x1a87562e, - 0xdf1769db, - 0xd542a8f6, - 0x287effc3, - 0xac6732c6, - 0x8c4f5573, - 0x695b27b0, - 0xbbca58c8, - 0xe1ffa35d, - 0xb8f011a0, - 0x10fa3d98, - 0xfd2183b8, - 0x4afcb56c, - 0x2dd1d35b, - 0x9a53e479, - 0xb6f84565, - 0xd28e49bc, - 0x4bfb9790, - 0xe1ddf2da, - 0xa4cb7e33, - 0x62fb1341, - 0xcee4c6e8, - 0xef20cada, - 0x36774c01, - 0xd07e9efe, - 0x2bf11fb4, - 0x95dbda4d, - 0xae909198, - 0xeaad8e71, - 0x6b93d5a0, - 0xd08ed1d0, - 0xafc725e0, - 0x8e3c5b2f, - 0x8e7594b7, - 0x8ff6e2fb, - 0xf2122b64, - 0x8888b812, - 0x900df01c, - 0x4fad5ea0, - 0x688fc31c, - 0xd1cff191, - 0xb3a8c1ad, - 0x2f2f2218, - 0xbe0e1777, - 0xea752dfe, - 0x8b021fa1, - 0xe5a0cc0f, - 0xb56f74e8, - 0x18acf3d6, - 0xce89e299, - 0xb4a84fe0, - 0xfd13e0b7, - 0x7cc43b81, - 0xd2ada8d9, - 0x165fa266, - 0x80957705, - 0x93cc7314, - 0x211a1477, - 0xe6ad2065, - 0x77b5fa86, - 0xc75442f5, - 0xfb9d35cf, - 0xebcdaf0c, - 0x7b3e89a0, - 0xd6411bd3, - 0xae1e7e49, - 0x00250e2d, - 0x2071b35e, - 0x226800bb, - 0x57b8e0af, - 0x2464369b, - 0xf009b91e, - 0x5563911d, - 0x59dfa6aa, - 0x78c14389, - 0xd95a537f, - 0x207d5ba2, - 0x02e5b9c5, - 0x83260376, - 0x6295cfa9, - 0x11c81968, - 0x4e734a41, - 0xb3472dca, - 0x7b14a94a, - 0x1b510052, - 0x9a532915, - 0xd60f573f, - 0xbc9bc6e4, - 0x2b60a476, - 0x81e67400, - 0x08ba6fb5, - 0x571be91f, - 0xf296ec6b, - 0x2a0dd915, - 0xb6636521, - 0xe7b9f9b6, - 0xff34052e, - 0xc5855664, - 0x53b02d5d, - 0xa99f8fa1, - 0x08ba4799, - 0x6e85076a, - 0x4b7a70e9, - 0xb5b32944, - 0xdb75092e, - 0xc4192623, - 0xad6ea6b0, - 0x49a7df7d, - 0x9cee60b8, - 0x8fedb266, - 0xecaa8c71, - 0x699a17ff, - 0x5664526c, - 0xc2b19ee1, - 0x193602a5, - 0x75094c29, - 0xa0591340, - 0xe4183a3e, - 0x3f54989a, - 0x5b429d65, - 0x6b8fe4d6, - 0x99f73fd6, - 0xa1d29c07, - 0xefe830f5, - 0x4d2d38e6, - 0xf0255dc1, - 0x4cdd2086, - 0x8470eb26, - 0x6382e9c6, - 0x021ecc5e, - 0x09686b3f, - 0x3ebaefc9, - 0x3c971814, - 0x6b6a70a1, - 0x687f3584, - 0x52a0e286, - 0xb79c5305, - 0xaa500737, - 0x3e07841c, - 0x7fdeae5c, - 0x8e7d44ec, - 0x5716f2b8, - 0xb03ada37, - 0xf0500c0d, - 0xf01c1f04, - 0x0200b3ff, - 0xae0cf51a, - 0x3cb574b2, - 0x25837a58, - 0xdc0921bd, - 0xd19113f9, - 0x7ca92ff6, - 0x94324773, - 0x22f54701, - 0x3ae5e581, - 0x37c2dadc, - 0xc8b57634, - 0x9af3dda7, - 0xa9446146, - 0x0fd0030e, - 0xecc8c73e, - 0xa4751e41, - 0xe238cd99, - 0x3bea0e2f, - 0x3280bba1, - 0x183eb331, - 0x4e548b38, - 0x4f6db908, - 0x6f420d03, - 0xf60a04bf, - 0x2cb81290, - 0x24977c79, - 0x5679b072, - 0xbcaf89af, - 0xde9a771f, - 0xd9930810, - 0xb38bae12, - 0xdccf3f2e, - 0x5512721f, - 0x2e6b7124, - 0x501adde6, - 0x9f84cd87, - 0x7a584718, - 0x7408da17, - 0xbc9f9abc, - 0xe94b7d8c, - 0xec7aec3a, - 0xdb851dfa, - 0x63094366, - 0xc464c3d2, - 0xef1c1847, - 0x3215d908, - 0xdd433b37, - 0x24c2ba16, - 0x12a14d43, - 0x2a65c451, - 0x50940002, - 0x133ae4dd, - 0x71dff89e, - 0x10314e55, - 0x81ac77d6, - 0x5f11199b, - 0x043556f1, - 0xd7a3c76b, - 0x3c11183b, - 0x5924a509, - 0xf28fe6ed, - 0x97f1fbfa, - 0x9ebabf2c, - 0x1e153c6e, - 0x86e34570, - 0xeae96fb1, - 0x860e5e0a, - 0x5a3e2ab3, - 0x771fe71c, - 0x4e3d06fa, - 0x2965dcb9, - 0x99e71d0f, - 0x803e89d6, - 0x5266c825, - 0x2e4cc978, - 0x9c10b36a, - 0xc6150eba, - 0x94e2ea78, - 0xa5fc3c53, - 0x1e0a2df4, - 0xf2f74ea7, - 0x361d2b3d, - 0x1939260f, - 0x19c27960, - 0x5223a708, - 0xf71312b6, - 0xebadfe6e, - 0xeac31f66, - 0xe3bc4595, - 0xa67bc883, - 0xb17f37d1, - 0x018cff28, - 0xc332ddef, - 0xbe6c5aa5, - 0x65582185, - 0x68ab9802, - 0xeecea50f, - 0xdb2f953b, - 0x2aef7dad, - 0x5b6e2f84, - 0x1521b628, - 0x29076170, - 0xecdd4775, - 0x619f1510, - 0x13cca830, - 0xeb61bd96, - 0x0334fe1e, - 0xaa0363cf, - 0xb5735c90, - 0x4c70a239, - 0xd59e9e0b, - 0xcbaade14, - 0xeecc86bc, - 0x60622ca7, - 0x9cab5cab, - 0xb2f3846e, - 0x648b1eaf, - 0x19bdf0ca, - 0xa02369b9, - 0x655abb50, - 0x40685a32, - 0x3c2ab4b3, - 0x319ee9d5, - 0xc021b8f7, - 0x9b540b19, - 0x875fa099, - 0x95f7997e, - 0x623d7da8, - 0xf837889a, - 0x97e32d77, - 0x11ed935f, - 0x16681281, - 0x0e358829, - 0xc7e61fd6, - 0x96dedfa1, - 0x7858ba99, - 0x57f584a5, - 0x1b227263, - 0x9b83c3ff, - 0x1ac24696, - 0xcdb30aeb, - 0x532e3054, - 0x8fd948e4, - 0x6dbc3128, - 0x58ebf2ef, - 0x34c6ffea, - 0xfe28ed61, - 0xee7c3c73, - 0x5d4a14d9, - 0xe864b7e3, - 0x42105d14, - 0x203e13e0, - 0x45eee2b6, - 0xa3aaabea, - 0xdb6c4f15, - 0xfacb4fd0, - 0xc742f442, - 0xef6abbb5, - 0x654f3b1d, - 0x41cd2105, - 0xd81e799e, - 0x86854dc7, - 0xe44b476a, - 0x3d816250, - 0xcf62a1f2, - 0x5b8d2646, - 0xfc8883a0, - 0xc1c7b6a3, - 0x7f1524c3, - 0x69cb7492, - 0x47848a0b, - 0x5692b285, - 0x095bbf00, - 0xad19489d, - 0x1462b174, - 0x23820e00, - 0x58428d2a, - 0x0c55f5ea, - 0x1dadf43e, - 0x233f7061, - 0x3372f092, - 0x8d937e41, - 0xd65fecf1, - 0x6c223bdb, - 0x7cde3759, - 0xcbee7460, - 0x4085f2a7, - 0xce77326e, - 0xa6078084, - 0x19f8509e, - 0xe8efd855, - 0x61d99735, - 0xa969a7aa, - 0xc50c06c2, - 0x5a04abfc, - 0x800bcadc, - 0x9e447a2e, - 0xc3453484, - 0xfdd56705, - 0x0e1e9ec9, - 0xdb73dbd3, - 0x105588cd, - 0x675fda79, - 0xe3674340, - 0xc5c43465, - 0x713e38d8, - 0x3d28f89e, - 0xf16dff20, - 0x153e21e7, - 0x8fb03d4a, - 0xe6e39f2b, - 0xdb83adf7, - 0xe93d5a68, - 0x948140f7, - 0xf64c261c, - 0x94692934, - 0x411520f7, - 0x7602d4f7, - 0xbcf46b2e, - 0xd4a20068, - 0xd4082471, - 0x3320f46a, - 0x43b7d4b7, - 0x500061af, - 0x1e39f62e, - 0x97244546, - 0x14214f74, - 0xbf8b8840, - 0x4d95fc1d, - 0x96b591af, - 0x70f4ddd3, - 0x66a02f45, - 0xbfbc09ec, - 0x03bd9785, - 0x7fac6dd0, - 0x31cb8504, - 0x96eb27b3, - 0x55fd3941, - 0xda2547e6, - 0xabca0a9a, - 0x28507825, - 0x530429f4, - 0x0a2c86da, - 0xe9b66dfb, - 0x68dc1462, - 0xd7486900, - 0x680ec0a4, - 0x27a18dee, - 0x4f3ffea2, - 0xe887ad8c, - 0xb58ce006, - 0x7af4d6b6, - 0xaace1e7c, - 0xd3375fec, - 0xce78a399, - 0x406b2a42, - 0x20fe9e35, - 0xd9f385b9, - 0xee39d7ab, - 0x3b124e8b, - 0x1dc9faf7, - 0x4b6d1856, - 0x26a36631, - 0xeae397b2, - 0x3a6efa74, - 0xdd5b4332, - 0x6841e7f7, - 0xca7820fb, - 0xfb0af54e, - 0xd8feb397, - 0x454056ac, - 0xba489527, - 0x55533a3a, - 0x20838d87, - 0xfe6ba9b7, - 0xd096954b, - 0x55a867bc, - 0xa1159a58, - 0xcca92963, - 0x99e1db33, - 0xa62a4a56, - 0x3f3125f9, - 0x5ef47e1c, - 0x9029317c, - 0xfdf8e802, - 0x04272f70, - 0x80bb155c, - 0x05282ce3, - 0x95c11548, - 0xe4c66d22, - 0x48c1133f, - 0xc70f86dc, - 0x07f9c9ee, - 0x41041f0f, - 0x404779a4, - 0x5d886e17, - 0x325f51eb, - 0xd59bc0d1, - 0xf2bcc18f, - 0x41113564, - 0x257b7834, - 0x602a9c60, - 0xdff8e8a3, - 0x1f636c1b, - 0x0e12b4c2, - 0x02e1329e, - 0xaf664fd1, - 0xcad18115, - 0x6b2395e0, - 0x333e92e1, - 0x3b240b62, - 0xeebeb922, - 0x85b2a20e, - 0xe6ba0d99, - 0xde720c8c, - 0x2da2f728, - 0xd0127845, - 0x95b794fd, - 0x647d0862, - 0xe7ccf5f0, - 0x5449a36f, - 0x877d48fa, - 0xc39dfd27, - 0xf33e8d1e, - 0x0a476341, - 0x992eff74, - 0x3a6f6eab, - 0xf4f8fd37, - 0xa812dc60, - 0xa1ebddf8, - 0x991be14c, - 0xdb6e6b0d, - 0xc67b5510, - 0x6d672c37, - 0x2765d43b, - 0xdcd0e804, - 0xf1290dc7, - 0xcc00ffa3, - 0xb5390f92, - 0x690fed0b, - 0x667b9ffb, - 0xcedb7d9c, - 0xa091cf0b, - 0xd9155ea3, - 0xbb132f88, - 0x515bad24, - 0x7b9479bf, - 0x763bd6eb, - 0x37392eb3, - 0xcc115979, - 0x8026e297, - 0xf42e312d, - 0x6842ada7, - 0xc66a2b3b, - 0x12754ccc, - 0x782ef11c, - 0x6a124237, - 0xb79251e7, - 0x06a1bbe6, - 0x4bfb6350, - 0x1a6b1018, - 0x11caedfa, - 0x3d25bdd8, - 0xe2e1c3c9, - 0x44421659, - 0x0a121386, - 0xd90cec6e, - 0xd5abea2a, - 0x64af674e, - 0xda86a85f, - 0xbebfe988, - 0x64e4c3fe, - 0x9dbc8057, - 0xf0f7c086, - 0x60787bf8, - 0x6003604d, - 0xd1fd8346, - 0xf6381fb0, - 0x7745ae04, - 0xd736fccc, - 0x83426b33, - 0xf01eab71, - 0xb0804187, - 0x3c005e5f, - 0x77a057be, - 0xbde8ae24, - 0x55464299, - 0xbf582e61, - 0x4e58f48f, - 0xf2ddfda2, - 0xf474ef38, - 0x8789bdc2, - 0x5366f9c3, - 0xc8b38e74, - 0xb475f255, - 0x46fcd9b9, - 0x7aeb2661, - 0x8b1ddf84, - 0x846a0e79, - 0x915f95e2, - 0x466e598e, - 0x20b45770, - 0x8cd55591, - 0xc902de4c, - 0xb90bace1, - 0xbb8205d0, - 0x11a86248, - 0x7574a99e, - 0xb77f19b6, - 0xe0a9dc09, - 0x662d09a1, - 0xc4324633, - 0xe85a1f02, - 0x09f0be8c, - 0x4a99a025, - 0x1d6efe10, - 0x1ab93d1d, - 0x0ba5a4df, - 0xa186f20f, - 0x2868f169, - 0xdcb7da83, - 0x573906fe, - 0xa1e2ce9b, - 0x4fcd7f52, - 0x50115e01, - 0xa70683fa, - 0xa002b5c4, - 0x0de6d027, - 0x9af88c27, - 0x773f8641, - 0xc3604c06, - 0x61a806b5, - 0xf0177a28, - 0xc0f586e0, - 0x006058aa, - 0x30dc7d62, - 0x11e69ed7, - 0x2338ea63, - 0x53c2dd94, - 0xc2c21634, - 0xbbcbee56, - 0x90bcb6de, - 0xebfc7da1, - 0xce591d76, - 0x6f05e409, - 0x4b7c0188, - 0x39720a3d, - 0x7c927c24, - 0x86e3725f, - 0x724d9db9, - 0x1ac15bb4, - 0xd39eb8fc, - 0xed545578, - 0x08fca5b5, - 0xd83d7cd3, - 0x4dad0fc4, - 0x1e50ef5e, - 0xb161e6f8, - 0xa28514d9, - 0x6c51133c, - 0x6fd5c7e7, - 0x56e14ec4, - 0x362abfce, - 0xddc6c837, - 0xd79a3234, - 0x92638212, - 0x670efa8e, - 0x406000e0, - 0x3a39ce37, - 0xd3faf5cf, - 0xabc27737, - 0x5ac52d1b, - 0x5cb0679e, - 0x4fa33742, - 0xd3822740, - 0x99bc9bbe, - 0xd5118e9d, - 0xbf0f7315, - 0xd62d1c7e, - 0xc700c47b, - 0xb78c1b6b, - 0x21a19045, - 0xb26eb1be, - 0x6a366eb4, - 0x5748ab2f, - 0xbc946e79, - 0xc6a376d2, - 0x6549c2c8, - 0x530ff8ee, - 0x468dde7d, - 0xd5730a1d, - 0x4cd04dc6, - 0x2939bbdb, - 0xa9ba4650, - 0xac9526e8, - 0xbe5ee304, - 0xa1fad5f0, - 0x6a2d519a, - 0x63ef8ce2, - 0x9a86ee22, - 0xc089c2b8, - 0x43242ef6, - 0xa51e03aa, - 0x9cf2d0a4, - 0x83c061ba, - 0x9be96a4d, - 0x8fe51550, - 0xba645bd6, - 0x2826a2f9, - 0xa73a3ae1, - 0x4ba99586, - 0xef5562e9, - 0xc72fefd3, - 0xf752f7da, - 0x3f046f69, - 0x77fa0a59, - 0x80e4a915, - 0x87b08601, - 0x9b09e6ad, - 0x3b3ee593, - 0xe990fd5a, - 0x9e34d797, - 0x2cf0b7d9, - 0x022b8b51, - 0x96d5ac3a, - 0x017da67d, - 0xd1cf3ed6, - 0x7c7d2d28, - 0x1f9f25cf, - 0xadf2b89b, - 0x5ad6b472, - 0x5a88f54c, - 0xe029ac71, - 0xe019a5e6, - 0x47b0acfd, - 0xed93fa9b, - 0xe8d3c48d, - 0x283b57cc, - 0xf8d56629, - 0x79132e28, - 0x785f0191, - 0xed756055, - 0xf7960e44, - 0xe3d35e8c, - 0x15056dd4, - 0x88f46dba, - 0x03a16125, - 0x0564f0bd, - 0xc3eb9e15, - 0x3c9057a2, - 0x97271aec, - 0xa93a072a, - 0x1b3f6d9b, - 0x1e6321f5, - 0xf59c66fb, - 0x26dcf319, - 0x7533d928, - 0xb155fdf5, - 0x03563482, - 0x8aba3cbb, - 0x28517711, - 0xc20ad9f8, - 0xabcc5167, - 0xccad925f, - 0x4de81751, - 0x3830dc8e, - 0x379d5862, - 0x9320f991, - 0xea7a90c2, - 0xfb3e7bce, - 0x5121ce64, - 0x774fbe32, - 0xa8b6e37e, - 0xc3293d46, - 0x48de5369, - 0x6413e680, - 0xa2ae0810, - 0xdd6db224, - 0x69852dfd, - 0x09072166, - 0xb39a460a, - 0x6445c0dd, - 0x586cdecf, - 0x1c20c8ae, - 0x5bbef7dd, - 0x1b588d40, - 0xccd2017f, - 0x6bb4e3bb, - 0xdda26a7e, - 0x3a59ff45, - 0x3e350a44, - 0xbcb4cdd5, - 0x72eacea8, - 0xfa6484bb, - 0x8d6612ae, - 0xbf3c6f47, - 0xd29be463, - 0x542f5d9e, - 0xaec2771b, - 0xf64e6370, - 0x740e0d8d, - 0xe75b1357, - 0xf8721671, - 0xaf537d5d, - 0x4040cb08, - 0x4eb4e2cc, - 0x34d2466a, - 0x0115af84, - 0xe1b00428, - 0x95983a1d, - 0x06b89fb4, - 0xce6ea048, - 0x6f3f3b82, - 0x3520ab82, - 0x011a1d4b, - 0x277227f8, - 0x611560b1, - 0xe7933fdc, - 0xbb3a792b, - 0x344525bd, - 0xa08839e1, - 0x51ce794b, - 0x2f32c9b7, - 0xa01fbac9, - 0xe01cc87e, - 0xbcc7d1f6, - 0xcf0111c3, - 0xa1e8aac7, - 0x1a908749, - 0xd44fbd9a, - 0xd0dadecb, - 0xd50ada38, - 0x0339c32a, - 0xc6913667, - 0x8df9317c, - 0xe0b12b4f, - 0xf79e59b7, - 0x43f5bb3a, - 0xf2d519ff, - 0x27d9459c, - 0xbf97222c, - 0x15e6fc2a, - 0x0f91fc71, - 0x9b941525, - 0xfae59361, - 0xceb69ceb, - 0xc2a86459, - 0x12baa8d1, - 0xb6c1075e, - 0xe3056a0c, - 0x10d25065, - 0xcb03a442, - 0xe0ec6e0e, - 0x1698db3b, - 0x4c98a0be, - 0x3278e964, - 0x9f1f9532, - 0xe0d392df, - 0xd3a0342b, - 0x8971f21e, - 0x1b0a7441, - 0x4ba3348c, - 0xc5be7120, - 0xc37632d8, - 0xdf359f8d, - 0x9b992f2e, - 0xe60b6f47, - 0x0fe3f11d, - 0xe54cda54, - 0x1edad891, - 0xce6279cf, - 0xcd3e7e6f, - 0x1618b166, - 0xfd2c1d05, - 0x848fd2c5, - 0xf6fb2299, - 0xf523f357, - 0xa6327623, - 0x93a83531, - 0x56cccd02, - 0xacf08162, - 0x5a75ebb5, - 0x6e163697, - 0x88d273cc, - 0xde966292, - 0x81b949d0, - 0x4c50901b, - 0x71c65614, - 0xe6c6c7bd, - 0x327a140a, - 0x45e1d006, - 0xc3f27b9a, - 0xc9aa53fd, - 0x62a80f00, - 0xbb25bfe2, - 0x35bdd2f6, - 0x71126905, - 0xb2040222, - 0xb6cbcf7c, - 0xcd769c2b, - 0x53113ec0, - 0x1640e3d3, - 0x38abbd60, - 0x2547adf0, - 0xba38209c, - 0xf746ce76, - 0x77afa1c5, - 0x20756060, - 0x85cbfe4e, - 0x8ae88dd8, - 0x7aaaf9b0, - 0x4cf9aa7e, - 0x1948c25c, - 0x02fb8a8c, - 0x01c36ae4, - 0xd6ebe1f9, - 0x90d4f869, - 0xa65cdea0, - 0x3f09252d, - 0xc208e69f, - 0xb74e6132, - 0xce77e25b, - 0x578fdfe3, - 0x3ac372e6 }; -public void decipher(byte[] src, int srcOff, byte[] dst, int dstOff, int len) { - int xL = lastDecipherXL; - int xR = lastDecipherXR; - - int dataXL; - int dataXR; - - int[] xLxR = new int[2]; - - for (int i = 0; i < len; i = i + 8) { - dataXL = (src[srcOff + i] & 0xff) | ((src[srcOff + i + 1] & 0xff) << 8) | ((src[srcOff + i + 2] & 0xff) << 16) | ((src[srcOff + i + 3] & 0xff) << 24); - dataXR = (src[srcOff + i + 4] & 0xff) | ((src[srcOff + i + 5] & 0xff) << 8) | ((src[srcOff + i + 6] & 0xff) << 16) | ((src[srcOff + i + 7] & 0xff) << 24); - - decipher(dataXL, dataXR, xLxR); - - xL ^= xLxR[0]; - xR ^= xLxR[1]; - - dst[dstOff + i] = (byte) (xL & 0xff); - dst[dstOff + i + 1] = (byte) ((xL >> 8) & 0xff); - dst[dstOff + i + 2] = (byte) ((xL >> 16) & 0xff); - dst[dstOff + i + 3] = (byte) ((xL >> 24) & 0xff); - dst[dstOff + i + 4] = (byte) (xR & 0xff); - dst[dstOff + i + 5] = (byte) ((xR >> 8) & 0xff); - dst[dstOff + i + 6] = (byte) ((xR >> 16) & 0xff); - dst[dstOff + i + 7] = (byte) ((xR >> 24) & 0xff); - - xL = dataXL; - xR = dataXR; - } - - lastDecipherXL = xL; - lastDecipherXR = xR; -} -private void decipher(int xL, int xR, int[] xLxR) { - xL ^= P[17]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[16]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[15]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[14]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[13]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[12]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[11]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[10]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[9]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[8]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[7]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[6]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[5]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[4]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[3]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[2]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[1]; - xR ^= P[0]; - - xLxR[0] = xR; - xLxR[1] = xL; -} -public void encipher(byte[] src, int srcOff, byte[] dst, int dstOff, int len) { - int xL = lastEncipherXL; - int xR = lastEncipherXR; - - int[] xLxR = new int[2]; - - for (int i = 0; i < len; i = i + 8) { - xL ^= (src[srcOff + i] & 0xff) | ((src[srcOff + i + 1] & 0xff) << 8) | ((src[srcOff + i + 2] & 0xff) << 16) | ((src[srcOff + i + 3] & 0xff) << 24); - xR ^= (src[srcOff + i + 4] & 0xff) | ((src[srcOff + i + 5] & 0xff) << 8) | ((src[srcOff + i + 6] & 0xff) << 16) | ((src[srcOff + i + 7] & 0xff) << 24); - - encipher(xL, xR, xLxR); - - xL = xLxR[0]; - xR = xLxR[1]; - - dst[dstOff + i] = (byte) (xL & 0xff); - dst[dstOff + i + 1] = (byte) ((xL >> 8) & 0xff); - dst[dstOff + i + 2] = (byte) ((xL >> 16) & 0xff); - dst[dstOff + i + 3] = (byte) ((xL >> 24) & 0xff); - dst[dstOff + i + 4] = (byte) (xR & 0xff); - dst[dstOff + i + 5] = (byte) ((xR >> 8) & 0xff); - dst[dstOff + i + 6] = (byte) ((xR >> 16) & 0xff); - dst[dstOff + i + 7] = (byte) ((xR >> 24) & 0xff); - } - - lastEncipherXL = xL; - lastEncipherXR = xR; -} -private void encipher(int xL, int xR, int[] xLxR) { - xL ^= P[0]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[1]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[2]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[3]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[4]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[5]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[6]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[7]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[8]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[9]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[10]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[11]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[12]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[13]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[14]; - xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[15]; - xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[16]; - xR ^= P[17]; - - xLxR[0] = xR; - xLxR[1] = xL; -} -public void setKey(byte key[]) { - int data = 0; - int offset = 0; - - for (int i = 0; i < P.length; ++i) { - P[i] = INIT_DATA[offset++]; - } - - for (int i = 0; i < S.length; ++i) { - for (int j = 0; j < S[i].length; ++j) { - S[i][j] = INIT_DATA[offset++]; - } - } - - offset = 0; - for (int i = 0; i < P.length; ++i) { - data = 0; - for (int k = 0; k < 4; ++k) { - data = (data << 8) | (key[offset++] & 0xff); - if (offset >= key.length) { - offset = 0; - } - } - P[i] = P[i] ^ data; - } - - int[] lr = new int[] { 0, 0 }; - for (int i = 0; i < P.length; i += 2) { - encipher(lr[0], lr[1], lr); - P[i] = lr[0]; - P[i + 1] = lr[1]; - } - - for (int i = 0; i < S.length; ++i) { - for (int j = 0; j < S[i].length; j += 2) { - encipher(lr[0], lr[1], lr); - S[i][j] = lr[0]; - S[i][j + 1] = lr[1]; - } - } - - lastEncipherXL = 0; - lastEncipherXR = 0; - lastDecipherXL = 0; - lastDecipherXR = 0; -} -} diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/CVSSSHMessages.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/CVSSSHMessages.java deleted file mode 100644 index 43b6f3532..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/CVSSSHMessages.java +++ /dev/null @@ -1,46 +0,0 @@ -/********************************************************************** - * Copyright (c) 2005 IBM Corporation and others. All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM - Initial API and implementation - **********************************************************************/ -package org.eclipse.team.internal.ccvs.ssh; - -import org.eclipse.osgi.util.NLS; - -public class CVSSSHMessages extends NLS { - private static final String BUNDLE_NAME = "org.eclipse.team.internal.ccvs.ssh.messages";//$NON-NLS-1$ - - public static String closed; - public static String stream; - - public static String Client_packetType; - public static String Client_notConnected; - public static String Client_cipher; - public static String Client_socketClosed; - public static String Client_authenticationFailed; - public static String Client_socket; - public static String Client_disconnectDescription; - public static String Client_noDisconnectDescription; - public static String Client_sshProtocolVersion; - public static String Client_hostIdChanged; - public static String Client_addedHostKey; - - public static String ServerPacket_crc; - - public static String SSHServerConnection_authenticating; - - public static String Misc_missingMD5; - - public static String KnownHosts_8; - public static String KnownHosts_9; - public static String KnownHosts_10; - - static { - // load message values from bundle file - NLS.initializeMessages(BUNDLE_NAME, CVSSSHMessages.class); - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Cipher.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Cipher.java deleted file mode 100644 index bc58de1aa..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Cipher.java +++ /dev/null @@ -1,25 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.team.internal.ccvs.ssh; - -public abstract class Cipher { -public abstract void decipher(byte[] src, int srcPos, byte[] dst, int dstPos, int len); -public abstract void encipher(byte[] src, int srcPos, byte[] dst, int dstPos, int len); -public static Cipher getInstance(String algorithm) { - try { - Class c = Class.forName("org.eclipse.team.internal.ccvs.ssh." + algorithm); //$NON-NLS-1$ - return (Cipher) c.newInstance(); - } catch (Exception e) { - return null; - } -} -public abstract void setKey(byte[] key); -} diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Client.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Client.java deleted file mode 100644 index 05ada38bf..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Client.java +++ /dev/null @@ -1,709 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2009 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.team.internal.ccvs.ssh; - -/** - * An SSH 1.5 client.. - */ - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InterruptedIOException; -import java.io.OutputStream; -import java.math.BigInteger; -import java.net.Socket; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.osgi.util.NLS; -import org.eclipse.team.internal.ccvs.core.connection.CVSAuthenticationException; -import org.eclipse.team.internal.ccvs.core.util.Util; -import org.eclipse.team.internal.core.streams.PollingInputStream; -import org.eclipse.team.internal.core.streams.PollingOutputStream; -import org.eclipse.team.internal.core.streams.TimeoutOutputStream; - -public class Client { - // client identification string - private static final String clientId = "SSH-1.5-Java 1.2.2\n"; //$NON-NLS-1$ - - // server identification string - private static String serverId = null; - - // maximum outgoing packet size - private static final int MAX_CLIENT_PACKET_SIZE = 1024; - - // packet types - private static final int SSH_MSG_DISCONNECT = 1; - private static final int SSH_SMSG_PUBLIC_KEY = 2; - private static final int SSH_CMSG_SESSION_KEY = 3; - private static final int SSH_CMSG_USER = 4; - private static final int SSH_CMSG_AUTH_PASSWORD = 9; - private static final int SSH_CMSG_REQUEST_PTY = 10; - private static final int SSH_CMSG_EXEC_SHELL = 12; - private static final int SSH_CMSG_EXEC_CMD = 13; - private static final int SSH_SMSG_SUCCESS = 14; - private static final int SSH_SMSG_FAILURE = 15; - private static final int SSH_CMSG_STDIN_DATA = 16; - private static final int SSH_SMSG_STDOUT_DATA = 17; - private static final int SSH_SMSG_STDERR_DATA = 18; - private static final int SSH_SMSG_EXITSTATUS = 20; - private static final int SSH_CMSG_EXIT_CONFIRMATION = 33; - private static final int SSH_MSG_DEBUG = 36; - - // cipher names - private static String[] cipherNames = { "None", "IDEA", "DES", "3DES", "TSS", "RC4", "Blowfish" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ - - // cipher types - private static int SSH_CIPHER_BLOWFISH = 6; - - // preferred cipher types - private int[] preferredCipherTypes = { SSH_CIPHER_BLOWFISH }; - - private String host; - private int port; - private String username; - private String password; - private String command; - - private Socket socket; - /* package */ InputStream socketIn; - private PollingOutputStream socketOut; - private InputStream is; - private OutputStream os; - private boolean connected = false; - private int timeout = -1; - - private Cipher cipher = null; - - class StandardInputStream extends InputStream { - private ServerPacket packet = null; - private InputStream buffer = null; - private boolean atEnd = false; - private boolean closed = false; - - public int available() throws IOException { - if (closed) { - throw new IOException(CVSSSHMessages.closed); - } - - int available = buffer == null ? 0 : buffer.available(); - - if (available == 0 && socketIn.available() > 0) { - fill(); - if (atEnd) { - return 0; - } - available = buffer.available(); - } - - return available; - } - - public void close() throws IOException { - if (!closed) { - closed = true; - if (packet != null) { - packet.close(false); - buffer = null; - packet = null; - } - } - } - - public int read() throws IOException { - if (closed) { - throw new IOException(CVSSSHMessages.closed); - } - - if (atEnd) { - return -1; - } - - if (buffer == null || buffer.available() == 0) { - fill(); - if (atEnd) { - return -1; - } - } - - return buffer.read(); - } - - public int read(byte b[], int off, int len) throws IOException { - if (closed) { - throw new IOException(CVSSSHMessages.closed); - } - - if (atEnd) { - return -1; - } - - if (buffer == null || buffer.available() == 0) { - fill(); - if (atEnd) { - return -1; - } - } - - return buffer.read(b, off, len); - } - - private void fill() throws IOException { - if (buffer != null) { - buffer.close(); - } - - packet = skip_SSH_MSG_DEBUG(); - int packetType = packet.getType(); - - switch (packetType) { - case SSH_SMSG_STDOUT_DATA : - case SSH_SMSG_STDERR_DATA : - case SSH_MSG_DEBUG : - buffer = packet.getInputStream(); - Misc.readInt(buffer); - break; - case SSH_SMSG_EXITSTATUS : - buffer = null; - atEnd = true; - InputStream pis = packet.getInputStream(); - Misc.readInt(pis); - pis.close(); - send(SSH_CMSG_EXIT_CONFIRMATION, null); - break; - case SSH_MSG_DISCONNECT : - buffer = null; - atEnd = true; - handleDisconnect(packet.getInputStream()); - break; - default : - throw new IOException(NLS.bind(CVSSSHMessages.Client_packetType, (new Object[] {new Integer(packetType)}))); - } - } - - private void handleDisconnect(InputStream in) throws IOException { - String description = null; - try { - description = Misc.readString(in); - } catch (IOException e) { - // ignore - } finally { - in.close(); - } - - // Log the description provided by the server - if (description == null) { - description = CVSSSHMessages.Client_noDisconnectDescription; - } - - // Throw an IOException with the proper text - throw new IOException(NLS.bind(CVSSSHMessages.Client_disconnectDescription, (new Object[] {description}))); - } - } - - class StandardOutputStream extends OutputStream { - private int MAX_BUFFER_SIZE = MAX_CLIENT_PACKET_SIZE; - private byte[] buffer = new byte[MAX_BUFFER_SIZE]; - private int bufpos = 0; - private boolean closed = false; - - public void close() throws IOException { - if (!closed) { - try { - flush(); - } finally { - closed = true; - } - } - } - - public void flush() throws IOException { - if (closed) { - throw new IOException(CVSSSHMessages.closed); - } - - if (bufpos > 0) { - send(SSH_CMSG_STDIN_DATA, buffer, 0, bufpos); - bufpos = 0; - } - } - - public void write(int b) throws IOException { - if (closed) { - throw new IOException(CVSSSHMessages.closed); - } - - buffer[bufpos++] = (byte) b; - - if (bufpos == MAX_BUFFER_SIZE) { - flush(); - } - } - - public void write(byte b[], int off, int len) throws IOException { - if (closed) { - throw new IOException(CVSSSHMessages.closed); - } - - int bytesWritten = 0; - int totalBytesWritten = 0; - - if (bufpos > 0) { - bytesWritten = Math.min(MAX_BUFFER_SIZE - bufpos, len); - System.arraycopy(b, off, buffer, bufpos, bytesWritten); - bufpos += bytesWritten; - totalBytesWritten += bytesWritten; - - if (bufpos == MAX_BUFFER_SIZE) { - flush(); - } - } - - while (len - totalBytesWritten >= MAX_BUFFER_SIZE) { - send(SSH_CMSG_STDIN_DATA, b, off + totalBytesWritten, MAX_BUFFER_SIZE); - totalBytesWritten += MAX_BUFFER_SIZE; - } - - if (totalBytesWritten < len) { - bytesWritten = len - totalBytesWritten; - System.arraycopy(b, off + totalBytesWritten, buffer, 0, bytesWritten); - bufpos += bytesWritten; - } - } - } -public Client(String host, int port, String username, String password) { - this.host = host; - this.port = port; - this.username = username; - this.password = password; -} -public Client(String host, int port, String username, String password, String command) { - this(host, port, username, password); - this.command = command; -} -public Client(String host, int port, String username, String password, String command, int timeout) { - this(host, port, username, password, command); - this.timeout = timeout; -} -/** - * Close all streams and sockets. - */ -private void cleanup() throws IOException { - try { - if (is != null) - is.close(); - } finally { - try { - if (os != null) - os.close(); - } finally { - try { - if (socketIn != null) - socketIn.close(); - } finally { - try { - if (socketOut != null) - socketOut.close(); - } finally { - try { - if (socket != null) - socket.close(); - } finally { - socket = null; - } - } - } - } - } -} -/** - * Connect to the remote server. If an exception is thrown, the caller - * can asssume that all streams and sockets are closed. - */ -public void connect(IProgressMonitor monitor) throws IOException, CVSAuthenticationException { - // If we're already connected, just ignore the invokation - if (connected || monitor.isCanceled()) - return; - - // Otherwise, set up the connection - try { - PollingInputStream pollingInputStream = null; - // Create the socket (the socket should always be null here) - if (socket == null) { - try { - socket = Util.createSocket(host, port, monitor); - // Bug 36351: disable buffering and send bytes immediately - socket.setTcpNoDelay(true); - } catch (InterruptedIOException e) { - // If we get this exception, chances are the host is not responding - throw new InterruptedIOException(NLS.bind(CVSSSHMessages.Client_socket, (new Object[] {host}))); - - } - if (timeout >= 0) { - socket.setSoTimeout(1000); - } - pollingInputStream = new PollingInputStream(socket.getInputStream(), - timeout > 0 ? timeout : 1, monitor); - socketIn = new BufferedInputStream(pollingInputStream); - - socketOut = new PollingOutputStream(new TimeoutOutputStream( - socket.getOutputStream(), 8192 /*bufferSize*/, 1000 /*writeTimeout*/, 1000 /*closeTimeout*/), - timeout > 0 ? timeout : 1, monitor); - } - - // read the ssh server id. The socket creation may of failed if the - // server cannot accept our connection request. We don't expect the - // socket to be closed at this point. - // Don't allow cancellation during the initial handshake and login since this - // can potentially cause the SSH server to think that it is being hacked and - // disable the account. - socketOut.setIsCancellable(false /* don't allow cancellation */); - pollingInputStream.setIsCancellable(false); - StringBuffer buf = new StringBuffer(); - int c; - while ((c = socketIn.read()) != '\n') { - if (c == -1) - throw new IOException(CVSSSHMessages.Client_socketClosed); - buf.append((char) c); - } - serverId = buf.toString(); - - if (Policy.DEBUG_SSH_PROTOCOL) { - System.out.println("SSH > server ID: " + serverId); //$NON-NLS-1$ - System.out.println("SSH > client ID: " + clientId); //$NON-NLS-1$ - } - - if (!serverId.startsWith("SSH-1.")) { //$NON-NLS-1$ - String sshVersion = (serverId.startsWith("SSH-")? serverId:""); //$NON-NLS-1$ //$NON-NLS-2$ - throw new IOException(NLS.bind(CVSSSHMessages.Client_sshProtocolVersion, new String[] { sshVersion })); - } - - // send our id. - socketOut.write(clientId.getBytes()); - socketOut.flush(); - - login(); - - socketOut.setIsCancellable(true /* allow cancellation */); - pollingInputStream.setIsCancellable(true); - - // start a shell and enter interactive session or start by - // executing the given command. - if( command == null ) { - startShell(); - } else { - executeCommand(); - } - - is = new StandardInputStream(); - os = new StandardOutputStream(); - connected = true; - // If an exception occurs while connected, make sure we disconnect before passing the exception on - } finally { - if (! connected) cleanup(); - } -} -/** - * Terminate the connection to the server. - */ -public void disconnect() throws IOException { - if (Policy.DEBUG_SSH_PROTOCOL) { - System.out.println("Disconnecting."); //$NON-NLS-1$ - } - if (connected) { - connected = false; - try { - send(SSH_MSG_DISCONNECT, null); - } finally { - cleanup(); - } - } -} -public InputStream getInputStream() throws IOException { - if (!connected) { - throw new IOException(CVSSSHMessages.Client_notConnected); - } - - return is; -} -public OutputStream getOutputStream() throws IOException { - if (!connected) { - throw new IOException(CVSSSHMessages.Client_notConnected); - } - - return os; -} - -private void startShell() throws IOException { - ServerPacket packet = null; - int packetType; - - send_SSH_CMSG_REQUEST_PTY(); - - try { - packet = skip_SSH_MSG_DEBUG(); - packetType = packet.getType(); - - if (packetType != SSH_SMSG_SUCCESS) { - throw new IOException(NLS.bind(CVSSSHMessages.Client_packetType, (new Object[] {new Integer(packetType)}))); - } - } finally { - if (packet != null) { - packet.close(true /*perform crc check*/); - } - } - - send(SSH_CMSG_EXEC_SHELL, null); -} - -private void executeCommand() throws IOException { - send(SSH_CMSG_EXEC_CMD, command); -} - -private void login() throws IOException, CVSAuthenticationException { - ServerPacket packet = null; - int packetType; - - try { - packet = skip_SSH_MSG_DEBUG(); - packetType = packet.getType(); - - if (packetType != SSH_SMSG_PUBLIC_KEY) { - throw new IOException(NLS.bind(CVSSSHMessages.Client_packetType, (new Object[] {new Integer(packetType)}))); - } - - receive_SSH_SMSG_PUBLIC_KEY(packet); - } finally { - if (packet != null) { - packet.close(true); - } - } - - try { - packet = skip_SSH_MSG_DEBUG(); - packetType = packet.getType(); - - if (packetType != SSH_SMSG_SUCCESS) { - throw new IOException(NLS.bind(CVSSSHMessages.Client_packetType, (new Object[] {new Integer(packetType)}))); - } - } finally { - if (packet != null) { - packet.close(true); - } - } - - send(SSH_CMSG_USER, username); - - try { - packet = skip_SSH_MSG_DEBUG(); - packetType = packet.getType(); - - if (packetType != SSH_SMSG_FAILURE) { - throw new IOException(NLS.bind(CVSSSHMessages.Client_packetType, (new Object[] {new Integer(packetType)}))); - } - } finally { - if (packet != null) { - packet.close(true); - } - } - - send(SSH_CMSG_AUTH_PASSWORD, password); - - try { - packet = skip_SSH_MSG_DEBUG(); - packetType = packet.getType(); - - if (packetType == SSH_SMSG_FAILURE) { - throw new CVSAuthenticationException(CVSSSHMessages.Client_authenticationFailed, CVSAuthenticationException.RETRY); - } - - if (packetType != SSH_SMSG_SUCCESS) { - throw new IOException(NLS.bind(CVSSSHMessages.Client_packetType, (new Object[] {new Integer(packetType)}))); - } - } finally { - if (packet != null) { - packet.close(true); - } - } -} -private void receive_SSH_SMSG_PUBLIC_KEY(ServerPacket packet) throws IOException, CVSAuthenticationException { - InputStream pis = packet.getInputStream(); - - byte[] anti_spoofing_cookie = new byte[8]; - Misc.readFully(pis, anti_spoofing_cookie); - - byte[] server_key_bits = new byte[4]; - Misc.readFully(pis, server_key_bits); - - byte[] server_key_public_exponent = Misc.readMpInt(pis); - byte[] server_key_public_modulus = Misc.readMpInt(pis); - - byte[] host_key_bits = new byte[4]; - Misc.readFully(pis, host_key_bits); - - byte[] host_key_public_exponent = Misc.readMpInt(pis); - byte[] host_key_public_modulus = Misc.readMpInt(pis); - - byte[] protocol_flags = new byte[4]; - Misc.readFully(pis, protocol_flags); - - byte[] supported_ciphers_mask = new byte[4]; - Misc.readFully(pis, supported_ciphers_mask); - - byte[] supported_authentications_mask = new byte[4]; - Misc.readFully(pis, supported_authentications_mask); - - pis.close(); - - send_SSH_CMSG_SESSION_KEY(anti_spoofing_cookie, host_key_bits, server_key_public_modulus, host_key_public_modulus, supported_ciphers_mask, server_key_public_exponent, host_key_public_exponent); -} -void send(int packetType, String s) throws IOException { - byte[] data = s == null ? new byte[0] : s.getBytes("UTF-8"); //$NON-NLS-1$ - send(packetType, data, 0, data.length); -} -void send(int packetType, byte[] data, int off, int len) throws IOException { - data = data == null ? null : Misc.lengthEncode(data, off, len); - ClientPacket packet = new ClientPacket(packetType, data, cipher); - socketOut.write(packet.getBytes()); - socketOut.flush(); -} -private void send_SSH_CMSG_REQUEST_PTY() throws IOException { - byte packet_type = SSH_CMSG_REQUEST_PTY; - - byte[] termType = Misc.lengthEncode("dumb".getBytes(), 0, 4);//$NON-NLS-1$ - byte[] row = {0, 0, 0, 0}; - byte[] col = {0, 0, 0, 0}; - byte[] XPixels = {0, 0, 0, 0}; - byte[] YPixels = {0, 0, 0, 0}; - byte[] terminalModes = {0}; - - byte[] data = new byte[termType.length + row.length + col.length + XPixels.length + YPixels.length + terminalModes.length]; - - int offset = 0; - System.arraycopy(termType, 0, data, offset, termType.length); - - offset += termType.length; - System.arraycopy(row, 0, data, offset, row.length); - - offset += row.length; - System.arraycopy(col, 0, data, offset, col.length); - - offset += col.length; - System.arraycopy(XPixels, 0, data, offset, XPixels.length); - - offset += XPixels.length; - System.arraycopy(YPixels, 0, data, offset, YPixels.length); - - offset += YPixels.length; - System.arraycopy(terminalModes, 0, data, offset, terminalModes.length); - - ClientPacket packet = new ClientPacket(packet_type, data, cipher); - socketOut.write(packet.getBytes()); - socketOut.flush(); -} -private void send_SSH_CMSG_SESSION_KEY(byte[] anti_spoofing_cookie, byte[] host_key_bits, byte[] server_key_public_modulus, byte[] host_key_public_modulus, byte[] supported_ciphers_mask, byte[] server_key_public_exponent, byte[] host_key_public_exponent) throws IOException, CVSAuthenticationException { - byte packet_type = SSH_CMSG_SESSION_KEY; - - // session_id - byte[] session_id = new byte[host_key_public_modulus.length + server_key_public_modulus.length + anti_spoofing_cookie.length]; - - int offset = 0; - System.arraycopy(host_key_public_modulus, 0, session_id, offset, host_key_public_modulus.length); - - offset += host_key_public_modulus.length; - System.arraycopy(server_key_public_modulus, 0, session_id, offset, server_key_public_modulus.length); - - offset += server_key_public_modulus.length; - System.arraycopy(anti_spoofing_cookie, 0, session_id, offset, anti_spoofing_cookie.length); - - session_id = Misc.md5(session_id); - - // cipher_type - byte cipher_type = 0; - boolean foundSupportedCipher = false; - - for (int i = 0; i < preferredCipherTypes.length && !foundSupportedCipher; ++i) { - cipher_type = (byte) preferredCipherTypes[i]; - foundSupportedCipher = (supported_ciphers_mask[3] & (byte) (1 << cipher_type)) != 0; - } - - if (!foundSupportedCipher) { - throw new IOException(CVSSSHMessages.Client_cipher); - } - - // session_key - byte[] session_key = new byte[32]; - byte[] session_key_xored = new byte[32]; - byte[] session_key_encrypted = null; - - Misc.random(session_key, 0, session_key.length, true); - System.arraycopy(session_key, 0, session_key_xored, 0, session_key.length); - Misc.xor(session_key_xored, 0, session_id, 0, session_key_xored, 0, session_id.length); - - BigInteger host_e = new BigInteger(1, host_key_public_exponent); - BigInteger host_n = new BigInteger(1, host_key_public_modulus); - if (!new KnownHosts().verifyKey(host, host_key_bits, host_e, host_n)) { - throw new CVSAuthenticationException(CVSSSHMessages.Client_hostIdChanged, CVSAuthenticationException.NO_RETRY); - } - byte[] result; - if (new BigInteger(1,server_key_public_modulus).compareTo(host_n) == -1) { - result = Misc.encryptRSAPkcs1(session_key_xored, server_key_public_exponent, server_key_public_modulus); - result = Misc.encryptRSAPkcs1(result, host_key_public_exponent, host_key_public_modulus); - } else { - result = Misc.encryptRSAPkcs1(session_key_xored, host_key_public_exponent, host_key_public_modulus); - result = Misc.encryptRSAPkcs1(result, server_key_public_exponent, server_key_public_modulus); - } - - session_key_encrypted = new byte[result.length + 2]; - session_key_encrypted[1] = (byte) ((8 * result.length) & 0xff); - session_key_encrypted[0] = (byte) (((8 * result.length) >> 8) & 0xff); - - for (int i = 0; i < result.length; i++) { - session_key_encrypted[i + 2] = result[i]; - } - - // protocol_flags - byte[] protocol_flags = {0, 0, 0, 0}; - - // data - byte[] data = new byte[1 + anti_spoofing_cookie.length + session_key_encrypted.length + protocol_flags.length]; - - offset = 0; - data[offset++] = cipher_type; - - System.arraycopy(anti_spoofing_cookie, 0, data, offset, anti_spoofing_cookie.length); - - offset += anti_spoofing_cookie.length; - System.arraycopy(session_key_encrypted, 0, data, offset, session_key_encrypted.length); - - offset += session_key_encrypted.length; - System.arraycopy(protocol_flags, 0, data, offset, protocol_flags.length); - - // cipher - cipher = Cipher.getInstance(cipherNames[cipher_type]); - cipher.setKey(session_key); - - // packet - ClientPacket packet = new ClientPacket(packet_type, data, null); - socketOut.write(packet.getBytes()); - socketOut.flush(); -} - -ServerPacket skip_SSH_MSG_DEBUG() throws IOException { - ServerPacket packet = new ServerPacket(socketIn, cipher); - while (packet.getType() == SSH_MSG_DEBUG) { - packet.close(true); - packet = new ServerPacket(socketIn, cipher); - } - - return packet; -} -} diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ClientPacket.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ClientPacket.java deleted file mode 100644 index cbeb7fedd..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ClientPacket.java +++ /dev/null @@ -1,53 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.team.internal.ccvs.ssh; - -class ClientPacket extends Packet { - byte[] packet; -public ClientPacket(int type, byte[] data, Cipher cipher) { - packetLength = data == null ? 5 : data.length + 5; - paddingLength = 8 - (packetLength % 8); - packetType = type; - packet = new byte[4 + paddingLength + packetLength]; - - int packetOff = 0; - Misc.writeInt(packetLength, packet, packetOff); - packetOff += 4; - - if (cipher == null) { - for (int i = 0; i < paddingLength; i++) { - packet[packetOff++] = 0; - } - } else { - Misc.random(packet, packetOff, paddingLength, false); - packetOff += paddingLength; - } - - packet[packetOff++] = (byte) packetType; - - if (data != null) { - for (int i = 0; i < data.length; ++i) { - packet[packetOff++] = data[i]; - } - } - - long crc = Misc.crc32(packet, 4, packet.length - 8, 0); - Misc.writeInt((int) crc, packet, packetOff); - packetOff += 4; - - if (cipher != null) { - cipher.encipher(packet, 4, packet, 4, packet.length - 4); - } -} -public byte[] getBytes() { - return packet; -} -} diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/KnownHosts.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/KnownHosts.java deleted file mode 100644 index 3219d06b1..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/KnownHosts.java +++ /dev/null @@ -1,156 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.team.internal.ccvs.ssh; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.math.BigInteger; -import java.util.Vector; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; -import org.eclipse.osgi.util.NLS; - -/** - * I represent a database of known hosts usually placed in ~/.ssh/known_hosts - * on Unix/Linux systems. - * Currently, only RSA keys are supported, as these are the only keys we - * have to deal with during SSH1 key exchange. - */ -public class KnownHosts { - - private String filename; - - public KnownHosts() { - this.filename = KnownHosts.defaultFilename(); - } - - static String defaultFilename() { - if (!Platform.getOS().equals(Platform.OS_LINUX)) return internalFilename(); - String HOME = System.getProperty("user.home"); //$NON-NLS-1$ - if (HOME==null) return internalFilename(); - return HOME+"/.ssh/known_hosts"; //$NON-NLS-1$ - } - - private static String internalFilename() { - return SSHPlugin.getPlugin().getStateLocation().append("known_hosts").toOSString(); //$NON-NLS-1$ - } - - /** - * Verify if the public key for the specified host is known. - * If the public key matches, return true. - * If the key does not match, return false. - * If the key is not listed in <code>known_hosts</code>, or - * <code>known_hosts</code> does not exist, assume we are connecting - * to the authentic server, add the key, and return true. - * @param e key exponent - * @param n key modulus - * @return boolean whether the key is correct - */ - public boolean verifyKey(String hostname, byte[] host_key_bits, BigInteger e, BigInteger n) { - FileReader f; - BigInteger nbits = new BigInteger(1, host_key_bits); - try { - f= new FileReader(filename); - } catch (FileNotFoundException ex) { - createHostFile(); - addHost(hostname, nbits, e, n); - return true; - } - BufferedReader r = new BufferedReader(f); - try { - String line; - while ((line = r.readLine()) != null) { - if (line.trim().length()==0) continue; - if (line.startsWith("#")) continue; //$NON-NLS-1$ - String[] tokens=subStrings(line); - if (tokens.length==4 && Character.isDigit(tokens[1].charAt(0)) && tokens[0].equalsIgnoreCase(hostname)) { - if (nbits.equals(new BigInteger(tokens[1])) && e.equals(new BigInteger(tokens[2])) && n.equals(new BigInteger(tokens[3]))) { - f.close(); - return true; - } else { - f.close(); - return false; - } - } - } - f.close(); - addHost(hostname, nbits, e, n); - return true; - } catch (IOException ex) { - SSHPlugin.log(IStatus.ERROR, CVSSSHMessages.KnownHosts_8, ex); - return false; - } - } - - /* - * Append the host key information to known_hosts. - * Always assume the file exists. - */ - void addHost(String hostname, BigInteger key_bits, BigInteger e, BigInteger n) { - try { - FileWriter w = new FileWriter(defaultFilename(), true); - w.write(Character.LINE_SEPARATOR); - w.write(hostname + " " + key_bits.toString(10) + " " + e.toString(10) + " " + n.toString(10)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - w.close(); - String message = NLS.bind(CVSSSHMessages.Client_addedHostKey, (new String[] {hostname, defaultFilename()})); - SSHPlugin.log(IStatus.INFO, message, null); - } catch (IOException ex) { - SSHPlugin.log(IStatus.ERROR, CVSSSHMessages.KnownHosts_9, ex); - } - } - - /* - * Create the known_hosts file in the default location. - * Fail if the file can not be created (issue a warning in the log). - */ - void createHostFile() { - try { - File file = new File(defaultFilename()); - // Ensure the parent directory exists - File parentDir = file.getParentFile(); - parentDir.mkdirs(); - // Create the file - file.createNewFile(); - } catch (IOException ee) { - SSHPlugin.log(IStatus.ERROR, CVSSSHMessages.KnownHosts_10, ee); - } - - } - private static String[] subStrings(String s) { - Vector v = subStringsVector(s); - String[] substrings = new String[v.size()]; - v.copyInto(substrings); - return substrings; - } - private static Vector subStringsVector(String s) { - Vector v = new Vector(); - s = s.trim(); - if (s.length()==0) return v; - int first1 = s.indexOf(' '); - int first2 = s.indexOf('\t'); - int first; - if ((first1==-1)&&(first2==-1)) first=-1; - else if ((first1!=-1)&&(first2!=-1)) first = Math.min(first1, first2); - else if (first1!=-1) first=first1; else first=first2; - if (first==-1) { - v.add(s); - return v; - } - v.add(s.substring(0,first)); - v.addAll(subStringsVector(s.substring(first+1))); - return v; - } -} diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Misc.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Misc.java deleted file mode 100644 index 2341e3ce0..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Misc.java +++ /dev/null @@ -1,473 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.team.internal.ccvs.ssh; - -import java.io.IOException; -import java.io.InputStream; -import java.math.BigInteger; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.security.SecureRandom; - -import org.eclipse.osgi.util.NLS; - -class Misc { - private static MessageDigest md5 = null; - private static SecureRandom random = null; - private static long crc32_tab[] = { - 0x00000000L, - 0x77073096L, - 0xee0e612cL, - 0x990951baL, - 0x076dc419L, - 0x706af48fL, - 0xe963a535L, - 0x9e6495a3L, - 0x0edb8832L, - 0x79dcb8a4L, - 0xe0d5e91eL, - 0x97d2d988L, - 0x09b64c2bL, - 0x7eb17cbdL, - 0xe7b82d07L, - 0x90bf1d91L, - 0x1db71064L, - 0x6ab020f2L, - 0xf3b97148L, - 0x84be41deL, - 0x1adad47dL, - 0x6ddde4ebL, - 0xf4d4b551L, - 0x83d385c7L, - 0x136c9856L, - 0x646ba8c0L, - 0xfd62f97aL, - 0x8a65c9ecL, - 0x14015c4fL, - 0x63066cd9L, - 0xfa0f3d63L, - 0x8d080df5L, - 0x3b6e20c8L, - 0x4c69105eL, - 0xd56041e4L, - 0xa2677172L, - 0x3c03e4d1L, - 0x4b04d447L, - 0xd20d85fdL, - 0xa50ab56bL, - 0x35b5a8faL, - 0x42b2986cL, - 0xdbbbc9d6L, - 0xacbcf940L, - 0x32d86ce3L, - 0x45df5c75L, - 0xdcd60dcfL, - 0xabd13d59L, - 0x26d930acL, - 0x51de003aL, - 0xc8d75180L, - 0xbfd06116L, - 0x21b4f4b5L, - 0x56b3c423L, - 0xcfba9599L, - 0xb8bda50fL, - 0x2802b89eL, - 0x5f058808L, - 0xc60cd9b2L, - 0xb10be924L, - 0x2f6f7c87L, - 0x58684c11L, - 0xc1611dabL, - 0xb6662d3dL, - 0x76dc4190L, - 0x01db7106L, - 0x98d220bcL, - 0xefd5102aL, - 0x71b18589L, - 0x06b6b51fL, - 0x9fbfe4a5L, - 0xe8b8d433L, - 0x7807c9a2L, - 0x0f00f934L, - 0x9609a88eL, - 0xe10e9818L, - 0x7f6a0dbbL, - 0x086d3d2dL, - 0x91646c97L, - 0xe6635c01L, - 0x6b6b51f4L, - 0x1c6c6162L, - 0x856530d8L, - 0xf262004eL, - 0x6c0695edL, - 0x1b01a57bL, - 0x8208f4c1L, - 0xf50fc457L, - 0x65b0d9c6L, - 0x12b7e950L, - 0x8bbeb8eaL, - 0xfcb9887cL, - 0x62dd1ddfL, - 0x15da2d49L, - 0x8cd37cf3L, - 0xfbd44c65L, - 0x4db26158L, - 0x3ab551ceL, - 0xa3bc0074L, - 0xd4bb30e2L, - 0x4adfa541L, - 0x3dd895d7L, - 0xa4d1c46dL, - 0xd3d6f4fbL, - 0x4369e96aL, - 0x346ed9fcL, - 0xad678846L, - 0xda60b8d0L, - 0x44042d73L, - 0x33031de5L, - 0xaa0a4c5fL, - 0xdd0d7cc9L, - 0x5005713cL, - 0x270241aaL, - 0xbe0b1010L, - 0xc90c2086L, - 0x5768b525L, - 0x206f85b3L, - 0xb966d409L, - 0xce61e49fL, - 0x5edef90eL, - 0x29d9c998L, - 0xb0d09822L, - 0xc7d7a8b4L, - 0x59b33d17L, - 0x2eb40d81L, - 0xb7bd5c3bL, - 0xc0ba6cadL, - 0xedb88320L, - 0x9abfb3b6L, - 0x03b6e20cL, - 0x74b1d29aL, - 0xead54739L, - 0x9dd277afL, - 0x04db2615L, - 0x73dc1683L, - 0xe3630b12L, - 0x94643b84L, - 0x0d6d6a3eL, - 0x7a6a5aa8L, - 0xe40ecf0bL, - 0x9309ff9dL, - 0x0a00ae27L, - 0x7d079eb1L, - 0xf00f9344L, - 0x8708a3d2L, - 0x1e01f268L, - 0x6906c2feL, - 0xf762575dL, - 0x806567cbL, - 0x196c3671L, - 0x6e6b06e7L, - 0xfed41b76L, - 0x89d32be0L, - 0x10da7a5aL, - 0x67dd4accL, - 0xf9b9df6fL, - 0x8ebeeff9L, - 0x17b7be43L, - 0x60b08ed5L, - 0xd6d6a3e8L, - 0xa1d1937eL, - 0x38d8c2c4L, - 0x4fdff252L, - 0xd1bb67f1L, - 0xa6bc5767L, - 0x3fb506ddL, - 0x48b2364bL, - 0xd80d2bdaL, - 0xaf0a1b4cL, - 0x36034af6L, - 0x41047a60L, - 0xdf60efc3L, - 0xa867df55L, - 0x316e8eefL, - 0x4669be79L, - 0xcb61b38cL, - 0xbc66831aL, - 0x256fd2a0L, - 0x5268e236L, - 0xcc0c7795L, - 0xbb0b4703L, - 0x220216b9L, - 0x5505262fL, - 0xc5ba3bbeL, - 0xb2bd0b28L, - 0x2bb45a92L, - 0x5cb36a04L, - 0xc2d7ffa7L, - 0xb5d0cf31L, - 0x2cd99e8bL, - 0x5bdeae1dL, - 0x9b64c2b0L, - 0xec63f226L, - 0x756aa39cL, - 0x026d930aL, - 0x9c0906a9L, - 0xeb0e363fL, - 0x72076785L, - 0x05005713L, - 0x95bf4a82L, - 0xe2b87a14L, - 0x7bb12baeL, - 0x0cb61b38L, - 0x92d28e9bL, - 0xe5d5be0dL, - 0x7cdcefb7L, - 0x0bdbdf21L, - 0x86d3d2d4L, - 0xf1d4e242L, - 0x68ddb3f8L, - 0x1fda836eL, - 0x81be16cdL, - 0xf6b9265bL, - 0x6fb077e1L, - 0x18b74777L, - 0x88085ae6L, - 0xff0f6a70L, - 0x66063bcaL, - 0x11010b5cL, - 0x8f659effL, - 0xf862ae69L, - 0x616bffd3L, - 0x166ccf45L, - 0xa00ae278L, - 0xd70dd2eeL, - 0x4e048354L, - 0x3903b3c2L, - 0xa7672661L, - 0xd06016f7L, - 0x4969474dL, - 0x3e6e77dbL, - 0xaed16a4aL, - 0xd9d65adcL, - 0x40df0b66L, - 0x37d83bf0L, - 0xa9bcae53L, - 0xdebb9ec5L, - 0x47b2cf7fL, - 0x30b5ffe9L, - 0xbdbdf21cL, - 0xcabac28aL, - 0x53b39330L, - 0x24b4a3a6L, - 0xbad03605L, - 0xcdd70693L, - 0x54de5729L, - 0x23d967bfL, - 0xb3667a2eL, - 0xc4614ab8L, - 0x5d681b02L, - 0x2a6f2b94L, - 0xb40bbe37L, - 0xc30c8ea1L, - 0x5a05df1bL, - 0x2d02ef8dL - }; -static public long crc32(byte[] b, int off, int len) { - return crc32(b, off, len, 0); -} -/** - * Compute the crc Cyclic Redundancy Check, with the polynomial 0xedb88320, - * The polynomial is X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 - * We take it "backwards" and put the highest-order term in the lowest-order bit. - * The X^32 term is "implied"; the LSB is the X^31 term, etc. - * The X^0 term (usually shown as "+1") results in the MSB being 1. - * so the poly is 0x04c11db7 (used for Ethernet) - * The buf will be the Padding, Packet type, and Data fields. - * The crc is computed before any encryption. - * R =X^n * M rem P M message P polynomial crc R : crc calculated. - * T(x) = x^n * M(x) + R(x) property: T rem P = 0 - */ -static public long crc32(byte[] b, int off, int len, long crc32val) { - for (int i = 0; i < len; i++) { - crc32val = crc32_tab[(int) ((crc32val ^ b[off + i]) & 0xff)] ^ (crc32val >> 8); - } - - return crc32val; -} -static public byte[] lengthEncode(byte[] b, int off, int len) { - byte[] result = new byte[len + 4]; - writeInt(len, result, 0); - System.arraycopy(b, off, result, 4, len); - return result; -} -static public byte[] readMpInt(InputStream is) throws IOException { - int a = is.read(); - int b = is.read(); - - if(a == -1 || b == -1){ - throw new IOException(CVSSSHMessages.stream); - } - - int bits = ((a & 0xFF) << 8) + (b & 0xFF); - int bytes = (bits + 7) / 8; - - byte[] result = new byte[bytes]; - - readFully(is, result); - - return result; -} -public static byte[] md5(byte[] b) throws IOException { - if (md5 == null) { - try { - md5 = MessageDigest.getInstance("MD5");//$NON-NLS-1$ - } catch (NoSuchAlgorithmException e) { - throw new IOException(NLS.bind(CVSSSHMessages.Misc_missingMD5, new String[] { e.getMessage() })); - } - } - - return md5.digest(b); -} -public static byte[] md5(String s) throws IOException { - return md5(s.getBytes()); -} -public static void readFully(InputStream is, byte[] b) throws IOException { - readFully(is, b, 0, b.length); -} -public static void readFully(InputStream is, byte[] b, int off, int len) throws IOException { - int bytesRead = 0; - int totalBytesRead = 0; - - while (totalBytesRead < len) { - bytesRead = is.read(b, totalBytesRead + off, len - totalBytesRead); - - if (bytesRead == -1) { - throw new IOException(CVSSSHMessages.stream); - } - - totalBytesRead += bytesRead; - } -} -public static int readInt(byte[] arr, int off) { - int a = arr[off] & 0xff; - int b = arr[off + 1] & 0xff; - int c = arr[off + 2] & 0xff; - int d = arr[off + 3] & 0xff; - - return (a << 24) + (b << 16) + (c << 8) + d; -} -public static int readInt(InputStream is) throws IOException { - int a = is.read(); - int b = is.read(); - int c = is.read(); - int d = is.read(); - - if (a == -1 || b == -1 || c == -1 || d == -1) { - throw new IOException(CVSSSHMessages.stream); - } - - return (a << 24) + (b << 16) + (c << 8) + d; -} -public static String readString(InputStream is) throws IOException { - int size = Misc.readInt(is); - byte[] buffer = new byte[size]; - for (int i = 0; i < buffer.length; i++) { - int next = is.read(); - if (next == -1) { - throw new IOException(CVSSSHMessages.stream); - } else { - buffer[i] = (byte)next; - } - } - return new String(buffer); -} -public static void skipFully(InputStream is, long n) throws IOException { - while (n != 0) { - int b = is.read(); - - if (b == -1) { - if (n > 0) { - throw new IOException(CVSSSHMessages.stream); - } - - return; - } - - --n; - } -} -public static void writeInt(int i, byte[] b, int off) { - b[off] = (byte) ((i >> 24) & 0xff); - b[off + 1] = (byte) ((i >> 16) & 0xff); - b[off + 2] = (byte) ((i >> 8) & 0xff); - b[off + 3] = (byte) (i & 0xff); -} -static public void xor(byte[] src_a, int off_a, byte[] src_b, int off_b, byte[] dst, int dst_off, int len) { - for(int i = 0; i < len; ++i){ - dst[i + dst_off] = (byte) (src_a[i + off_a] ^ src_b[i + off_b]); - } -} -static public void random(byte[] b, int off, int len, boolean allowZeroBytes) { - if (random == null) { - try { - random = SecureRandom.getInstance("SHA1PRNG");//$NON-NLS-1$ - } catch (NoSuchAlgorithmException e) { - // If SHA1PRNG is not available, just use the default - random = new SecureRandom(); - } - } - - for(int i = off; i < off + len; ++i){ - do { - b[i] = (byte) random.nextInt(); - } while(!allowZeroBytes && b[i] == 0); - } -} -static public byte[] encryptRSAPkcs1(byte[] data, byte[] public_key_exponent, byte[] public_key_modulus) { - byte[] block; - - int offset = 0; - block = new byte[public_key_modulus.length]; - block[offset++] = 0; - block[offset++] = 2; - - Misc.random(block, offset, block.length - data.length - 3, false); - offset += block.length - data.length - 3; - - block[offset++] = 0; - - for (int i = 0; i < data.length; i++){ - block[offset++] = data[i]; - } - - BigInteger m, e, message; - byte[] messageByte; - - m = new BigInteger(1, public_key_modulus); - e = new BigInteger(1, public_key_exponent); - message = new BigInteger(1, block); - message = message.modPow(e, m); - - byte[] messageByteTemp = message.toByteArray(); - messageByte = new byte[public_key_modulus.length]; - - int tempOffset = 0; - while (messageByteTemp[tempOffset] == 0){ - tempOffset++; - } - - for (int i = messageByte.length - messageByteTemp.length + tempOffset; i < messageByte.length; i++){ - messageByte[i] = messageByteTemp[tempOffset++]; - } - - return messageByte; -} -} diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Packet.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Packet.java deleted file mode 100644 index 94d472641..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Packet.java +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.team.internal.ccvs.ssh; - -class Packet { - protected int packetLength; - protected int paddingLength; - protected int packetType; -public int getType() { - return packetType; -} -} diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Policy.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Policy.java deleted file mode 100644 index d06f04028..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Policy.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2014 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.team.internal.ccvs.ssh; - -import org.eclipse.osgi.service.debug.DebugOptions; -import org.eclipse.osgi.service.debug.DebugOptionsListener; - -public class Policy { - // debug constants - public static boolean DEBUG_SSH_PROTOCOL = false; - - static final DebugOptionsListener DEBUG_OPTIONS_LISTENER = new DebugOptionsListener() { - public void optionsChanged(DebugOptions options) { - boolean DEBUG = options.getBooleanOption(SSHPlugin.ID + "/debug", false); //$NON-NLS-1$ - DEBUG_SSH_PROTOCOL = DEBUG && options.getBooleanOption(SSHPlugin.ID + "/ssh_protocol", false); //$NON-NLS-1$ - } - }; -} diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHMethod.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHMethod.java deleted file mode 100644 index 6af5f9201..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHMethod.java +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.team.internal.ccvs.ssh; - -import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation; -import org.eclipse.team.internal.ccvs.core.IConnectionMethod; -import org.eclipse.team.internal.ccvs.core.IServerConnection; - -public class SSHMethod implements IConnectionMethod { - /** - * @see IConnectionMethod#getName - */ - public String getName() { - return "extssh";//$NON-NLS-1$ - } - - /** - * @see IConnectionMethod#createConnection - */ - public IServerConnection createConnection(ICVSRepositoryLocation repositoryRoot, String password) { - return new SSHServerConnection(repositoryRoot, password); - } - - public void disconnect(ICVSRepositoryLocation location) { - } -} diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHPlugin.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHPlugin.java deleted file mode 100644 index 9bbe51a78..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHPlugin.java +++ /dev/null @@ -1,68 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2014 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.team.internal.ccvs.ssh; - -import java.util.Hashtable; - -import org.eclipse.core.runtime.Plugin; -import org.eclipse.core.runtime.Status; -import org.eclipse.osgi.service.debug.DebugOptions; -import org.eclipse.osgi.service.debug.DebugOptionsListener; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceRegistration; - -public class SSHPlugin extends Plugin { - - public static String ID = "org.eclipse.team.cvs.ssh"; //$NON-NLS-1$ - - private static SSHPlugin instance; - - private ServiceRegistration debugRegistration; - - /** - * Log the given exception along with the provided message and severity indicator - */ - public static void log(int severity, String message, Throwable e) { - getPlugin().getLog().log(new Status(severity, ID, 0, message, e)); - } - - /** - * Constructor for SSHPlugin - */ - public SSHPlugin() { - super(); - instance = this; - } - - /** - * Method getPlugin. - */ - public static SSHPlugin getPlugin() { - return instance; - } - - public void start(BundleContext context) throws Exception { - super.start(context); - - // register debug options listener - Hashtable properties = new Hashtable(2); - properties.put(DebugOptions.LISTENER_SYMBOLICNAME, ID); - debugRegistration = context.registerService(DebugOptionsListener.class, Policy.DEBUG_OPTIONS_LISTENER, properties); - } - - public void stop(BundleContext context) throws Exception { - super.stop(context); - - // unregister debug options listener - debugRegistration.unregister(); - debugRegistration = null; - } -} diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHServerConnection.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHServerConnection.java deleted file mode 100644 index 4ea043f05..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHServerConnection.java +++ /dev/null @@ -1,89 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.team.internal.ccvs.ssh; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation; -import org.eclipse.team.internal.ccvs.core.IServerConnection; -import org.eclipse.team.internal.ccvs.core.connection.CVSAuthenticationException; - -public class SSHServerConnection implements IServerConnection { - - // command to start remote cvs in server mode - private static final String INVOKE_SVR_CMD = "cvs server"; //$NON-NLS-1$ - - private static final int DEFAULT_PORT = 22; - - // cvs format for the repository (e.g. :extssh:user@host:/home/cvs/repo) - private ICVSRepositoryLocation location; - - // password for user specified in repository location string - private String password; - - // incoming from remote host - InputStream inputStream; - - // outgoing to remote host - OutputStream outputStream; - - // ssh client - Client client; - - public SSHServerConnection(ICVSRepositoryLocation location, String password) { - if (password == null) { - password = ""; //$NON-NLS-1$ - } - this.location = location; - this.password = password; - } - - public void close() throws IOException { - client.disconnect(); - } - /** - * Returns the <code>InputStream</code> used to read data from the - * server. - */ - public InputStream getInputStream() { - return inputStream; - } - /** - * Returns the <code>OutputStream</code> used to send data to the - * server. - */ - public OutputStream getOutputStream() { - return outputStream; - } - - /** - * Opens the connection and invokes cvs in server mode. - * - * @see Connection.open() - */ - public void open(IProgressMonitor monitor) throws IOException, CVSAuthenticationException { - monitor.subTask(CVSSSHMessages.SSHServerConnection_authenticating); - monitor.worked(1); - String hostname = location.getHost(); - String username = location.getUsername(); - int port = location.getPort(); - if (port == ICVSRepositoryLocation.USE_DEFAULT_PORT) - port = DEFAULT_PORT; - // create the connection using host, username, and password - client = new Client(hostname, port, username, password, INVOKE_SVR_CMD, location.getTimeout()); - client.connect(monitor); - inputStream = client.getInputStream(); - outputStream = client.getOutputStream(); - } -} diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ServerPacket.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ServerPacket.java deleted file mode 100644 index d20f827fd..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ServerPacket.java +++ /dev/null @@ -1,164 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.team.internal.ccvs.ssh; - -import java.io.FilterInputStream; -import java.io.IOException; -import java.io.InputStream; - -class ServerPacket extends Packet { - private PacketInputStream pis = null; - - private static class PacketInputStream extends FilterInputStream { - private static int MAX_BUFFER_SIZE = 1024; - - private byte[] buffer = new byte[MAX_BUFFER_SIZE]; - private int bufpos = 0; - private int buflen = 0; - private int bufrem = 0; - - private long remaining = 0; - private Cipher cipher = null; - - private long crc = 0; - private boolean closed = false; - - public PacketInputStream(InputStream in, long length, Cipher cipher) { - super(in); - - this.remaining = length; - this.cipher = cipher; - } - - public int available() throws IOException { - if (closed) { - throw new IOException(CVSSSHMessages.closed); - } - - return (int) Math.min(remaining - 4, Integer.MAX_VALUE); - } - - public void close() throws IOException { - close(true); - } - - public void close(boolean doCrcCheck) throws IOException { - if (!closed) { - try { - long toRead = doCrcCheck ? remaining - 4 : remaining; - - try { - Misc.skipFully(this, toRead); - } catch(IOException e) { - // we tried our best, keep going - } - - if(doCrcCheck) { - if ((int) crc != Misc.readInt(buffer, bufpos)) { - throw new IOException(CVSSSHMessages.ServerPacket_crc); - } - } - } finally { - closed = true; - } - } - } - - private void fill() throws IOException { - if (bufrem > 0) { - System.arraycopy(buffer, bufpos, buffer, 0, bufrem); - } - - int totalBytesRead = bufrem; - int read = 0; - int toRead = (int)Math.min(remaining - totalBytesRead, MAX_BUFFER_SIZE - totalBytesRead); - - while (toRead > 0) { - read = in.read(buffer, totalBytesRead, toRead); - - if (read == -1) { - throw new IOException(CVSSSHMessages.stream); - } - - totalBytesRead += read; - toRead -= read; - } - - bufpos = 0; - - buflen = (totalBytesRead / 8) * 8; - bufrem = totalBytesRead - buflen; - - if (cipher != null) { - cipher.decipher(buffer, 0, buffer, 0, buflen); - } - - crc = Misc.crc32(buffer, 0, buflen == remaining ? buflen - 4 : buflen, crc); - } - - public int read() throws IOException { - if (closed) { - throw new IOException(CVSSSHMessages.closed); - } - - if (remaining - 4 == 0) { - return -1; - } - - if (bufpos == buflen) { - fill(); - } - - int b = buffer[bufpos] & 0xff; - - ++bufpos; - --remaining; - - return b; - } - - public int read(byte b[], int off, int len) throws IOException { - if (closed) { - throw new IOException(CVSSSHMessages.closed); - } - - if (remaining - 4 == 0) { - return -1; - } - - if (bufpos == buflen) { - fill(); - } - - len = Math.min(len, (buflen == remaining + bufpos ? buflen - 4 : buflen) - bufpos); - - System.arraycopy(buffer, bufpos, b, off, len); - - bufpos += len; - remaining -= len; - - return len; - } - } -public ServerPacket(InputStream is, Cipher cipher) throws java.io.IOException { - packetLength = Misc.readInt(is); - paddingLength = 8 - (packetLength % 8); - pis = new PacketInputStream(is, packetLength + paddingLength, cipher); - Misc.skipFully(pis, paddingLength); - packetType = (byte) pis.read(); -} -public void close(boolean doCrcCheck) throws IOException { - pis.close(doCrcCheck); -} -public InputStream getInputStream() { - return pis; -} -} diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/messages.properties b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/messages.properties deleted file mode 100644 index ea34f1289..000000000 --- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/messages.properties +++ /dev/null @@ -1,38 +0,0 @@ -############################################################################### -# Copyright (c) 2000, 2006 IBM Corporation and others. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License v1.0 -# which accompanies this distribution, and is available at -# http://www.eclipse.org/legal/epl-v10.html -# -# Contributors: -# IBM Corporation - initial API and implementation -############################################################################### - -# String resources for vcm.core.cvs.ssh -########################### - -closed=Closed -stream=Unexpected end of stream - -Client_packetType=unexpected packet type: {0} -Client_notConnected=Not connected -Client_cipher=Supported cipher not found -Client_socketClosed=Connection closed by server -Client_authenticationFailed=Invalid username, password, host or repository -Client_socket=Cannot connect to host: {0} -Client_disconnectDescription=SSH server disconnected: {0} -Client_noDisconnectDescription=No reason could be obtained. -Client_sshProtocolVersion=Unsupported SSH protocol version: {0} -Client_hostIdChanged=The server host key does not match the key previously stored. Either the host key has changed or there is a man-in-the-middle attack. Contact the server administrator -Client_addedHostKey=Host key for {0} was not found in the list of known hosts stored in {1}. The key is being automatically added to the known_hosts file for you. This key, which is like a personal signature, is used by Eclipse to guarantee that the host it is communicating with is the correct one. If the Eclipse client detects a change in this key you will be notified. - -ServerPacket_crc=crc error - -SSHServerConnection_authenticating=Authenticating over extssh - -Misc_missingMD5=The MD5 encryption algorithm is required but not available: {0} - -KnownHosts_8=Error reading host key file -KnownHosts_9=Error writing host key file -KnownHosts_10=Error creating host key file |