Mercurial > 510Connectbot
comparison src/ch/ethz/ssh2/crypto/dh/EcDhExchange.java @ 313:1d400fd78e4a ganymed
add ecdsa key support everywhere
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Wed, 30 Jul 2014 16:19:33 -0700 |
parents | cb179051f0f2 |
children |
comparison
equal
deleted
inserted
replaced
312:1442be38051b | 313:1d400fd78e4a |
---|---|
25 /** | 25 /** |
26 * @author kenny | 26 * @author kenny |
27 * | 27 * |
28 */ | 28 */ |
29 public class EcDhExchange extends GenericDhExchange { | 29 public class EcDhExchange extends GenericDhExchange { |
30 | |
31 /* Client public and private */ | |
32 | |
30 private ECPrivateKey clientPrivate; | 33 private ECPrivateKey clientPrivate; |
31 private ECPublicKey clientPublic; | 34 private ECPublicKey clientPublic; |
35 | |
36 /* Server public */ | |
37 | |
32 private ECPublicKey serverPublic; | 38 private ECPublicKey serverPublic; |
39 private byte[] f; | |
33 | 40 |
34 @Override | 41 @Override |
35 public void init(String name) throws IOException { | 42 public void init(String name) throws IOException { |
36 final ECParameterSpec spec; | 43 final ECParameterSpec spec; |
37 | 44 |
76 return ECDSASHA2Verify.encodeECPoint(serverPublic.getW(), serverPublic.getParams() | 83 return ECDSASHA2Verify.encodeECPoint(serverPublic.getW(), serverPublic.getParams() |
77 .getCurve()); | 84 .getCurve()); |
78 } | 85 } |
79 | 86 |
80 @Override | 87 @Override |
88 public byte[] getF() { | |
89 return f; | |
90 } | |
91 | |
92 @Override | |
81 public void setF(byte[] f) throws IOException { | 93 public void setF(byte[] f) throws IOException { |
82 if (clientPublic == null) | 94 if (clientPublic == null) |
83 throw new IllegalStateException("DhDsaExchange not initialized!"); | 95 throw new IllegalStateException("DhDsaExchange not initialized!"); |
84 | 96 |
85 final KeyAgreement ka; | 97 final KeyAgreement ka; |
86 | 98 |
87 try { | 99 try { |
88 KeyFactory kf = KeyFactory.getInstance("EC"); | 100 KeyFactory kf = KeyFactory.getInstance("EC"); |
89 ECParameterSpec params = clientPublic.getParams(); | 101 ECParameterSpec params = clientPublic.getParams(); |
90 ECPoint serverPoint = ECDSASHA2Verify.decodeECPoint(f, params.getCurve()); | 102 ECPoint serverPoint = ECDSASHA2Verify.decodeECPoint(f, params.getCurve()); |
103 this.f = f; | |
91 this.serverPublic = (ECPublicKey) kf.generatePublic(new ECPublicKeySpec(serverPoint, | 104 this.serverPublic = (ECPublicKey) kf.generatePublic(new ECPublicKeySpec(serverPoint, |
92 params)); | 105 params)); |
93 ka = KeyAgreement.getInstance("ECDH"); | 106 ka = KeyAgreement.getInstance("ECDH"); |
94 ka.init(clientPrivate); | 107 ka.init(clientPrivate); |
95 ka.doPhase(serverPublic, true); | 108 ka.doPhase(serverPublic, true); |