RSA Class
Properties Methods Events Config Settings Errors
Implements RSA public-key cryptography to encrypt/decrypt and sign/verify messages.
Class Name
IPWorksEncrypt_RSA
Procedural Interface
ipworksencrypt_rsa_open(); ipworksencrypt_rsa_close($res); ipworksencrypt_rsa_register_callback($res, $id, $function); ipworksencrypt_rsa_get_last_error($res); ipworksencrypt_rsa_get_last_error_code($res); ipworksencrypt_rsa_set($res, $id, $index, $value); ipworksencrypt_rsa_get($res, $id, $index); ipworksencrypt_rsa_do_config($res, $configurationstring); ipworksencrypt_rsa_do_createkey($res); ipworksencrypt_rsa_do_decrypt($res); ipworksencrypt_rsa_do_encrypt($res); ipworksencrypt_rsa_do_reset($res); ipworksencrypt_rsa_do_sign($res); ipworksencrypt_rsa_do_verifysignature($res);
Remarks
The RSA class implements RSA public-key cryptography to encrypt/decrypt messages and sign/verify hash signatures.
To begin you must either specify an existing key or create a new key. Existing private keys may be specified by setting the Key* properties. To create a new key call CreateKey. Alternatively an existing certificate may be specified by setting the Certificate* properties
Signing
To sign data first set Key or Certificate. Specify the input data using InputFile or InputMessage. Next call Sign. The class will populate HashValue and HashSignature. After calling Sign the public key must be sent to the recipient along with HashSignature.
Encrypting
To encrypt data set RecipientKey or RecipientCert. Specify the input data using InputFile or InputMessage. Next call Encrypt. The class will populate OutputMessage, or write to the file specified by OutputFile.
Signature Verification
To verify a signature specify the input data using InputFile or InputMessage. Set SignerKey or SignerCert. Next set HashSignature and call VerifySignature. The VerifySignature method will return True if the signature was successfully verified.
Decrypting
To decrypt data first set Key or Certificate. Specify the input data using InputFile or InputMessage. Next call Decrypt. The class will populate OutputMessage, or write to the file specified by OutputFile.
Input and Output Properties
The class will determine the source and destination of the input and output based on which properties are set.
The order in which the input properties are checked is as follows:
When a valid source is found the search stops. The order in which the output properties are checked is as follows:
- OutputFile
- OutputMessage: The output data is written to this property if no other destination is specified.
RSA Keys
A RSA key is made up of a number of individual parameters.
The public key consists of the following parameters:
The class also includes the KeyPublicKey property which holds the PEM formatted public key for ease of use. This is helpful if you are in control of both sides of the encryption/signing and decryption/signature verification process. When sending the public key to a recipient note that not all implementations will support using the PEM formatted value in KeyPublicKey in which case the individual parameters must be sent.
The private key may be represented in one of two ways. Both are mathematically equivalent. Private key format 1:
Private key format 2 is simpler but has decreased performance when decrypting and signing. This format is: The class also include the KeyPrivateKey property which holds the PEM formatted private key for ease of use. This is helpful for storing the private key more easily.Property List
The following is the full list of the properties of the class with short descriptions. Click on the links for further details.
CertEncoded | This is the certificate (PEM/base64 encoded). |
CertStore | This is the name of the certificate store for the client certificate. |
CertStorePassword | If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store. |
CertStoreType | This is the type of certificate store for this certificate. |
CertSubject | This is the subject of the certificate used for client authentication. |
HashAlgorithm | The hash algorithm used for signing and signature verification. |
HashSignature | The hash signature. |
HashValue | The hash value of the data. |
InputFile | The file to process. |
InputMessage | The message to process. |
KeyD | Represents the D parameter for the RSA algorithm. |
KeyDP | Represents the DP parameter for the RSA algorithm. |
KeyDQ | Represents the DQ parameter for the RSA algorithm. |
KeyExponent | Represents the Exponent parameter for the RSA algorithm. |
KeyInverseQ | Represents the InverseQ parameter for the RSA algorithm. |
KeyModulus | Represents the Modulus parameter for the RSA algorithm. |
KeyP | Represents the P parameter for the RSA algorithm. |
KeyPrivateKey | This property is a PEM formatted private key. |
KeyPublicKey | This property is a PEM formatted public key. |
KeyQ | Represents the Q parameter for the RSA algorithm. |
OutputFile | The output file when encrypting or decrypting. |
OutputMessage | The output message after processing. |
Overwrite | Indicates whether or not the class should overwrite files. |
RecipientCertEncoded | This is the certificate (PEM/base64 encoded). |
RecipientCertStore | This is the name of the certificate store for the client certificate. |
RecipientCertStorePassword | If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store. |
RecipientCertStoreType | This is the type of certificate store for this certificate. |
RecipientCertSubject | This is the subject of the certificate used for client authentication. |
RecipientKeyExponent | Represents the Exponent parameter for the RSA algorithm. |
RecipientKeyModulus | Represents the Modulus parameter for the RSA algorithm. |
RecipientKeyPublicKey | This property is a PEM formatted public key. |
SignerCertEncoded | This is the certificate (PEM/base64 encoded). |
SignerCertStore | This is the name of the certificate store for the client certificate. |
SignerCertStorePassword | If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store. |
SignerCertStoreType | This is the type of certificate store for this certificate. |
SignerCertSubject | This is the subject of the certificate used for client authentication. |
SignerKeyExponent | Represents the Exponent parameter for the RSA algorithm. |
SignerKeyModulus | Represents the Modulus parameter for the RSA algorithm. |
SignerKeyPublicKey | This property is a PEM formatted public key. |
UseHex | Whether input or output is hex encoded. |
UseOAEP | Whether to use Optimal Asymmetric Encryption Padding (OAEP). |
UsePSS | Whether to use RSA-PSS during signing and verification. |
Method List
The following is the full list of the methods of the class with short descriptions. Click on the links for further details.
Config | Sets or retrieves a configuration setting. |
CreateKey | Creates a new key. |
Decrypt | Decrypts the input data using the specified private key. |
Encrypt | Encrypts the input data using the recipient's public key. |
Reset | Resets the class. |
Sign | Creates a hash signature. |
VerifySignature | Verifies the signature for the specified data. |
Event List
The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.
Error | Information about errors during data delivery. |
Progress | Fired as progress is made. |
Config Settings
The following is a list of config settings for the class with short descriptions. Click on the links for further details.
KeyFormat | How the public and private key are formatted. |
KeySize | The size, in bits, of the secret key. |
OAEPMGF1HashAlgorithm | The MGF1 hash algorithm used with OAEP. |
OAEPParams | The hex encoded OAEP parameters. |
OAEPRSAHashAlgorithm | The RSA hash algorithm used with OAEP. |
BuildInfo | Information about the product's build. |
CodePage | The system code page used for Unicode to Multibyte translations. |
LicenseInfo | Information about the current license. |
MaskSensitive | Whether sensitive data is masked in log messages. |
ProcessIdleEvents | Whether the class uses its internal event loop to process events when the main thread is idle. |
SelectWaitMillis | The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process. |
UseInternalSecurityAPI | Tells the class whether or not to use the system security libraries or an internal implementation. |
CertEncoded Property (IPWorksEncrypt_RSA Class)
This is the certificate (PEM/base64 encoded).
Object Oriented Interface
public function getCertEncoded(); public function setCertEncoded($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 2 ); ipworksencrypt_rsa_set($res, 2, $value );
Default Value
''
Remarks
This is the certificate (PEM/base64 encoded). This property is used to assign a specific certificate. The CertStore and CertSubject properties also may be used to specify a certificate.
When CertEncoded is set, a search is initiated in the current CertStore for the private key of the certificate. If the key is found, CertSubject is updated to reflect the full subject of the selected certificate; otherwise, CertSubject is set to an empty string.
This property is not available at design time.
Data Type
Binary String
CertStore Property (IPWorksEncrypt_RSA Class)
This is the name of the certificate store for the client certificate.
Object Oriented Interface
public function getCertStore(); public function setCertStore($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 18 ); ipworksencrypt_rsa_set($res, 18, $value );
Default Value
'MY'
Remarks
This is the name of the certificate store for the client certificate.
The CertStoreType property denotes the type of the certificate store specified by CertStore. If the store is password protected, specify the password in CertStorePassword.
CertStore is used in conjunction with the CertSubject property to specify client certificates. If CertStore has a value, and CertSubject or CertEncoded is set, a search for a certificate is initiated. Please see the CertSubject property for details.
Designations of certificate stores are platform-dependent.
The following are designations of the most common User and Machine certificate stores in Windows:
MY | A certificate store holding personal certificates with their associated private keys. |
CA | Certifying authority certificates. |
ROOT | Root certificates. |
When the certificate store type is PFXFile, this property must be set to the name of the file. When the type is PFXBlob, the property must be set to the binary contents of a PFX file (i.e. PKCS12 certificate store).
Data Type
Binary String
CertStorePassword Property (IPWorksEncrypt_RSA Class)
If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
Object Oriented Interface
public function getCertStorePassword(); public function setCertStorePassword($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 19 ); ipworksencrypt_rsa_set($res, 19, $value );
Default Value
''
Remarks
If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
Data Type
String
CertStoreType Property (IPWorksEncrypt_RSA Class)
This is the type of certificate store for this certificate.
Object Oriented Interface
public function getCertStoreType(); public function setCertStoreType($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 20 ); ipworksencrypt_rsa_set($res, 20, $value );
Default Value
0
Remarks
This is the type of certificate store for this certificate.
The class supports both public and private keys in a variety of formats. When the cstAuto value is used the class will automatically determine the type. This property can take one of the following values:
0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user. Note: this store type is not available in Java. |
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store. Note: this store type is not available in Java. |
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS12) file containing certificates. |
3 (cstPFXBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in PFX (PKCS12) format. |
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates. Note: this store type is only available in Java. |
5 (cstJKSBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in Java Key Store (JKS) format. Note: this store type is only available in Java. |
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate. |
7 (cstPEMKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a private key and an optional certificate. |
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate. |
9 (cstPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a PEM- or DER-encoded public key certificate. |
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains an SSH-style public key. |
11 (cstP7BFile) | The certificate store is the name of a PKCS7 file containing certificates. |
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS7 format. |
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key. |
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key). |
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key). |
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format. |
17 (cstXMLBlob) | The certificate store is a string that contains a certificate in XML format. |
18 (cstJWKFile) | The certificate store is the name of a file that contains a JWK (JSON Web Key). |
19 (cstJWKBlob) | The certificate store is a string that contains a JWK (JSON Web Key). |
21 (cstBCFKSFile) | The certificate store is the name of a file that contains a BCFKS (Bouncy Castle FIPS Key Store). Note: this store type is only available in Java and .NET. |
22 (cstBCFKSBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in BCFKS (Bouncy Castle FIPS Key Store) format. Note: this store type is only available in Java and .NET. |
23 (cstPKCS11) | The certificate is present on a physical security key accessible via a PKCS11 interface.
To use a security key the necessary data must first be collected using the CertMgr class. The ListStoreCertificates method may be called after setting CertStoreType to cstPKCS11, CertStorePassword to the PIN, and CertStore to the full path of the PKCS11 dll. The certificate information returned in the CertList event's CertEncoded parameter may be saved for later use. When using a certificate, pass the previously saved security key information as the CertStore and set CertStorePassword to the PIN. Code Example: SSH Authentication with Security Key
|
99 (cstAuto) | The store type is automatically detected from the input data. This setting may be used with both public and private keys and can detect any of the supported formats automatically. |
Data Type
Integer
CertSubject Property (IPWorksEncrypt_RSA Class)
This is the subject of the certificate used for client authentication.
Object Oriented Interface
public function getCertSubject(); public function setCertSubject($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 21 ); ipworksencrypt_rsa_set($res, 21, $value );
Default Value
''
Remarks
This is the subject of the certificate used for client authentication.
This property must be set after all other certificate properites are set. When this property is set, a search is performed in the current certificate store certificate with matching subject.
If a matching certificate is found, the property is set to the full subject of the matching certificate.
If an exact match is not found, the store is searched for subjects containing the value of the property.
If a match is still not found, the property is set to an empty string, and no certificate is selected.
The special value "*" picks a random certificate in the certificate store.
The certificate subject is a comma separated list of distinguished name fields and values. For instance "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common fields and their meanings are displayed below.
Field | Meaning |
CN | Common Name. This is commonly a host name like www.server.com. |
O | Organization |
OU | Organizational Unit |
L | Locality |
S | State |
C | Country |
E | Email Address |
If a field value contains a comma it must be quoted.
Data Type
String
HashAlgorithm Property (IPWorksEncrypt_RSA Class)
The hash algorithm used for signing and signature verification.
Object Oriented Interface
public function getHashAlgorithm(); public function setHashAlgorithm($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 29 ); ipworksencrypt_rsa_set($res, 29, $value );
Default Value
2
Remarks
This property specifies the hash algorithm used for signing and signature verification. Possible values are:
0 (rhaSHA1) | SHA-1 |
1 (rhaSHA224) | SHA-224 |
2 (rhaSHA256 - default) | SHA-256 |
3 (rhaSHA384) | SHA-384 |
4 (rhaSHA512) | SHA-512 |
5 (rhaRIPEMD160) | RIPEMD-160 |
6 (rhaMD2) | MD2 |
7 (rhaMD5) | MD5 |
8 (rhaMD5SHA1) | MD5SHA1 |
Data Type
Integer
HashSignature Property (IPWorksEncrypt_RSA Class)
The hash signature.
Object Oriented Interface
public function getHashSignature(); public function setHashSignature($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 30 ); ipworksencrypt_rsa_set($res, 30, $value );
Default Value
''
Remarks
This property holds the computed hash signature. This is populated after calling Sign. This must be set before calling VerifySignature.
Data Type
Binary String
HashValue Property (IPWorksEncrypt_RSA Class)
The hash value of the data.
Object Oriented Interface
public function getHashValue(); public function setHashValue($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 31 ); ipworksencrypt_rsa_set($res, 31, $value );
Default Value
''
Remarks
This property holds the computed hash value for the specified data. This is populated when calling Sign or VerifySignature when an input file is specified by setting InputFile or InputMessage.
If you know the hash value prior to using the class you may specify the pre-computed hash value here.
Hash Notes
The class will determine whether or not to recompute the hash based on the properties that are set. If a file is specified by InputFile or InputMessage the hash will be recomputed when calling Sign or VerifySignature. If the HashValue property is set the class will only sign the hash or verify the hash signature. Setting InputFile or InputMessage clears the HashValue property. Setting the HashValue property clears the input file selection.
Data Type
Binary String
InputFile Property (IPWorksEncrypt_RSA Class)
The file to process.
Object Oriented Interface
public function getInputFile(); public function setInputFile($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 32 ); ipworksencrypt_rsa_set($res, 32, $value );
Default Value
''
Remarks
This property specifies the file to be processed. Set this property to the full or relative path to the file which will be processed.
Input and Output Properties
The class will determine the source and destination of the input and output based on which properties are set.
The order in which the input properties are checked is as follows:
- InputFile
- InputMessage
When a valid source is found the search stops. The order in which the output properties are checked is as follows:
- OutputFile
- OutputMessage: The output data is written to this property if no other destination is specified.
Data Type
String
InputMessage Property (IPWorksEncrypt_RSA Class)
The message to process.
Object Oriented Interface
public function getInputMessage(); public function setInputMessage($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 33 ); ipworksencrypt_rsa_set($res, 33, $value );
Default Value
''
Remarks
This property specifies the message to be processed.
Input and Output Properties
The class will determine the source and destination of the input and output based on which properties are set.
The order in which the input properties are checked is as follows:
- InputFile
- InputMessage
When a valid source is found the search stops. The order in which the output properties are checked is as follows:
- OutputFile
- OutputMessage: The output data is written to this property if no other destination is specified.
Data Type
Binary String
KeyD Property (IPWorksEncrypt_RSA Class)
Represents the D parameter for the RSA algorithm.
Object Oriented Interface
public function getKeyD(); public function setKeyD($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 34 ); ipworksencrypt_rsa_set($res, 34, $value );
Default Value
''
Remarks
Represents the D parameter for the RSA algorithm.
Data Type
Binary String
KeyDP Property (IPWorksEncrypt_RSA Class)
Represents the DP parameter for the RSA algorithm.
Object Oriented Interface
public function getKeyDP(); public function setKeyDP($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 35 ); ipworksencrypt_rsa_set($res, 35, $value );
Default Value
''
Remarks
Represents the DP parameter for the RSA algorithm.
Data Type
Binary String
KeyDQ Property (IPWorksEncrypt_RSA Class)
Represents the DQ parameter for the RSA algorithm.
Object Oriented Interface
public function getKeyDQ(); public function setKeyDQ($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 36 ); ipworksencrypt_rsa_set($res, 36, $value );
Default Value
''
Remarks
Represents the DQ parameter for the RSA algorithm.
Data Type
Binary String
KeyExponent Property (IPWorksEncrypt_RSA Class)
Represents the Exponent parameter for the RSA algorithm.
Object Oriented Interface
public function getKeyExponent(); public function setKeyExponent($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 37 ); ipworksencrypt_rsa_set($res, 37, $value );
Default Value
''
Remarks
Represents the Exponent parameter for the RSA algorithm.
Data Type
Binary String
KeyInverseQ Property (IPWorksEncrypt_RSA Class)
Represents the InverseQ parameter for the RSA algorithm.
Object Oriented Interface
public function getKeyInverseQ(); public function setKeyInverseQ($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 38 ); ipworksencrypt_rsa_set($res, 38, $value );
Default Value
''
Remarks
Represents the InverseQ parameter for the RSA algorithm. This parameter is optional and is automatically calculated as necessary.
Data Type
Binary String
KeyModulus Property (IPWorksEncrypt_RSA Class)
Represents the Modulus parameter for the RSA algorithm.
Object Oriented Interface
public function getKeyModulus(); public function setKeyModulus($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 39 ); ipworksencrypt_rsa_set($res, 39, $value );
Default Value
''
Remarks
Represents the Modulus parameter for the RSA algorithm.
Data Type
Binary String
KeyP Property (IPWorksEncrypt_RSA Class)
Represents the P parameter for the RSA algorithm.
Object Oriented Interface
public function getKeyP(); public function setKeyP($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 40 ); ipworksencrypt_rsa_set($res, 40, $value );
Default Value
''
Remarks
Represents the P parameter for the RSA algorithm.
Data Type
Binary String
KeyPrivateKey Property (IPWorksEncrypt_RSA Class)
This property is a PEM formatted private key.
Object Oriented Interface
public function getKeyPrivateKey(); public function setKeyPrivateKey($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 41 ); ipworksencrypt_rsa_set($res, 41, $value );
Default Value
''
Remarks
This property is a PEM formatted private key. The purpose of this property is to allow easier management of the private key parameters by using only a single value.
Data Type
String
KeyPublicKey Property (IPWorksEncrypt_RSA Class)
This property is a PEM formatted public key.
Object Oriented Interface
public function getKeyPublicKey(); public function setKeyPublicKey($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 42 ); ipworksencrypt_rsa_set($res, 42, $value );
Default Value
''
Remarks
This property is a PEM formatted public key. The purpose of this property is to allow easier management of the public key parameters by using only a single value.
Data Type
String
KeyQ Property (IPWorksEncrypt_RSA Class)
Represents the Q parameter for the RSA algorithm.
Object Oriented Interface
public function getKeyQ(); public function setKeyQ($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 43 ); ipworksencrypt_rsa_set($res, 43, $value );
Default Value
''
Remarks
Represents the Q parameter for the RSA algorithm.
Data Type
Binary String
OutputFile Property (IPWorksEncrypt_RSA Class)
The output file when encrypting or decrypting.
Object Oriented Interface
public function getOutputFile(); public function setOutputFile($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 44 ); ipworksencrypt_rsa_set($res, 44, $value );
Default Value
''
Remarks
This property specifies the file to which the output will be written when Encrypt or Decrypt is called. This may be set to an absolute or relative path.
This property is only applicable to Encrypt and Decrypt.
Input and Output Properties
The class will determine the source and destination of the input and output based on which properties are set.
The order in which the input properties are checked is as follows:
When a valid source is found the search stops. The order in which the output properties are checked is as follows:
- OutputFile
- OutputMessage: The output data is written to this property if no other destination is specified.
Data Type
String
OutputMessage Property (IPWorksEncrypt_RSA Class)
The output message after processing.
Object Oriented Interface
public function getOutputMessage();
Procedural Interface
ipworksencrypt_rsa_get($res, 45 );
Default Value
''
Remarks
This property will be populated with the output from the operation if OutputFile is not set.
Input and Output Properties
The class will determine the source and destination of the input and output based on which properties are set.
The order in which the input properties are checked is as follows:
When a valid source is found the search stops. The order in which the output properties are checked is as follows:
- OutputFile
- OutputMessage: The output data is written to this property if no other destination is specified.
This property is read-only and not available at design time.
Data Type
Binary String
Overwrite Property (IPWorksEncrypt_RSA Class)
Indicates whether or not the class should overwrite files.
Object Oriented Interface
public function getOverwrite(); public function setOverwrite($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 46 ); ipworksencrypt_rsa_set($res, 46, $value );
Default Value
false
Remarks
This property indicates whether or not the class will overwrite OutputFile. If Overwrite is False, an error will be thrown whenever OutputFile exists before an operation. The default value is False.
Data Type
Boolean
RecipientCertEncoded Property (IPWorksEncrypt_RSA Class)
This is the certificate (PEM/base64 encoded).
Object Oriented Interface
public function getRecipientCertEncoded(); public function setRecipientCertEncoded($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 48 ); ipworksencrypt_rsa_set($res, 48, $value );
Default Value
''
Remarks
This is the certificate (PEM/base64 encoded). This property is used to assign a specific certificate. The RecipientCertStore and RecipientCertSubject properties also may be used to specify a certificate.
When RecipientCertEncoded is set, a search is initiated in the current RecipientCertStore for the private key of the certificate. If the key is found, RecipientCertSubject is updated to reflect the full subject of the selected certificate; otherwise, RecipientCertSubject is set to an empty string.
This property is not available at design time.
Data Type
Binary String
RecipientCertStore Property (IPWorksEncrypt_RSA Class)
This is the name of the certificate store for the client certificate.
Object Oriented Interface
public function getRecipientCertStore(); public function setRecipientCertStore($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 64 ); ipworksencrypt_rsa_set($res, 64, $value );
Default Value
'MY'
Remarks
This is the name of the certificate store for the client certificate.
The RecipientCertStoreType property denotes the type of the certificate store specified by RecipientCertStore. If the store is password protected, specify the password in RecipientCertStorePassword.
RecipientCertStore is used in conjunction with the RecipientCertSubject property to specify client certificates. If RecipientCertStore has a value, and RecipientCertSubject or RecipientCertEncoded is set, a search for a certificate is initiated. Please see the RecipientCertSubject property for details.
Designations of certificate stores are platform-dependent.
The following are designations of the most common User and Machine certificate stores in Windows:
MY | A certificate store holding personal certificates with their associated private keys. |
CA | Certifying authority certificates. |
ROOT | Root certificates. |
When the certificate store type is PFXFile, this property must be set to the name of the file. When the type is PFXBlob, the property must be set to the binary contents of a PFX file (i.e. PKCS12 certificate store).
Data Type
Binary String
RecipientCertStorePassword Property (IPWorksEncrypt_RSA Class)
If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
Object Oriented Interface
public function getRecipientCertStorePassword(); public function setRecipientCertStorePassword($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 65 ); ipworksencrypt_rsa_set($res, 65, $value );
Default Value
''
Remarks
If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
Data Type
String
RecipientCertStoreType Property (IPWorksEncrypt_RSA Class)
This is the type of certificate store for this certificate.
Object Oriented Interface
public function getRecipientCertStoreType(); public function setRecipientCertStoreType($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 66 ); ipworksencrypt_rsa_set($res, 66, $value );
Default Value
0
Remarks
This is the type of certificate store for this certificate.
The class supports both public and private keys in a variety of formats. When the cstAuto value is used the class will automatically determine the type. This property can take one of the following values:
0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user. Note: this store type is not available in Java. |
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store. Note: this store type is not available in Java. |
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS12) file containing certificates. |
3 (cstPFXBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in PFX (PKCS12) format. |
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates. Note: this store type is only available in Java. |
5 (cstJKSBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in Java Key Store (JKS) format. Note: this store type is only available in Java. |
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate. |
7 (cstPEMKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a private key and an optional certificate. |
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate. |
9 (cstPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a PEM- or DER-encoded public key certificate. |
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains an SSH-style public key. |
11 (cstP7BFile) | The certificate store is the name of a PKCS7 file containing certificates. |
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS7 format. |
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key. |
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key). |
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key). |
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format. |
17 (cstXMLBlob) | The certificate store is a string that contains a certificate in XML format. |
18 (cstJWKFile) | The certificate store is the name of a file that contains a JWK (JSON Web Key). |
19 (cstJWKBlob) | The certificate store is a string that contains a JWK (JSON Web Key). |
21 (cstBCFKSFile) | The certificate store is the name of a file that contains a BCFKS (Bouncy Castle FIPS Key Store). Note: this store type is only available in Java and .NET. |
22 (cstBCFKSBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in BCFKS (Bouncy Castle FIPS Key Store) format. Note: this store type is only available in Java and .NET. |
23 (cstPKCS11) | The certificate is present on a physical security key accessible via a PKCS11 interface.
To use a security key the necessary data must first be collected using the CertMgr class. The ListStoreCertificates method may be called after setting CertStoreType to cstPKCS11, CertStorePassword to the PIN, and CertStore to the full path of the PKCS11 dll. The certificate information returned in the CertList event's CertEncoded parameter may be saved for later use. When using a certificate, pass the previously saved security key information as the RecipientCertStore and set RecipientCertStorePassword to the PIN. Code Example: SSH Authentication with Security Key
|
99 (cstAuto) | The store type is automatically detected from the input data. This setting may be used with both public and private keys and can detect any of the supported formats automatically. |
Data Type
Integer
RecipientCertSubject Property (IPWorksEncrypt_RSA Class)
This is the subject of the certificate used for client authentication.
Object Oriented Interface
public function getRecipientCertSubject(); public function setRecipientCertSubject($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 67 ); ipworksencrypt_rsa_set($res, 67, $value );
Default Value
''
Remarks
This is the subject of the certificate used for client authentication.
This property must be set after all other certificate properites are set. When this property is set, a search is performed in the current certificate store certificate with matching subject.
If a matching certificate is found, the property is set to the full subject of the matching certificate.
If an exact match is not found, the store is searched for subjects containing the value of the property.
If a match is still not found, the property is set to an empty string, and no certificate is selected.
The special value "*" picks a random certificate in the certificate store.
The certificate subject is a comma separated list of distinguished name fields and values. For instance "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common fields and their meanings are displayed below.
Field | Meaning |
CN | Common Name. This is commonly a host name like www.server.com. |
O | Organization |
OU | Organizational Unit |
L | Locality |
S | State |
C | Country |
E | Email Address |
If a field value contains a comma it must be quoted.
Data Type
String
RecipientKeyExponent Property (IPWorksEncrypt_RSA Class)
Represents the Exponent parameter for the RSA algorithm.
Object Oriented Interface
public function getRecipientKeyExponent(); public function setRecipientKeyExponent($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 78 ); ipworksencrypt_rsa_set($res, 78, $value );
Default Value
''
Remarks
Represents the Exponent parameter for the RSA algorithm.
Data Type
Binary String
RecipientKeyModulus Property (IPWorksEncrypt_RSA Class)
Represents the Modulus parameter for the RSA algorithm.
Object Oriented Interface
public function getRecipientKeyModulus(); public function setRecipientKeyModulus($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 80 ); ipworksencrypt_rsa_set($res, 80, $value );
Default Value
''
Remarks
Represents the Modulus parameter for the RSA algorithm.
Data Type
Binary String
RecipientKeyPublicKey Property (IPWorksEncrypt_RSA Class)
This property is a PEM formatted public key.
Object Oriented Interface
public function getRecipientKeyPublicKey(); public function setRecipientKeyPublicKey($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 83 ); ipworksencrypt_rsa_set($res, 83, $value );
Default Value
''
Remarks
This property is a PEM formatted public key. The purpose of this property is to allow easier management of the public key parameters by using only a single value.
Data Type
String
SignerCertEncoded Property (IPWorksEncrypt_RSA Class)
This is the certificate (PEM/base64 encoded).
Object Oriented Interface
public function getSignerCertEncoded(); public function setSignerCertEncoded($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 86 ); ipworksencrypt_rsa_set($res, 86, $value );
Default Value
''
Remarks
This is the certificate (PEM/base64 encoded). This property is used to assign a specific certificate. The SignerCertStore and SignerCertSubject properties also may be used to specify a certificate.
When SignerCertEncoded is set, a search is initiated in the current SignerCertStore for the private key of the certificate. If the key is found, SignerCertSubject is updated to reflect the full subject of the selected certificate; otherwise, SignerCertSubject is set to an empty string.
This property is not available at design time.
Data Type
Binary String
SignerCertStore Property (IPWorksEncrypt_RSA Class)
This is the name of the certificate store for the client certificate.
Object Oriented Interface
public function getSignerCertStore(); public function setSignerCertStore($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 102 ); ipworksencrypt_rsa_set($res, 102, $value );
Default Value
'MY'
Remarks
This is the name of the certificate store for the client certificate.
The SignerCertStoreType property denotes the type of the certificate store specified by SignerCertStore. If the store is password protected, specify the password in SignerCertStorePassword.
SignerCertStore is used in conjunction with the SignerCertSubject property to specify client certificates. If SignerCertStore has a value, and SignerCertSubject or SignerCertEncoded is set, a search for a certificate is initiated. Please see the SignerCertSubject property for details.
Designations of certificate stores are platform-dependent.
The following are designations of the most common User and Machine certificate stores in Windows:
MY | A certificate store holding personal certificates with their associated private keys. |
CA | Certifying authority certificates. |
ROOT | Root certificates. |
When the certificate store type is PFXFile, this property must be set to the name of the file. When the type is PFXBlob, the property must be set to the binary contents of a PFX file (i.e. PKCS12 certificate store).
Data Type
Binary String
SignerCertStorePassword Property (IPWorksEncrypt_RSA Class)
If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
Object Oriented Interface
public function getSignerCertStorePassword(); public function setSignerCertStorePassword($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 103 ); ipworksencrypt_rsa_set($res, 103, $value );
Default Value
''
Remarks
If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
Data Type
String
SignerCertStoreType Property (IPWorksEncrypt_RSA Class)
This is the type of certificate store for this certificate.
Object Oriented Interface
public function getSignerCertStoreType(); public function setSignerCertStoreType($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 104 ); ipworksencrypt_rsa_set($res, 104, $value );
Default Value
0
Remarks
This is the type of certificate store for this certificate.
The class supports both public and private keys in a variety of formats. When the cstAuto value is used the class will automatically determine the type. This property can take one of the following values:
0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user. Note: this store type is not available in Java. |
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store. Note: this store type is not available in Java. |
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS12) file containing certificates. |
3 (cstPFXBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in PFX (PKCS12) format. |
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates. Note: this store type is only available in Java. |
5 (cstJKSBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in Java Key Store (JKS) format. Note: this store type is only available in Java. |
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate. |
7 (cstPEMKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a private key and an optional certificate. |
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate. |
9 (cstPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a PEM- or DER-encoded public key certificate. |
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains an SSH-style public key. |
11 (cstP7BFile) | The certificate store is the name of a PKCS7 file containing certificates. |
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS7 format. |
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key. |
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key). |
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key). |
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format. |
17 (cstXMLBlob) | The certificate store is a string that contains a certificate in XML format. |
18 (cstJWKFile) | The certificate store is the name of a file that contains a JWK (JSON Web Key). |
19 (cstJWKBlob) | The certificate store is a string that contains a JWK (JSON Web Key). |
21 (cstBCFKSFile) | The certificate store is the name of a file that contains a BCFKS (Bouncy Castle FIPS Key Store). Note: this store type is only available in Java and .NET. |
22 (cstBCFKSBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in BCFKS (Bouncy Castle FIPS Key Store) format. Note: this store type is only available in Java and .NET. |
23 (cstPKCS11) | The certificate is present on a physical security key accessible via a PKCS11 interface.
To use a security key the necessary data must first be collected using the CertMgr class. The ListStoreCertificates method may be called after setting CertStoreType to cstPKCS11, CertStorePassword to the PIN, and CertStore to the full path of the PKCS11 dll. The certificate information returned in the CertList event's CertEncoded parameter may be saved for later use. When using a certificate, pass the previously saved security key information as the SignerCertStore and set SignerCertStorePassword to the PIN. Code Example: SSH Authentication with Security Key
|
99 (cstAuto) | The store type is automatically detected from the input data. This setting may be used with both public and private keys and can detect any of the supported formats automatically. |
Data Type
Integer
SignerCertSubject Property (IPWorksEncrypt_RSA Class)
This is the subject of the certificate used for client authentication.
Object Oriented Interface
public function getSignerCertSubject(); public function setSignerCertSubject($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 105 ); ipworksencrypt_rsa_set($res, 105, $value );
Default Value
''
Remarks
This is the subject of the certificate used for client authentication.
This property must be set after all other certificate properites are set. When this property is set, a search is performed in the current certificate store certificate with matching subject.
If a matching certificate is found, the property is set to the full subject of the matching certificate.
If an exact match is not found, the store is searched for subjects containing the value of the property.
If a match is still not found, the property is set to an empty string, and no certificate is selected.
The special value "*" picks a random certificate in the certificate store.
The certificate subject is a comma separated list of distinguished name fields and values. For instance "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common fields and their meanings are displayed below.
Field | Meaning |
CN | Common Name. This is commonly a host name like www.server.com. |
O | Organization |
OU | Organizational Unit |
L | Locality |
S | State |
C | Country |
E | Email Address |
If a field value contains a comma it must be quoted.
Data Type
String
SignerKeyExponent Property (IPWorksEncrypt_RSA Class)
Represents the Exponent parameter for the RSA algorithm.
Object Oriented Interface
public function getSignerKeyExponent(); public function setSignerKeyExponent($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 116 ); ipworksencrypt_rsa_set($res, 116, $value );
Default Value
''
Remarks
Represents the Exponent parameter for the RSA algorithm.
Data Type
Binary String
SignerKeyModulus Property (IPWorksEncrypt_RSA Class)
Represents the Modulus parameter for the RSA algorithm.
Object Oriented Interface
public function getSignerKeyModulus(); public function setSignerKeyModulus($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 118 ); ipworksencrypt_rsa_set($res, 118, $value );
Default Value
''
Remarks
Represents the Modulus parameter for the RSA algorithm.
Data Type
Binary String
SignerKeyPublicKey Property (IPWorksEncrypt_RSA Class)
This property is a PEM formatted public key.
Object Oriented Interface
public function getSignerKeyPublicKey(); public function setSignerKeyPublicKey($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 121 ); ipworksencrypt_rsa_set($res, 121, $value );
Default Value
''
Remarks
This property is a PEM formatted public key. The purpose of this property is to allow easier management of the public key parameters by using only a single value.
Data Type
String
UseHex Property (IPWorksEncrypt_RSA Class)
Whether input or output is hex encoded.
Object Oriented Interface
public function getUseHex(); public function setUseHex($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 123 ); ipworksencrypt_rsa_set($res, 123, $value );
Default Value
false
Remarks
This property specifies whether the encrypted data, HashValue, and HashSignature are hex encoded.
If set to True, when Encrypt is called the class will perform the encryption as normal and then hex encode the output. OutputMessage or OutputFile will hold hex encoded data.
If set to True, when Decrypt is called the class will expect InputMessage or InputFile to hold hex encoded data. The class will then hex decode the data and perform decryption as normal.
If set to True, when Sign is called the class will compute the hash for the specified file and populate HashValue with the hex encoded hash value. It will then create the hash signature and populate HashSignature with the hex encoded hash signature value. If HashValue is specified directly it must be a hex encoded value.
If set to True, when VerifySignature is called the class will compute the hash value for the specified file and populate HashValue with the hex encoded hash value. It will then hex decode HashSignature and verify the signature. HashSignature must hold a hex encoded value. If HashValue is specified directly it must be a hex encoded value.
Data Type
Boolean
UseOAEP Property (IPWorksEncrypt_RSA Class)
Whether to use Optimal Asymmetric Encryption Padding (OAEP).
Object Oriented Interface
public function getUseOAEP(); public function setUseOAEP($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 124 ); ipworksencrypt_rsa_set($res, 124, $value );
Default Value
false
Remarks
Whether to use Optimal Asymmetric Encryption Padding (OAEP). By default this value is False and the class will use PKCS1.
Note: When set to True the HashAlgorithm is also applicable when calling Encrypt and Decrypt.
Data Type
Boolean
UsePSS Property (IPWorksEncrypt_RSA Class)
Whether to use RSA-PSS during signing and verification.
Object Oriented Interface
public function getUsePSS(); public function setUsePSS($value);
Procedural Interface
ipworksencrypt_rsa_get($res, 125 ); ipworksencrypt_rsa_set($res, 125, $value );
Default Value
false
Remarks
This property specifies whether RSA-PSS will be used when signing and verifying messages. The default value is False.
Data Type
Boolean
Config Method (IPWorksEncrypt_RSA Class)
Sets or retrieves a configuration setting.
Object Oriented Interface
public function doConfig($configurationstring);
Procedural Interface
ipworksencrypt_rsa_do_config($res, $configurationstring);
Remarks
Config is a generic method available in every class. It is used to set and retrieve configuration settings for the class.
These settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.
To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).
To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.
CreateKey Method (IPWorksEncrypt_RSA Class)
Creates a new key.
Object Oriented Interface
public function doCreateKey();
Procedural Interface
ipworksencrypt_rsa_do_createkey($res);
Remarks
This method creates a new public and private key.
When calling CreateKey the Key* properties are populated with a new private and public key.
RSA Keys
A RSA key is made up of a number of individual parameters.
The public key consists of the following parameters:
The class also includes the KeyPublicKey property which holds the PEM formatted public key for ease of use. This is helpful if you are in control of both sides of the encryption/signing and decryption/signature verification process. When sending the public key to a recipient note that not all implementations will support using the PEM formatted value in KeyPublicKey in which case the individual parameters must be sent.
The private key may be represented in one of two ways. Both are mathematically equivalent. Private key format 1:
Private key format 2 is simpler but has decreased performance when decrypting and signing. This format is: The class also include the KeyPrivateKey property which holds the PEM formatted private key for ease of use. This is helpful for storing the private key more easily.Decrypt Method (IPWorksEncrypt_RSA Class)
Decrypts the input data using the specified private key.
Object Oriented Interface
public function doDecrypt();
Procedural Interface
ipworksencrypt_rsa_do_decrypt($res);
Remarks
This method decrypts the input data using the private key specified in the Key* properties. Alternatively, a certificate may be specified by setting Certificate
Input and Output Properties
The class will determine the source and destination of the input and output based on which properties are set.
The order in which the input properties are checked is as follows:
When a valid source is found the search stops. The order in which the output properties are checked is as follows:
- OutputFile
- OutputMessage: The output data is written to this property if no other destination is specified.
Key Size and the Maximum Length of Data
RSA has an upper limit to the amount of data that can be encrypted or decrypted, also known as message length. This can typically be calculated as the size of the key minus the size of the RSA header and padding.
When not using OAEP, the following formula and table can be referenced. (RSA Key Bytes) - (Header Bytes) = Length of data, where Header Bytes is always 11.
RSA Key Length (bits) | Length (bits) | Length (bytes) |
1024 | 936 | 117 |
2048 | 1960 | 245 |
3072 | 2984 | 373 |
4096 | 4008 | 501 |
When using OAEP, the following formula and table can be referenced. (RSA Key Bytes) - (2 * Hash Length Bytes) - 2 = Length of data. The table below assumes SHA-256 for the hash, so Hash Length Bytes is 32.
RSA Key Length (bits) | Length (bits) | Length (bytes) |
1024 | 496 | 62 |
2048 | 1520 | 190 |
3072 | 2544 | 318 |
4096 | 3568 | 446 |
Encrypt Method (IPWorksEncrypt_RSA Class)
Encrypts the input data using the recipient's public key.
Object Oriented Interface
public function doEncrypt();
Procedural Interface
ipworksencrypt_rsa_do_encrypt($res);
Remarks
This method encrypts the input data using the public key specified in the RecipientKey* properties. Alternatively, a certificate may be specified by setting RecipientCert
Input and Output Properties
The class will determine the source and destination of the input and output based on which properties are set.
The order in which the input properties are checked is as follows:
When a valid source is found the search stops. The order in which the output properties are checked is as follows:
- OutputFile
- OutputMessage: The output data is written to this property if no other destination is specified.
Key Size and the Maximum Length of Data
RSA has an upper limit to the amount of data that can be encrypted or decrypted, also known as message length. This can typically be calculated as the size of the key minus the size of the RSA header and padding.
When not using OAEP, the following formula and table can be referenced. (RSA Key Bytes) - (Header Bytes) = Length of data, where Header Bytes is always 11.
RSA Key Length (bits) | Length (bits) | Length (bytes) |
1024 | 936 | 117 |
2048 | 1960 | 245 |
3072 | 2984 | 373 |
4096 | 4008 | 501 |
When using OAEP, the following formula and table can be referenced. (RSA Key Bytes) - (2 * Hash Length Bytes) - 2 = Length of data. The table below assumes SHA-256 for the hash, so Hash Length Bytes is 32.
RSA Key Length (bits) | Length (bits) | Length (bytes) |
1024 | 496 | 62 |
2048 | 1520 | 190 |
3072 | 2544 | 318 |
4096 | 3568 | 446 |
Reset Method (IPWorksEncrypt_RSA Class)
Resets the class.
Object Oriented Interface
public function doReset();
Procedural Interface
ipworksencrypt_rsa_do_reset($res);
Remarks
When called, the class will reset all of its properties to their default values.
Sign Method (IPWorksEncrypt_RSA Class)
Creates a hash signature.
Object Oriented Interface
public function doSign();
Procedural Interface
ipworksencrypt_rsa_do_sign($res);
Remarks
This method will create a hash signature.
Before calling this method specify the input file by setting InputFile or InputMessage.
A key is required to create the hash signature. You may create a new key by calling CreateKey, or specify an existing key pair in Key. Alternatively, a certificate may be specified by setting Certificate. When this method is called the class will compute the hash for the specified file and populate HashValue. It will then create the hash signature using the specified Key and populate HashSignature.
To create the hash signature without first computing the hash simply specify HashValue before calling this method.
The Progress event will fire with updates for the hash computation progress only. The hash signature creation process is quick and does not require progress updates.
VerifySignature Method (IPWorksEncrypt_RSA Class)
Verifies the signature for the specified data.
Object Oriented Interface
public function doVerifySignature();
Procedural Interface
ipworksencrypt_rsa_do_verifysignature($res);
Remarks
This method will verify a hash signature.
Before calling this method specify the input file by setting InputFile or InputMessage.
A public key and the hash signature are required to perform the signature verification. Specify the public key in SignerKey. Alternatively, a certificate may be specified by setting SignerCert. Specify the hash signature in HashSignature.
When this method is called the class will compute the hash for the specified file and populate HashValue. It will verify the signature using the specified SignerKey and HashSignature.
To verify the hash signature without first computing the hash simply specify HashValue before calling this method.
The Progress event will fire with updates for the hash computation progress only. The hash signature verification process is quick and does not require progress updates.
Error Event (IPWorksEncrypt_RSA Class)
Information about errors during data delivery.
Object Oriented Interface
public function fireError($param);
Procedural Interface
ipworksencrypt_rsa_register_callback($res, 1, array($this, 'fireError'));
Parameter List
'errorcode'
'description'
Remarks
The Error event is fired in case of exceptional conditions during message processing. Normally the class fails with an error.
ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Codes section.
Progress Event (IPWorksEncrypt_RSA Class)
Fired as progress is made.
Object Oriented Interface
public function fireProgress($param);
Procedural Interface
ipworksencrypt_rsa_register_callback($res, 2, array($this, 'fireProgress'));
Parameter List
'bytesprocessed'
'percentprocessed'
Remarks
This event is fired automatically as data is processed by the class.
The PercentProcessed parameter indicates the current status of the operation.
The BytesProcessed parameter holds the total number of bytes processed so far.
Config Settings (RSA Class)
The class accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.RSA Config Settings | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
KeyFormat:
How the public and private key are formatted.This setting controls the format of KeyPublicKey and KeyPrivateKey. By default
these properties hold PEM formatted public and private key data. When set to 1 (XML) the keys
are stored in a XML format. This only affects the values returned by the class; the actual keys remain
the same regardless of this setting. Possible values are:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
KeySize: The size, in bits, of the secret key.This specifies the size, in bits, of the secret key. The minimum key size for RSA is 384. The maximum key size is 4096. Note that large values such as 4096 will impact performance. The default value is 1024. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
OAEPMGF1HashAlgorithm:
The MGF1 hash algorithm used with OAEP.This configuration setting specifies the MGF1 hash algorithm used when UseOAEP is set to True. The default value is SHA256. Possible values are as follows:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
OAEPParams: The hex encoded OAEP parameters.This configuration setting optionally specifies Optimal Asymmetric Encryption Padding (OAEP) parameters to be used when UseOAEP is set to True. The specified value should be hex encoded. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
OAEPRSAHashAlgorithm:
The RSA hash algorithm used with OAEP.This configuration setting specifies that RSA hash algorithm used when UseOAEP is set to True. The default value is SHA256. Possible values are as follows:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Base Config Settings | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BuildInfo: Information about the product's build.When queried, this setting will return a string containing information about the product's build. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CodePage:
The system code page used for Unicode to Multibyte translations.The default code page is Unicode UTF-8 (65001).
The following is a list of valid code page identifiers:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LicenseInfo:
Information about the current license.When queried, this setting will return a string containing information about the license this instance of a class is using. It will return the following information:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MaskSensitive:
Whether sensitive data is masked in log messages.In certain circumstances it may be beneficial to mask sensitive data, like passwords, in log messages. Set this to true to mask sensitive data. The default is false.
This setting only works on these classes: AS3Receiver, AS3Sender, Atom, Client(3DS), FTP, FTPServer, IMAP, OFTPClient, SSHClient, SCP, Server(3DS), Sexec, SFTP, SFTPServer, SSHServer, TCPClient, TCPServer. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ProcessIdleEvents: Whether the class uses its internal event loop to process events when the main thread is idle.If set to False, the class will not fire internal idle events. Set this to False to use the class in a background thread on Mac OS. By default, this setting is True. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SelectWaitMillis: The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.If there are no events to process when DoEvents is called, the class will wait for the amount of time specified here before returning. The default value is 20. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
UseInternalSecurityAPI:
Tells the class whether or not to use the system security libraries or an internal implementation.
When set to false, the class will use the system security libraries by default to perform cryptographic functions where applicable.
Setting this setting to true tells the class to use the internal implementation instead of using the system security libraries. On Windows, this setting is set to false by default. On Linux/macOS, this setting is set to true by default. To use the system security libraries for Linux, OpenSSL support must be enabled. For more information on how to enable OpenSSL, please refer to the OpenSSL Notes section. |
Trappable Errors (RSA Class)
RSA Errors
102 No Key specified. | |
104 Cannot read or write file. | |
105 key parameters incorrect. | |
106 Cannot create hash. | |
111 OutputFile already exists and Overwrite is False. | |
113 Input data or HashValue must be specified. | |
121 Invalid certificate. | |
124 HashSignature must be specified. | |
304 Cannot write file. | |
305 Cannot read file. | |
306 Cannot create file. | |
1101 Missing RSA parameter: Modulus | |
1102 Invalid RSA parameter: Modulus cannot be zero. | |
1103 Missing RSA parameters: Public or Private exponent must be present. | |
1104 Invalid RSA parameter: Exponent cannot be zero. | |
1105 Invalid RSA parameter: D cannot be zero. | |
1106 Invalid hash algorithm. | |
1107 Missing hash value. | |
1108 HashSignature must be specified. | |
1109 Invalid hash size. | |
1110 Public key must be specified. | |
1111 Key must be specified. | |
1112 RSA key too short to sign message. | |
1113 Missing the data to encrypt/decrypt. | |
1114 Invalid cipher length. The data may not have been encrypted with the public key corresponding to the specified private key data. | |
1115 Invalid cipher text. The data may not have been encrypted with the public key corresponding to the specified private key data. | |
1116 Inadequate padding. The data may not have been encrypted with the public key corresponding to the specified private key data. | |
1117 Missing delimiter. The data may not have been encrypted with the public key corresponding to the specified private key data. | |
1118 Message too long. |