Exemplo n.º 1
0
        /// <summary>
        /// Encode the EncryptedContent in NDN-TLV and return the encoding.
        /// </summary>
        ///
        /// <param name="encryptedContent">The EncryptedContent object to encode.</param>
        /// <returns>A Blob containing the encoding.</returns>
        public override Blob encodeEncryptedContent(EncryptedContent encryptedContent)
        {
            TlvEncoder encoder = new TlvEncoder(256);
            int saveLength = encoder.getLength();

            // Encode backwards.
            encoder.writeBlobTlv(net.named_data.jndn.encoding.tlv.Tlv.Encrypt_EncryptedPayload, encryptedContent
                    .getPayload().buf());
            encoder.writeOptionalBlobTlv(net.named_data.jndn.encoding.tlv.Tlv.Encrypt_InitialVector,
                    encryptedContent.getInitialVector().buf());
            // Assume the algorithmType value is the same as the TLV type.
            encoder.writeNonNegativeIntegerTlv(net.named_data.jndn.encoding.tlv.Tlv.Encrypt_EncryptionAlgorithm,
                    encryptedContent.getAlgorithmType().getNumericType());
            Tlv0_2WireFormat.encodeKeyLocator(net.named_data.jndn.encoding.tlv.Tlv.KeyLocator,
                    encryptedContent.getKeyLocator(), encoder);

            encoder.writeTypeAndLength(net.named_data.jndn.encoding.tlv.Tlv.Encrypt_EncryptedContent,
                    encoder.getLength() - saveLength);

            return new Blob(encoder.getOutput(), false);
        }