UNPKG

ndn-js

Version:

A JavaScript client library for Named Data Networking

164 lines (148 loc) 5.54 kB
/** * This class represents an NDN Data Signature object. * Copyright (C) 2014-2019 Regents of the University of California. * @author: Meki Cheraoui * @author: Jeff Thompson <jefft0@remap.ucla.edu> * * 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 <http://www.gnu.org/licenses/>. * A copy of the GNU Lesser General Public License is in the file COPYING. */ /** @ignore */ var Blob = require('./util/blob.js').Blob; /** @ignore */ var ChangeCounter = require('./util/change-counter.js').ChangeCounter; /** @ignore */ var KeyLocator = require('./key-locator.js').KeyLocator; /** @ignore */ var ValidityPeriod = require('./security/validity-period.js').ValidityPeriod; /** * Create a new Sha256WithRsaSignature object, possibly copying values from * another object. * * @param {Sha256WithRsaSignature} value (optional) If value is a * Sha256WithRsaSignature, copy its values. If value is omitted, the keyLocator * is the default with unspecified values and the signature is unspecified. * @constructor */ var Sha256WithRsaSignature = function Sha256WithRsaSignature(value) { if (typeof value === 'object' && value instanceof Sha256WithRsaSignature) { // Copy the values. this.keyLocator_ = new ChangeCounter(new KeyLocator(value.getKeyLocator())); this.validityPeriod_ = new ChangeCounter(new ValidityPeriod (value.getValidityPeriod())); this.signature_ = value.signature_; } else { this.keyLocator_ = new ChangeCounter(new KeyLocator()); this.validityPeriod_ = new ChangeCounter(new ValidityPeriod()); this.signature_ = new Blob(); } this.changeCount_ = 0; }; exports.Sha256WithRsaSignature = Sha256WithRsaSignature; /** * Create a new Sha256WithRsaSignature which is a copy of this object. * @return {Sha256WithRsaSignature} A new object which is a copy of this object. */ Sha256WithRsaSignature.prototype.clone = function() { return new Sha256WithRsaSignature(this); }; /** * Get the key locator. * @return {KeyLocator} The key locator. */ Sha256WithRsaSignature.prototype.getKeyLocator = function() { return this.keyLocator_.get(); }; /** * Get the validity period. * @return {ValidityPeriod} The validity period. */ Sha256WithRsaSignature.prototype.getValidityPeriod = function() { return this.validityPeriod_.get(); }; /** * Get the data packet's signature bytes. * @return {Blob} The signature bytes. If not specified, the value isNull(). */ Sha256WithRsaSignature.prototype.getSignature = function() { return this.signature_; }; /** * @deprecated Use getSignature. This method returns a Buffer which is the former * behavior of getSignature, and should only be used while updating your code. */ Sha256WithRsaSignature.prototype.getSignatureAsBuffer = function() { return this.signature_.buf(); }; /** * Set the key locator to a copy of the given keyLocator. * @param {KeyLocator} keyLocator The KeyLocator to copy. */ Sha256WithRsaSignature.prototype.setKeyLocator = function(keyLocator) { this.keyLocator_.set(typeof keyLocator === 'object' && keyLocator instanceof KeyLocator ? new KeyLocator(keyLocator) : new KeyLocator()); ++this.changeCount_; }; /** * Set the validity period to a copy of the given ValidityPeriod. * @param {ValidityPeriod} validityPeriod The ValidityPeriod which is copied. */ Sha256WithRsaSignature.prototype.setValidityPeriod = function(validityPeriod) { this.validityPeriod_.set(typeof validityPeriod === 'object' && validityPeriod instanceof ValidityPeriod ? new ValidityPeriod(validityPeriod) : new ValidityPeriod()); ++this.changeCount_; }; /** * Set the data packet's signature bytes. * @param {Blob} signature */ Sha256WithRsaSignature.prototype.setSignature = function(signature) { this.signature_ = typeof signature === 'object' && signature instanceof Blob ? signature : new Blob(signature); ++this.changeCount_; }; /** * Get the change count, which is incremented each time this object (or a child * object) is changed. * @return {number} The change count. */ Sha256WithRsaSignature.prototype.getChangeCount = function() { // Make sure each of the checkChanged is called. var changed = this.keyLocator_.checkChanged(); changed = this.validityPeriod_.checkChanged() || changed; if (changed) // A child object has changed, so update the change count. ++this.changeCount_; return this.changeCount_; }; // Define properties so we can change member variable types and implement changeCount_. Object.defineProperty(Sha256WithRsaSignature.prototype, "keyLocator", { get: function() { return this.getKeyLocator(); }, set: function(val) { this.setKeyLocator(val); } }); /** * @@deprecated Use getSignature and setSignature. */ Object.defineProperty(Sha256WithRsaSignature.prototype, "signature", { get: function() { return this.getSignatureAsBuffer(); }, set: function(val) { this.setSignature(val); } });