diff options
author | Alan Young <consult.awy@gmail.com> | 2014-11-13 06:42:37 (GMT) |
---|---|---|
committer | Alan Young <consult.awy@gmail.com> | 2015-04-10 06:50:58 (GMT) |
commit | 7d2101b93b6253c3ea15b663f7f3dc385cb21364 (patch) | |
tree | d81338baf0d117e83cdc07f882cbedd9471e834d /src/com/isode/stroke/network | |
parent | a20ca7ba40d837abe228462be0aba5d32d6831e3 (diff) | |
download | stroke-7d2101b93b6253c3ea15b663f7f3dc385cb21364.zip stroke-7d2101b93b6253c3ea15b663f7f3dc385cb21364.tar.bz2 |
Checkpoint - A bunch of initial stuff for Android
MemoryStorages, Storages
NickManager, NickResolver
CryptoProvider, Hash, SafeByteArray, JavaCryptoProvider
CapsInfoGenerator, CapsManager, CapsMemoryStorage, CapsProvider,
CapsStorage, CapsInfo
CapsInfoSerializer, CapsInfoParser
ClientDiscoManager, DiscoInfoResponder, EntityCapsManager,
EntityCapsProvider
GetDiscoInfoRequest
ChatState, Idle
Presence, PayloadAddingPresenceSender, PresenceOracle,
SubscriptionManager
StatusSerializer, StatusShowSerializer, StatusParser, StatusShowParser,
Replace, ReplaceParser, ReplaceSerializer
SecurityLabel, SecurityLabelsCatalog, GetSecurityLabelsCatalogRequest
VCard, GetVCardRequest, SetVCardRequest, VCardManager,
VCardMemoryStorage, VCardStorage
RosterMemoryStorage, RosterPushResponder, RosterStorage,
SetRosterRequest
XMPPRoster, XMPPRosterController, XMPPRosterImpl, XMPPRosterItem
GetRosterRequest, SetResponder
Add parsers and serializers for Idle, VCard, PrivateStorage & Stroage.
Add
parser for Subject.
Add impromptu flag to MUCInvitation.
Update copyrights.
Change-Id: I9949f506b70e60b3a64f1dadde8f9b235b322e1d
Diffstat (limited to 'src/com/isode/stroke/network')
4 files changed, 104 insertions, 7 deletions
diff --git a/src/com/isode/stroke/network/JavaConnection.java b/src/com/isode/stroke/network/JavaConnection.java index f1d72bb..9b171d9 100644 --- a/src/com/isode/stroke/network/JavaConnection.java +++ b/src/com/isode/stroke/network/JavaConnection.java @@ -160,6 +160,7 @@ public class JavaConnection extends Connection implements EventOwner { if(selector_ != null) { try { selector_.close(); + selector_ = null; } catch (IOException e) { } } @@ -382,7 +383,7 @@ public class JavaConnection extends Connection implements EventOwner { private boolean disconnecting_ = false; private boolean disconnected_ = false; private SocketChannel socketChannel_; - private Selector selector_; + private volatile Selector selector_; private SelectionKey selectionKey_; private Worker worker_; diff --git a/src/com/isode/stroke/network/JavaCryptoProvider.java b/src/com/isode/stroke/network/JavaCryptoProvider.java new file mode 100644 index 0000000..b7dff5d --- /dev/null +++ b/src/com/isode/stroke/network/JavaCryptoProvider.java @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2011-2015 Isode Limited, London, England. + * All rights reserved. + */ +package com.isode.stroke.network; + +import java.security.InvalidKeyException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; + +import com.isode.stroke.base.ByteArray; +import com.isode.stroke.crypto.CryptoProvider; +import com.isode.stroke.crypto.Hash; +import com.isode.stroke.base.SafeByteArray; + +public class JavaCryptoProvider extends CryptoProvider { + + private static class HashProvider implements Hash { + private final MessageDigest digest; + + HashProvider(String algorithm) throws NoSuchAlgorithmException { + digest = MessageDigest.getInstance("SHA-1"); + } + + @Override + public Hash update(ByteArray data) { + digest.update(data.getData()); + return this; + } + + @Override + public Hash update(SafeByteArray data) { +// digest.update(data.getData()); + return this; + } + + @Override + public ByteArray getHash() { + return new ByteArray(digest.digest()); + } + + } + + @Override + public Hash createSHA1() { + try { + return new HashProvider("SHA-1"); + } catch (NoSuchAlgorithmException e) { + return null; + } + } + + @Override + public Hash createMD5() { + try { + return new HashProvider("MD5"); + } catch (NoSuchAlgorithmException e) { + return null; + } + } + +// @Override + public ByteArray getHMACSHA1(SafeByteArray key, ByteArray data) { + // TODO Auto-generated method stub + return null; + } + + @Override + public ByteArray getHMACSHA1(ByteArray key, ByteArray data) { + Mac mac; + try { + mac = Mac.getInstance("HmacSHA1"); + mac.init(new SecretKeySpec(key.getData(), mac.getAlgorithm())); + return new ByteArray(mac.doFinal(data.getData())); + } catch (NoSuchAlgorithmException e) { + return null; + } catch (InvalidKeyException e) { + return null; + } + } + + @Override + public boolean isMD5AllowedForCrypto() { + return false; + } + +} diff --git a/src/com/isode/stroke/network/JavaNetworkFactories.java b/src/com/isode/stroke/network/JavaNetworkFactories.java index aaffea3..2276a2a 100644 --- a/src/com/isode/stroke/network/JavaNetworkFactories.java +++ b/src/com/isode/stroke/network/JavaNetworkFactories.java @@ -1,9 +1,10 @@ /* - * Copyright (c) 2011-2013 Isode Limited, London, England. + * Copyright (c) 2011-2015 Isode Limited, London, England. * All rights reserved. */ package com.isode.stroke.network; +import com.isode.stroke.crypto.CryptoProvider; import com.isode.stroke.eventloop.EventLoop; import com.isode.stroke.tls.PlatformTLSFactories; import com.isode.stroke.tls.TLSContextFactory; @@ -16,6 +17,7 @@ public class JavaNetworkFactories implements NetworkFactories { connections_ = new JavaConnectionFactory(eventLoop_); dns_ = new PlatformDomainNameResolver(eventLoop_); platformTLSFactories_ = new PlatformTLSFactories(); + cryptoProvider_ = new JavaCryptoProvider(); } public TimerFactory getTimerFactory() { @@ -34,9 +36,15 @@ public class JavaNetworkFactories implements NetworkFactories { return platformTLSFactories_.getTLSContextFactory(); } + @Override + public CryptoProvider getCryptoProvider() { + return cryptoProvider_; + } + private final EventLoop eventLoop_; private final JavaTimerFactory timers_; private final JavaConnectionFactory connections_; private final PlatformDomainNameResolver dns_; private final PlatformTLSFactories platformTLSFactories_; + private final CryptoProvider cryptoProvider_; } diff --git a/src/com/isode/stroke/network/NetworkFactories.java b/src/com/isode/stroke/network/NetworkFactories.java index 678a3b7..fe20214 100644 --- a/src/com/isode/stroke/network/NetworkFactories.java +++ b/src/com/isode/stroke/network/NetworkFactories.java @@ -1,13 +1,10 @@ /* - * Copyright (c) 2011-2013 Isode Limited, London, England. - * All rights reserved. - */ -/* - * Copyright (c) 2010 Remko Tronçon. + * Copyright (c) 2010-2015 Isode Limited, London, England. * All rights reserved. */ package com.isode.stroke.network; +import com.isode.stroke.crypto.CryptoProvider; import com.isode.stroke.tls.TLSContextFactory; public interface NetworkFactories { @@ -16,5 +13,6 @@ public interface NetworkFactories { ConnectionFactory getConnectionFactory(); DomainNameResolver getDomainNameResolver(); TLSContextFactory getTLSContextFactory(); + CryptoProvider getCryptoProvider(); } |