# Class: PublicKeyPacket

## PublicKeyPacket(dateopt, configopt)

Implementation of the Key Material Packet (Tag 5,6,7,14)

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).

## Constructor

#### new PublicKeyPacket(dateopt, configopt)

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`date` | Date | <optional> | Creation date
`config` | Object | <optional> | Full configuration, defaults to openpgp.config

Source:
  - packet/public_key.js, line 45

### Members

#### algorithm :String

Public key algorithm.

##### Type:

- String

Source:
  - packet/public_key.js, line 60

#### created :Date

Key creation date.

##### Type:

- Date

Source:
  - packet/public_key.js, line 55

#### expirationTimeV3 :Integer

Time until expiration in days (V3 only)

##### Type:

- Integer

Source:
  - packet/public_key.js, line 70

#### fingerprint :Uint8Array

Fingerprint bytes

##### Type:

- Uint8Array

Source:
  - packet/public_key.js, line 75

#### keyID :module:type/keyid~KeyID

KeyID

##### Type:

- module:type/keyid~KeyID

Source:
  - packet/public_key.js, line 80

#### publicParams :Object

Algorithm specific public params

##### Type:

- Object

Source:
  - packet/public_key.js, line 65

#### readPublicKey

Alias of read()

Source:
  - packet/public_key.js, line 280
See:
  - PublicKeyPacket#read

#### version :Integer

Packet version

##### Type:

- Integer

Source:
  - packet/public_key.js, line 50

#### writePublicKey

Alias of write()

Source:
  - packet/public_key.js, line 286
See:
  - PublicKeyPacket#write

### Methods

#### (static) fromSecretKeyPacket(secretKeyPacket) → {PublicKeyPacket}

Create a PublicKeyPacket from a SecretKeyPacket

##### Parameters:

Name | Type | Description
--- | --- | ---
`secretKeyPacket` | SecretKeyPacket | key packet to convert

Source:
  - packet/public_key.js, line 89

##### Returns:

public key packet

Type
  PublicKeyPacket

#### (async) computeFingerprint()

Computes and set the fingerprint of the key

Source:
  - packet/public_key.js, line 222

#### (async) computeFingerprintAndKeyID()

Computes and set the key ID and fingerprint of the key

Source:
  - packet/public_key.js, line 206

#### getAlgorithmInfo() → {Object}

Returns algorithm information

Source:
  - packet/public_key.js, line 262

##### Returns:

An object of the form {algorithm: String, bits:int, curve:String}.

Type
  Object

#### getCreationTime() → {Date}

Returns the creation time of the key

Source:
  - packet/public_key.js, line 190

##### Returns:

Type
  Date

#### getFingerprint() → {String}

Calculates and returns the fingerprint of the key, as a string

Source:
  - packet/public_key.js, line 246

##### Returns:

A string containing the fingerprint in lowercase hex

Type
  String

#### getFingerprintBytes() → {Uint8Array}

Returns the fingerprint of the key, as an array of bytes

Source:
  - packet/public_key.js, line 238

##### Returns:

A Uint8Array containing the fingerprint

Type
  Uint8Array

#### getKeyID() → {module:type/keyid~KeyID}

Return the key ID of the key

Source:
  - packet/public_key.js, line 198

##### Returns:

The 8-byte key ID

Type
  module:type/keyid~KeyID

#### hasSameFingerprintAs() → {Boolean}

Calculates whether two keys have the same fingerprint without actually calculating the fingerprint

Source:
  - packet/public_key.js, line 254

##### Returns:

Whether the two keys have the same version and public key data.

Type
  Boolean

#### isDecrypted() → {Boolean|null}

Check whether secret-key data is available in decrypted form. Returns null for public keys.

Source:
  - packet/public_key.js, line 182

##### Returns:

Type
  Boolean | null

#### (async) read(bytes) → {Object}

Internal Parser for public keys as specified in RFC 4880 section 5.5.2 Public-Key Packet Formats

##### Parameters:

Name | Type | Description
--- | --- | ---
`bytes` | Uint8Array | Input array to read the packet from

Source:
  - packet/public_key.js, line 107

##### Returns:

This object with attributes set by the parser

Type
  Object

#### write() → {Uint8Array}

Creates an OpenPGP public key packet for the given key.

Source:
  - packet/public_key.js, line 146

##### Returns:

Bytes encoding the public key OpenPGP packet.

Type
  Uint8Array

#### writeForHash(version)

Write packet in order to be hashed; either for a signature or a fingerprint

##### Parameters:

Name | Type | Description
--- | --- | ---
`version` | Integer | target version of signature or key

Source:
  - packet/public_key.js, line 169