code: function PublicKey(date=new Date()) {
    /**
     * Packet type
     * @type {module:enums.packet}
     */
    this.tag = enums.packet.publicKey;
    /**
     * Packet version
     * @type {Integer}
     */
    this.version = config.aead_protect && config.aead_protect_version === 4 ? 5 : 4;
    /**
     * Key creation date.
     * @type {Date}
     */
    this.created = util.normalizeDate(date);
    /**
     * Public key algorithm.
     * @type {String}
     */
    this.algorithm = null;
    /**
     * Algorithm specific params
     * @type {Array<Object>}
     */
    this.params = [];
    /**
     * Time until expiration in days (V3 only)
     * @type {Integer}
     */
    this.expirationTimeV3 = 0;
    /**
     * Fingerprint in lowercase hex
     * @type {String}
     */
    this.fingerprint = null;
    /**
     * Keyid
     * @type {module:type/keyid}
     */
    this.keyid = null;
  }
docs: Implementation of the Key Material Packet (Tag 5,6,7,14)
  
  {@link https://tools.ietf.org/html/rfc4880#section-5.5|RFC4480 5.5}:
  A key material packet contains all the information about a public or
  private key.  There are four variants of this packet type, and two
  major versions.
  
  A Public-Key packet starts a series of packets that forms an OpenPGP
  key (sometimes called an OpenPGP certificate).
  @memberof module:packet
  @constructor