DTLSReliableHandshake(TlsContext context, DTLSRecordLayer transport) { this.recordLayer = transport; this.handshakeHash = new DeferredHash(); this.handshakeHash.init(context); }
void notifyHelloComplete() { this.handshakeHash = handshakeHash.notifyPRFDetermined(); }
void resetHandshakeMessagesDigest() { handshakeHash.reset(); }
this.recordStream.getHandshakeHash().sealHashAlgorithms(); hash = prepareFinishHash.getFinalHash(signatureAndHashAlgorithm.getHash());
TlsHandshakeHash prepareToFinish() { TlsHandshakeHash result = handshakeHash; this.handshakeHash = handshakeHash.stopTracking(); return result; }
public void write(byte[] buf, int off, int len) throws IOException { handshakeHash.update(buf, off, len); } };
hash = prepareFinishHash.getFinalHash(signatureAlgorithm.getHash());
this.connection_state = CS_SERVER_HELLO_DONE; this.recordStream.getHandshakeHash().sealHashAlgorithms();
static void trackHashAlgorithms(TlsHandshakeHash handshakeHash, Vector supportedSignatureAlgorithms) { if (supportedSignatureAlgorithms != null) { for (int i = 0; i < supportedSignatureAlgorithms.size(); ++i) { SignatureAndHashAlgorithm signatureAndHashAlgorithm = (SignatureAndHashAlgorithm) supportedSignatureAlgorithms.elementAt(i); short hashAlgorithm = signatureAndHashAlgorithm.getHash(); handshakeHash.trackHashAlgorithm(hashAlgorithm); } } }
/** * 'sender' only relevant to SSLv3 */ protected static byte[] getCurrentPRFHash(TlsContext context, TlsHandshakeHash handshakeHash, byte[] sslSender) { Digest d = handshakeHash.forkPRFHash(); if (sslSender != null && TlsUtils.isSSL(context)) { d.update(sslSender, 0, sslSender.length); } byte[] bs = new byte[d.getDigestSize()]; d.doFinal(bs, 0); return bs; }
this.recordStream.getHandshakeHash().sealHashAlgorithms(); hash = prepareFinishHash.getFinalHash(signatureAndHashAlgorithm.getHash());
TlsHandshakeHash prepareToFinish() { TlsHandshakeHash result = handshakeHash; this.handshakeHash = handshakeHash.stopTracking(); return result; }
void updateHandshakeData(byte[] message, int offset, int len) { handshakeHash.update(message, offset, len); }
if (TlsUtils.isTLSv12(context)) hash = prepareFinishHash.getFinalHash(clientCertificateVerify.getAlgorithm().getHash());
this.connection_state = CS_SERVER_HELLO_DONE; this.recordStream.getHandshakeHash().sealHashAlgorithms();
static void trackHashAlgorithms(TlsHandshakeHash handshakeHash, Vector supportedSignatureAlgorithms) { if (supportedSignatureAlgorithms != null) { for (int i = 0; i < supportedSignatureAlgorithms.size(); ++i) { SignatureAndHashAlgorithm signatureAndHashAlgorithm = (SignatureAndHashAlgorithm) supportedSignatureAlgorithms.elementAt(i); short hashAlgorithm = signatureAndHashAlgorithm.getHash(); if (HashAlgorithm.isRecognized(hashAlgorithm)) { handshakeHash.trackHashAlgorithm(hashAlgorithm); } else //if (HashAlgorithm.isPrivate(hashAlgorithm)) { // TODO Support values in the "Reserved for Private Use" range } } } }
/** * 'sender' only relevant to SSLv3 */ protected static byte[] getCurrentPRFHash(TlsContext context, TlsHandshakeHash handshakeHash, byte[] sslSender) { Digest d = handshakeHash.forkPRFHash(); if (sslSender != null && TlsUtils.isSSL(context)) { d.update(sslSender, 0, sslSender.length); } byte[] bs = new byte[d.getDigestSize()]; d.doFinal(bs, 0); return bs; }
handshake.getHandshakeHash().sealHashAlgorithms(); hash = prepareFinishHash.getFinalHash(signatureAndHashAlgorithm.getHash());
TlsHandshakeHash prepareToFinish() { TlsHandshakeHash result = handshakeHash; this.handshakeHash = handshakeHash.stopTracking(); return result; }
DTLSReliableHandshake(TlsContext context, DTLSRecordLayer transport) { this.recordLayer = transport; this.handshakeHash = new DeferredHash(); this.handshakeHash.init(context); }