PrivateKey
extends DSA
in package
implements
PrivateKey
uses
PasswordProtected
DSA Private Key
Tags
Table of Contents
Interfaces
- PrivateKey
- PrivateKey interface
Constants
- ALGORITHM = 'DSA'
- Algorithm Name
Properties
- $engines : array<string|int, bool>
- Available Engines
- $format : string
- Format of the loaded key
- $g : BigInteger
- DSA Group Generator G
- $hash : Hash
- Hash function
- $one : BigInteger
- Precomputed One
- $p : BigInteger
- DSA Prime P
- $q : BigInteger
- DSA Group Order q
- $shortFormat : string
- Signature Format (Short)
- $sigFormat : string
- Signature Format
- $x : BigInteger
- DSA secret exponent x
- $y : BigInteger
- DSA public key value y
- $zero : BigInteger
- Precomputed Zero
- $comment : null|string
- Key Comment
- $hmac : Hash
- HMAC function
- $invisiblePlugins : array<string|int, mixed>
- Invisible plugins
- $password : string|bool
- Password
- $plugins : array<string|int, mixed>
- Supported plugins (lower case)
- $signatureFileFormats : array<string|int, mixed>
- Supported signature formats (original case)
- $signatureFormats : array<string|int, mixed>
- Supported signature formats (lower case)
Methods
- __toString() : string
- __toString() magic method
- addFileFormat() : bool
- Add a fileformat plugin
- createKey() : PrivateKey
- Create public / private key pair.
- createParameters() : DSA|bool
- Create DSA parameters
- getComment() : null|string
- Returns the key's comment
- getEngine() : string
- Returns the current engine being used
- getHash() : mixed
- Returns the hash algorithm currently being used
- getLength() : array<string|int, mixed>
- Returns the key size
- getLoadedFormat() : mixed
- Returns the format of the loaded key.
- getParameters() : mixed
- Returns the parameters
- getPublicKey() : mixed
- Returns the public key
- getSignatureFormat() : mixed
- Returns the signature format currently being used
- getSupportedKeyFormats() : array<string|int, mixed>
- Returns a list of supported formats.
- load() : AsymmetricKey
- Load the key
- loadFormat() : AsymmetricKey
- Load the key, assuming a specific format
- loadParameters() : AsymmetricKey
- Loads parameters
- loadParametersFormat() : AsymmetricKey
- Loads parameters
- loadPrivateKey() : PrivateKey
- Loads a private key
- loadPrivateKeyFormat() : PrivateKey
- Loads a private key
- loadPublicKey() : PublicKey
- Loads a public key
- loadPublicKeyFormat() : PublicKey
- Loads a public key
- sign() : mixed
- Create a signature
- toString() : string
- Returns the private key
- useBestEngine() : mixed
- Tests engine validity
- useInternalEngine() : mixed
- Flag to use internal engine only (useful for unit testing)
- withHash() : mixed
- Determines which hashing function should be used
- withPassword() : mixed
- Sets the password
- withSignatureFormat() : mixed
- Determines the signature padding mode
- __construct() : mixed
- Constructor
- bits2int() : BigInteger
- Bit String to Integer
- computek() : string
- Compute the pseudorandom k for signature generation, using the process specified for deterministic DSA.
- initialize_static_variables() : mixed
- Initialize static variables
- onLoad() : bool
- OnLoad Handler
- validatePlugin() : mixed
- Validate Plugin
- bits2octets() : string
- Bit String to Octet String
- int2octets() : string
- Integer to Octet String
- loadPlugins() : mixed
- Load Plugins
Constants
ALGORITHM
Algorithm Name
public
string
ALGORITHM
= 'DSA'
Tags
Properties
$engines
Available Engines
protected
static array<string|int, bool>
$engines
= []
Tags
$format
Format of the loaded key
protected
string
$format
Tags
$g
DSA Group Generator G
protected
BigInteger
$g
Tags
$hash
Hash function
protected
Hash
$hash
Tags
$one
Precomputed One
protected
static BigInteger
$one
Tags
$p
DSA Prime P
protected
BigInteger
$p
Tags
$q
DSA Group Order q
protected
BigInteger
$q
Prime divisor of p-1
Tags
$shortFormat
Signature Format (Short)
protected
string
$shortFormat
Tags
$sigFormat
Signature Format
protected
string
$sigFormat
Tags
$x
DSA secret exponent x
protected
BigInteger
$x
Tags
$y
DSA public key value y
protected
BigInteger
$y
Tags
$zero
Precomputed Zero
protected
static BigInteger
$zero
Tags
$comment
Key Comment
private
null|string
$comment
Tags
$hmac
HMAC function
private
Hash
$hmac
Tags
$invisiblePlugins
Invisible plugins
private
static array<string|int, mixed>
$invisiblePlugins
= []
Tags
$password
Password
private
string|bool
$password
= false
$plugins
Supported plugins (lower case)
private
static array<string|int, mixed>
$plugins
= []
Tags
$signatureFileFormats
Supported signature formats (original case)
private
static array<string|int, mixed>
$signatureFileFormats
= []
Tags
$signatureFormats
Supported signature formats (lower case)
private
static array<string|int, mixed>
$signatureFormats
= []
Tags
Methods
__toString()
__toString() magic method
public
__toString() : string
Return values
stringaddFileFormat()
Add a fileformat plugin
public
static addFileFormat(string $fullname) : bool
The plugin needs to either already be loaded or be auto-loadable. Loading a plugin whose shortname overwrite an existing shortname will overwrite the old plugin.
Parameters
- $fullname : string
Tags
Return values
boolcreateKey()
Create public / private key pair.
public
static createKey(array<string|int, int> ...$args) : PrivateKey
This method is a bit polymorphic. It can take a DSA/Parameters object, L / N as two distinct parameters or no parameters (at which point L and N will be generated with this method)
Returns the private key, from which the publickey can be extracted
Parameters
- $args : array<string|int, int>
Tags
Return values
PrivateKeycreateParameters()
Create DSA parameters
public
static createParameters([int $L = 2048 ][, int $N = 224 ]) : DSA|bool
Parameters
- $L : int = 2048
- $N : int = 224
Tags
Return values
DSA|boolgetComment()
Returns the key's comment
public
getComment() : null|string
Not all key formats support comments. If you want to set a comment use toString()
Tags
Return values
null|stringgetEngine()
Returns the current engine being used
public
getEngine() : string
Tags
Return values
stringgetHash()
Returns the hash algorithm currently being used
public
getHash() : mixed
Tags
getLength()
Returns the key size
public
getLength() : array<string|int, mixed>
More specifically, this L (the length of DSA Prime P) and N (the length of DSA Group Order q)
Tags
Return values
array<string|int, mixed>getLoadedFormat()
Returns the format of the loaded key.
public
getLoadedFormat() : mixed
If the key that was loaded wasn't in a valid or if the key was auto-generated with RSA::createKey() then this will throw an exception.
Tags
getParameters()
Returns the parameters
public
getParameters() : mixed
A public / private key is only returned if the currently loaded "key" contains an x or y value.
Tags
getPublicKey()
Returns the public key
public
getPublicKey() : mixed
If you do "openssl rsa -in private.rsa -pubout -outform PEM" you get a PKCS8 formatted key that contains a publicKeyAlgorithm AlgorithmIdentifier and a publicKey BIT STRING. An AlgorithmIdentifier contains an OID and a parameters field. With RSA public keys this parameters field is NULL. With DSA PKCS8 public keys it is not - it contains the p, q and g variables. The publicKey BIT STRING contains, simply, the y variable. This can be verified by getting a DSA PKCS8 public key:
"openssl dsa -in private.dsa -pubout -outform PEM"
ie. just swap out rsa with dsa in the rsa command above.
A PKCS1 public key corresponds to the publicKey portion of the PKCS8 key. In the case of RSA the publicKey portion /is/ the key. In the case of DSA it is not. You cannot verify a signature without the parameters and the PKCS1 DSA public key format does not include the parameters.
Tags
getSignatureFormat()
Returns the signature format currently being used
public
getSignatureFormat() : mixed
Tags
getSupportedKeyFormats()
Returns a list of supported formats.
public
static getSupportedKeyFormats() : array<string|int, mixed>
Tags
Return values
array<string|int, mixed>load()
Load the key
public
static load(string $key[, string $password = false ]) : AsymmetricKey
Parameters
- $key : string
- $password : string = false
-
optional
Return values
AsymmetricKeyloadFormat()
Load the key, assuming a specific format
public
static loadFormat(string $type, string $key[, string $password = false ]) : AsymmetricKey
Parameters
- $type : string
- $key : string
- $password : string = false
-
optional
Return values
AsymmetricKeyloadParameters()
Loads parameters
public
loadParameters(string|array<string|int, mixed> $key) : AsymmetricKey
Parameters
- $key : string|array<string|int, mixed>
Tags
Return values
AsymmetricKeyloadParametersFormat()
Loads parameters
public
loadParametersFormat(string $type, string|array<string|int, mixed> $key) : AsymmetricKey
Parameters
- $type : string
- $key : string|array<string|int, mixed>
Tags
Return values
AsymmetricKeyloadPrivateKey()
Loads a private key
public
loadPrivateKey(string|array<string|int, mixed> $key[, string $password = '' ]) : PrivateKey
Parameters
- $key : string|array<string|int, mixed>
- $password : string = ''
-
optional
Tags
Return values
PrivateKeyloadPrivateKeyFormat()
Loads a private key
public
loadPrivateKeyFormat(string $type, string $key[, string $password = false ]) : PrivateKey
Parameters
- $type : string
- $key : string
- $password : string = false
-
optional
Tags
Return values
PrivateKeyloadPublicKey()
Loads a public key
public
loadPublicKey(string|array<string|int, mixed> $key) : PublicKey
Parameters
- $key : string|array<string|int, mixed>
Tags
Return values
PublicKeyloadPublicKeyFormat()
Loads a public key
public
loadPublicKeyFormat(string $type, string $key) : PublicKey
Parameters
- $type : string
- $key : string
Tags
Return values
PublicKeysign()
Create a signature
public
sign(string $message) : mixed
Parameters
- $message : string
Tags
toString()
Returns the private key
public
toString(string $type[, array<string|int, mixed> $options = [] ]) : string
Parameters
- $type : string
- $options : array<string|int, mixed> = []
-
optional
Return values
stringuseBestEngine()
Tests engine validity
public
static useBestEngine() : mixed
Tags
useInternalEngine()
Flag to use internal engine only (useful for unit testing)
public
static useInternalEngine() : mixed
Tags
withHash()
Determines which hashing function should be used
public
withHash(string $hash) : mixed
Parameters
- $hash : string
Tags
withPassword()
Sets the password
public
withPassword([string|bool $password = false ]) : mixed
Private keys can be encrypted with a password. To unset the password, pass in the empty string or false. Or rather, pass in $password such that empty($password) && !is_string($password) is true.
Parameters
- $password : string|bool = false
Tags
withSignatureFormat()
Determines the signature padding mode
public
withSignatureFormat(string $format) : mixed
Valid values are: ASN1, SSH2, Raw
Parameters
- $format : string
Tags
__construct()
Constructor
protected
__construct() : mixed
PublicKey and PrivateKey objects can only be created from abstract RSA class
bits2int()
Bit String to Integer
protected
bits2int(string $in) : BigInteger
Parameters
- $in : string
Tags
Return values
BigIntegercomputek()
Compute the pseudorandom k for signature generation, using the process specified for deterministic DSA.
protected
computek(string $h1) : string
Parameters
- $h1 : string
Tags
Return values
stringinitialize_static_variables()
Initialize static variables
protected
static initialize_static_variables() : mixed
onLoad()
OnLoad Handler
protected
static onLoad(array<string|int, mixed> $components) : bool
Parameters
- $components : array<string|int, mixed>
Tags
Return values
boolvalidatePlugin()
Validate Plugin
protected
static validatePlugin(string $format, string $type[, string $method = NULL ]) : mixed
Parameters
- $format : string
- $type : string
- $method : string = NULL
-
optional
Tags
bits2octets()
Bit String to Octet String
private
bits2octets(string $in) : string
Parameters
- $in : string
Tags
Return values
stringint2octets()
Integer to Octet String
private
int2octets(BigInteger $v) : string
Parameters
- $v : BigInteger
Tags
Return values
stringloadPlugins()
Load Plugins
private
static loadPlugins(string $format) : mixed
Parameters
- $format : string