UNPKG

ndn-js

Version:

A JavaScript client library for Named Data Networking

146 lines (132 loc) 4.82 kB
/** * This class represents an NDN Data Signature object. * Copyright (C) 2016-2019 Regents of the University of California. * @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; /** * A GenericSignature extends Signature and holds the encoding bytes of the * SignatureInfo so that the application can process experimental signature * types. When decoding a packet, if the type of SignatureInfo is not * recognized, the library creates a GenericSignature. * Create a new GenericSignature object, possibly copying values from another * object. * * @param {GenericSignature} value (optional) If value is a GenericSignature, * copy its values. * @constructor */ var GenericSignature = function GenericSignature(value) { if (typeof value === 'object' && value instanceof GenericSignature) { // Copy the values. this.signature_ = value.signature_; this.signatureInfoEncoding_ = value.signatureInfoEncoding_; this.typeCode_ = value.typeCode_; } else { this.signature_ = new Blob(); this.signatureInfoEncoding_ = new Blob(); this.typeCode_ = null; } this.changeCount_ = 0; }; exports.GenericSignature = GenericSignature; /** * Create a new GenericSignature which is a copy of this object. * @return {GenericSignature} A new object which is a copy of this object. */ GenericSignature.prototype.clone = function() { return new GenericSignature(this); }; /** * Get the data packet's signature bytes. * @return {Blob} The signature bytes. If not specified, the value isNull(). */ GenericSignature.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. */ GenericSignature.prototype.getSignatureAsBuffer = function() { return this.signature_.buf(); }; /** * Get the bytes of the entire signature info encoding (including the type * code). * @return {Blob} The encoding bytes. If not specified, the value isNull(). */ GenericSignature.prototype.getSignatureInfoEncoding = function() { return this.signatureInfoEncoding_; }; /** * Get the type code of the signature type. When wire decode calls * setSignatureInfoEncoding, it sets the type code. Note that the type code * is ignored during wire encode, which simply uses getSignatureInfoEncoding() * where the encoding already has the type code. * @return {number} The type code, or null if not known. */ GenericSignature.prototype.getTypeCode = function() { return this.typeCode_; }; /** * Set the data packet's signature bytes. * @param {Blob} signature */ GenericSignature.prototype.setSignature = function(signature) { this.signature_ = typeof signature === 'object' && signature instanceof Blob ? signature : new Blob(signature); ++this.changeCount_; }; /** * Set the bytes of the entire signature info encoding (including the type * code). * @param {Blob} signatureInfoEncoding A Blob with the encoding bytes. * @param {number} (optional) The type code of the signature type, or null if * not known. (When a GenericSignature is created by wire decoding, it sets * the typeCode.) */ GenericSignature.prototype.setSignatureInfoEncoding = function (signatureInfoEncoding, typeCode) { this.signatureInfoEncoding_ = typeof signatureInfoEncoding === 'object' && signatureInfoEncoding instanceof Blob ? signatureInfoEncoding : new Blob(signatureInfoEncoding); this.typeCode_ = typeCode; ++this.changeCount_; }; /** * Get the change count, which is incremented each time this object (or a child * object) is changed. * @return {number} The change count. */ GenericSignature.prototype.getChangeCount = function() { return this.changeCount_; }; /** * @@deprecated Use getSignature and setSignature. */ Object.defineProperty(GenericSignature.prototype, "signature", { get: function() { return this.getSignatureAsBuffer(); }, set: function(val) { this.setSignature(val); } });