/** * Writes one byte to the stream. * * @param b * The byte to be written. */ public void writeByte(final byte b) { writeBytes(new byte[] { b }); }
private byte[] getNonce(byte[] implicitNonce, byte[] explicitNonce) { DatagramWriter writer = new DatagramWriter(); writer.writeBytes(implicitNonce); writer.writeBytes(explicitNonce); return writer.toByteArray(); }
private static void writeBytes(final byte[] bytesToWrite, final DatagramWriter writer) { writer.write(bytesToWrite.length, 16); writer.writeBytes(bytesToWrite); }
@Override public byte[] fragmentToByteArray() { DatagramWriter writer = new DatagramWriter(); writer.writeBytes(verifyData); return writer.toByteArray(); }
@Override public byte[] fragmentToByteArray() { DatagramWriter writer = new DatagramWriter(); // TODO only true, if the public value encoding is explicit (not in the // client's certificate), see // http://tools.ietf.org/html/rfc4492#section-5.7 int length = pointEncoded.length; writer.write(length, LENGTH_BITS); writer.writeBytes(pointEncoded); return writer.toByteArray(); }
@Override public byte[] fragmentToByteArray() { DatagramWriter writer = new DatagramWriter(); writer.write(identityEncoded.length, IDENTITY_LENGTH_BITS); writer.writeBytes(identityEncoded); return writer.toByteArray(); }
@Override public byte[] fragmentToByteArray() { DatagramWriter writer = new DatagramWriter(); writer.write(hintEncoded.length, IDENTITY_HINT_LENGTH_BITS); writer.writeBytes(hintEncoded); return writer.toByteArray(); }
@Override public byte[] fragmentToByteArray() { DatagramWriter writer = new DatagramWriter(); writer.write(clientVersion.getMajor(), VERSION_BITS); writer.write(clientVersion.getMinor(), VERSION_BITS); writer.writeBytes(random.getRandomBytes()); writer.write(sessionId.length(), SESSION_ID_LENGTH_BITS); writer.writeBytes(sessionId.getId()); writer.write(cookie.length, COOKIE_LENGTH); writer.writeBytes(cookie); writer.write(cipherSuites.size() * 2, CIPHER_SUITS_LENGTH_BITS); writer.writeBytes(CipherSuite.listToByteArray(cipherSuites)); writer.write(compressionMethods.size(), COMPRESSION_METHODS_LENGTH_BITS); writer.writeBytes(CompressionMethod.listToByteArray(compressionMethods)); if (extensions != null) { writer.writeBytes(extensions.toByteArray()); } return writer.toByteArray(); }
public byte[] toByteArray() { if (extensions.isEmpty()) { return new byte[]{}; } else { DatagramWriter writer = new DatagramWriter(); writer.write(getLength(), LENGTH_BITS); for (HelloExtension extension : extensions) { writer.writeBytes(extension.toByteArray()); } return writer.toByteArray(); } }
@Override public byte[] fragmentToByteArray() { DatagramWriter writer = new DatagramWriter(); if (rawPublicKeyBytes == null) { writer.write(getMessageLength() - 3, CERTIFICATE_LIST_LENGTH); // the size of the certificate chain for (byte[] encoded : encodedChain) { // the size of the current certificate writer.write(encoded.length, CERTIFICATE_LENGTH_BITS); // the encoded current certificate writer.writeBytes(encoded); } } else { writer.write(rawPublicKeyBytes.length, CERTIFICATE_LENGTH_BITS); writer.writeBytes(rawPublicKeyBytes); } return writer.toByteArray(); }
@Override public byte[] fragmentToByteArray() { DatagramWriter writer = new DatagramWriter(); writer.write(serverVersion.getMajor(), VERSION_BITS); writer.write(serverVersion.getMinor(), VERSION_BITS); writer.writeBytes(random.getRandomBytes()); writer.write(sessionId.length(), SESSION_ID_LENGTH_BITS); writer.writeBytes(sessionId.getId()); writer.write(cipherSuite.getCode(), CIPHER_SUITE_BITS); writer.write(compressionMethod.getCode(), COMPRESSION_METHOD_BITS); if (extensions != null) { writer.writeBytes(extensions.toByteArray()); } return writer.toByteArray(); }
private void writeNamedCurve(DatagramWriter writer) { // http://tools.ietf.org/html/rfc4492#section-5.4 writer.write(NAMED_CURVE, CURVE_TYPE_BITS); writer.write(curveId, NAMED_CURVE_BITS); writer.write(pointEncoded.length, PUBLIC_LENGTH_BITS); writer.writeBytes(pointEncoded); // signature if (signatureEncoded != null) { // according to http://tools.ietf.org/html/rfc5246#section-A.7 the // signature algorithm must also be included writer.write(signatureAndHashAlgorithm.getHash().getCode(), HASH_ALGORITHM_BITS); writer.write(signatureAndHashAlgorithm.getSignature().getCode(), SIGNATURE_ALGORITHM_BITS); writer.write(signatureEncoded.length, SIGNATURE_LENGTH_BITS); writer.writeBytes(signatureEncoded); } }
@Override public byte[] fragmentToByteArray() { DatagramWriter writer = new DatagramWriter(); writer.write(serverVersion.getMajor(), VERSION_BITS); writer.write(serverVersion.getMinor(), VERSION_BITS); writer.write(cookie.length, COOKIE_LENGTH_BITS); writer.writeBytes(cookie); return writer.toByteArray(); }
@Override public byte[] fragmentToByteArray() { DatagramWriter writer = new DatagramWriter(); // according to http://tools.ietf.org/html/rfc5246#section-4.7 the // signature algorithm must also be included writer.write(signatureAndHashAlgorithm.getHash().getCode(), HASH_ALGORITHM_BITS); writer.write(signatureAndHashAlgorithm.getSignature().getCode(), SIGNATURE_ALGORITHM_BITS); writer.write(signatureBytes.length, SIGNATURE_LENGTH_BITS); writer.writeBytes(signatureBytes); return writer.toByteArray(); }
@Override protected void serializeHeader(final DatagramWriter writer, final MessageHeader header) { writer.write(VERSION, VERSION_BITS); writer.write(header.getType().value, TYPE_BITS); writer.write(header.getToken().length, TOKEN_LENGTH_BITS); writer.write(header.getCode(), CODE_BITS); writer.write(header.getMID(), MESSAGE_ID_BITS); writer.writeBytes(header.getToken()); } }
/** * Serializes a request to the wire format. * <p> * The main difference between this and the <em>serializeRequest</em> method is that this method * does <em>not</em> cache the byte array in the request's <em>bytes</em> property. * * @param request The request to serialize. * @return The encoded request. */ public final byte[] getByteArray(final Request request) { DatagramWriter writer = new DatagramWriter(); byte[] body = serializeOptionsAndPayload(request); MessageHeader header = new MessageHeader(CoAP.VERSION, request.getType(), request.getToken(), request.getRawCode(), request.getMID(), body.length); serializeHeader(writer, header); writer.writeBytes(body); return writer.toByteArray(); }
@Override protected void addExtensionData(final DatagramWriter writer) { if (serverNames == null) { writer.write(0, LENGTH_BITS); } else { writer.write(serverNames.getEncodedLength() + 2, LENGTH_BITS); //extension_length writer.write(serverNames.getEncodedLength(), LIST_LENGTH_BITS); //server_names_list_length for (ServerName serverName : serverNames) { writer.writeByte(serverName.getType().getCode()); // name type writer.write(serverName.getName().length, LENGTH_BITS); // name length writer.writeBytes(serverName.getName()); // name } } }
/** * Encodes this record into its corresponding <em>DTLSCiphertext</em> structure. * * @return a byte array containing the <em>DTLSCiphertext</em> structure */ public synchronized byte[] toByteArray() { DatagramWriter writer = new DatagramWriter(); writer.write(type.getCode(), CONTENT_TYPE_BITS); writer.write(version.getMajor(), VERSION_BITS); writer.write(version.getMinor(), VERSION_BITS); writer.write(epoch, EPOCH_BITS); writer.writeLong(sequenceNumber, SEQUENCE_NUMBER_BITS); length = fragmentBytes.length; writer.write(length, LENGTH_BITS); writer.writeBytes(fragmentBytes); return writer.toByteArray(); }
/** * Serializes empty messages and caches bytes on the emptyMessage object to skip future serializations. * * @param emptyMessage The message to serialize. * @return The object containing the serialized message. */ public final RawData serializeEmptyMessage(final EmptyMessage emptyMessage) { if (emptyMessage.getBytes() == null) { DatagramWriter writer = new DatagramWriter(); byte[] body = serializeOptionsAndPayload(emptyMessage); MessageHeader header = new MessageHeader(CoAP.VERSION, emptyMessage.getType(), emptyMessage.getToken(), 0, emptyMessage.getMID(), body.length); serializeHeader(writer, header); writer.writeBytes(body); byte[] bytes = writer.toByteArray(); emptyMessage.setBytes(bytes); } return new RawData(emptyMessage.getBytes(), emptyMessage.getDestination(), emptyMessage.getDestinationPort()); }
/** * Serializes response and caches bytes on the request object to skip future serializations. * * @param response The response to serialize. * @return The object containing the serialized response. */ public final RawData serializeResponse(final Response response) { if (response.getBytes() == null) { DatagramWriter writer = new DatagramWriter(); byte[] body = serializeOptionsAndPayload(response); MessageHeader header = new MessageHeader(CoAP.VERSION, response.getType(), response.getToken(), response.getCode().value, response.getMID(), body.length); serializeHeader(writer, header); writer.writeBytes(body); byte[] bytes = writer.toByteArray(); response.setBytes(bytes); } return new RawData(response.getBytes(), response.getDestination(), response.getDestinationPort()); }