All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.named_data.jndn.HmacWithSha256Signature Maven / Gradle / Ivy

/**
 * Copyright (C) 2016-2019 Regents of the University of California.
 * @author: Jeff Thompson 
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see .
 * A copy of the GNU Lesser General Public License is in the file COPYING.
 */

package net.named_data.jndn;

import net.named_data.jndn.encoding.WireFormat;
import net.named_data.jndn.util.Blob;
import net.named_data.jndn.util.ChangeCounter;

/**
 * A HmacWithSha256Signature extends Signature and holds the signature bits and
 * other info representing an HmacWithSha256 signature in a packet.
 */
public class HmacWithSha256Signature extends Signature {
  /**
   * Create a new HmacWithSha256Signature with default values.
   */
  public HmacWithSha256Signature()
  {
  }

  /**
   * Create a new HmacWithSha256Signature with a copy of the fields in the given
   * signature object.
   * @param signature The signature object to copy.
   */
  public HmacWithSha256Signature(HmacWithSha256Signature signature)
  {
    signature_ = signature.signature_;
    keyLocator_.set(new KeyLocator(signature.getKeyLocator()));
  }

  /**
   * Return a new Signature which is a deep copy of this signature.
   * @return A new HmacWithSha256Signature.
   * @throws CloneNotSupportedException
   */
  public Object clone() throws CloneNotSupportedException
  {
    return new HmacWithSha256Signature(this);
  }

  /**
   * Get the signature bytes.
   * @return The signature bytes. If not specified, the value isNull().
   */
  public final Blob
  getSignature() { return signature_; }

  public final KeyLocator
  getKeyLocator() { return (KeyLocator)keyLocator_.get(); }

  /**
   * Set the signature bytes to the given value.
   * @param signature A Blob with the signature bytes.
   */
  public final void
  setSignature(Blob signature)
  {
    signature_ = (signature == null ? new Blob() : signature);
    ++changeCount_;
  }

  public final void
  setKeyLocator(KeyLocator keyLocator)
  {
    keyLocator_.set
      ((keyLocator == null ? new KeyLocator() : new KeyLocator(keyLocator)));
    ++changeCount_;
  }

  /**
   * Get the change count, which is incremented each time this object
   * (or a child object) is changed.
   * @return The change count.
   */
  public final long
  getChangeCount()
  {
    // Make sure each of the checkChanged is called.
    boolean changed = keyLocator_.checkChanged();
    if (changed)
      // A child object has changed, so update the change count.
      ++changeCount_;

    return changeCount_;
  }

  private Blob signature_ = new Blob();
  private final ChangeCounter keyLocator_ = new ChangeCounter(new KeyLocator());
  private long changeCount_ = 0;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy