Mercurial > 510Connectbot
comparison app/src/main/java/ch/ethz/ssh2/crypto/cipher/DESede.java @ 438:d29cce60f393
migrate from Eclipse to Android Studio
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Thu, 03 Dec 2015 11:23:55 -0800 |
parents | src/ch/ethz/ssh2/crypto/cipher/DESede.java@071eccdff8ea |
children |
comparison
equal
deleted
inserted
replaced
437:208b31032318 | 438:d29cce60f393 |
---|---|
1 package ch.ethz.ssh2.crypto.cipher; | |
2 | |
3 /* | |
4 This file was shamelessly taken (and modified) from the Bouncy Castle Crypto package. | |
5 Their licence file states the following: | |
6 | |
7 Copyright (c) 2000 - 2004 The Legion Of The Bouncy Castle | |
8 (http://www.bouncycastle.org) | |
9 | |
10 Permission is hereby granted, free of charge, to any person obtaining a copy | |
11 of this software and associated documentation files (the "Software"), to deal | |
12 in the Software without restriction, including without limitation the rights | |
13 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
14 copies of the Software, and to permit persons to whom the Software is | |
15 furnished to do so, subject to the following conditions: | |
16 | |
17 The above copyright notice and this permission notice shall be included in | |
18 all copies or substantial portions of the Software. | |
19 | |
20 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
21 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
22 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
23 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
24 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
25 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
26 THE SOFTWARE. | |
27 */ | |
28 | |
29 /** | |
30 * DESede. | |
31 * | |
32 * @author See comments in the source file | |
33 * @version 2.50, 03/15/10 | |
34 * | |
35 */ | |
36 public class DESede extends DES { | |
37 private int[] key1 = null; | |
38 private int[] key2 = null; | |
39 private int[] key3 = null; | |
40 | |
41 private boolean encrypt; | |
42 | |
43 /** | |
44 * standard constructor. | |
45 */ | |
46 public DESede() { | |
47 } | |
48 | |
49 /** | |
50 * initialise a DES cipher. | |
51 * | |
52 * @param encrypting | |
53 * whether or not we are for encryption. | |
54 * @param key | |
55 * the parameters required to set up the cipher. | |
56 * @exception IllegalArgumentException | |
57 * if the params argument is inappropriate. | |
58 */ | |
59 @Override | |
60 public void init(boolean encrypting, byte[] key) { | |
61 key1 = generateWorkingKey(encrypting, key, 0); | |
62 key2 = generateWorkingKey(!encrypting, key, 8); | |
63 key3 = generateWorkingKey(encrypting, key, 16); | |
64 encrypt = encrypting; | |
65 } | |
66 | |
67 @Override | |
68 public String getAlgorithmName() { | |
69 return "DESede"; | |
70 } | |
71 | |
72 @Override | |
73 public int getBlockSize() { | |
74 return 8; | |
75 } | |
76 | |
77 @Override | |
78 public void transformBlock(byte[] in, int inOff, byte[] out, int outOff) { | |
79 if (key1 == null) { | |
80 throw new IllegalStateException("DESede engine not initialised!"); | |
81 } | |
82 | |
83 if (encrypt) { | |
84 desFunc(key1, in, inOff, out, outOff); | |
85 desFunc(key2, out, outOff, out, outOff); | |
86 desFunc(key3, out, outOff, out, outOff); | |
87 } | |
88 else { | |
89 desFunc(key3, in, inOff, out, outOff); | |
90 desFunc(key2, out, outOff, out, outOff); | |
91 desFunc(key1, out, outOff, out, outOff); | |
92 } | |
93 } | |
94 | |
95 @Override | |
96 public void reset() { | |
97 } | |
98 } |