Introduction
PKI Proxy uses a REST API to communicate between the PKCS#11 driver and the server. This is normally handled automatically, but you can also make requests directly to the server using the API below. To connect to the REST API, first configure a user and share certificates with them from the server. Each request should be signed with that user's credentials.
The following endpoints are supported:
Object Schemas
Authentication
All requests to the REST API must be authenticated as one of the configured users. Users are created within the PKI Proxy application and can be assigned any of the following authentication methods:
Secret Key | A pre-shared secret key is used along with the specified user. Each request and response is individually authenticated using a signature scheme, discussed in more detail below. |
HTTP Basic | Standard HTTP Basic authentication is performed using the defined user and password. |
HTTP NTLM | HTTP NTLM authentication is performed using a Windows account. |
When a certificate is shared, only the users which have been allowed access to that specific certificate may perform operations with it.
Basic Authentication
PKI Proxy supports standard HTTP Basic authentication. To perform Basic authentication, specify the username and password separated by a ':'. For instance username:password, then Base64 encode the result and include it in the Authorization header like this:
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
NTLM Authentication
PKI Proxy also supports NTLM authentication. This uses the standard Windows implementation, which your client will need to support if you want to use this authentication method.
In NTLM, the client sends a Negotiate message, which contains an Authorization header with a negotiation token:
Authorization: NTLM <Negotiation Token>
The server responds with a Challenge response, which contains a WWW-Authenticate header with a challenge token:
WWW-Authenticate: NTLM <Challenge Token>
And then the client sends an Authenticate response, which contains an Authorization header again, this time with an authorization token:
Authorization: NTLM <Auth Token>
When configuring NTLM in PKI Proxy, you can use the current Windows user or select to use another Windows user.
Secret Key Authentication
In addition to the Basic and NTLM authentication types, PKI Proxy supports a Secret Key authentication mechanism that operates on top of HTTP. The Secret Key mechanism relies on a pair of credentials secretly shared by the PKI Proxy client and server.
Secret Key authentication is already supported in the included PKCS11 driver and pkptool utility. The instructions below are only needed when connecting directly to the REST API.
While Secret Key authentication is broadly similar to HTTP Basic (both use a public credential / secret credential pair), the Secret Key mechanism provides a much stronger communication protection:
- HTTP Basic only authenticates the client. Secret Key authenticates both parties.
- HTTP Basic includes the password in the request. The secret keys are never sent over the network.
- HTTP Basic only proves that the client knows the password. Secret Key proves that the client and the server know the key and guarantees the integrity of the request and response content.
- HTTP Basic is susceptible to replay attacks. Secret Key is not.
- Passwords are easier for attackers to discover than arbitrary, random, binary secret keys.
Below we provide the algorithm that PKI Proxy uses to calculate the Secret Key authentication parameters. The algorithm assumes that the parties have already generated and exchanged the secret key value securely, and have it configured in their settings for the authenticating user. Secret Key authentication follows these steps:
- The client prepares a request imprint based on the HTTP request it plans to send.
- The client digitally signs the request imprint with its secret key, and includes the signature with the request - either as a sig parameter of the query string or as an X-Sig HTTP header.
- Upon receiving a signed request, the server builds its own version of the request imprint, using the actual request it received from the client.
- The server then calculates its own version of the signature, using the secret key and the request imprint it has just built. If the two signatures match, the request is genuine and intact.
Building the request imprint
The request imprint is a concatenation of the following elements:
- HTTP verb in lowercase
- LF
- The value of the Content-Type header
- LF
- The canonicalized query string (everything after the domain name, including the leading /, but excluding the sig parameter, if it is present)
- LF
- The body of the request, if present
Preparing a signature header
The signature header is a portion of the signature that contains information about the signature itself, and is included in the signature hash. Compose the signature header as following:
SIGNATURE_VERSION + ":" + KEYID + ":" + TIMESTAMP + ":" + SALT.
- SIGNATURE_VERSION specifies the variant of the signature that you intend to use (e.g. pkps3). See below for more details about the signature variants.
- KEYID specifies the key ID (aka the username) associated with the secret key. This should contain the name on your PKI Proxy user account.
- TIMESTAMP is current time in UTC expressed as the number of milliseconds from the Unix epoch (for example, 1732888798672 for November 29, 2024).
- SALT is a random 16-character value. PKI Proxy applications generate it as hex encoding of a random 8-element byte array, but you are free to use any sufficiently random string.
Calculating the signed value
PKI Proxy supports three signature methods. Method 1 is not as strong cryptographically as Methods 2 and 3, but it is easier to implement in native Javascript. Methods 2 and 3 are stronger, but less Javascript-friendly.
All the signature methods operate on the request imprint and header strings as defined above. They also use an auxiliary HASH function shown below:
string HASH(string key, string data)
{
return HMACSHA256(key, data).ToHex().ToUppercase();
}
Method 1
In pseudocode, this method can be written as following:
string SignedValueV1(string secretKey, string requestImprint, string header)
{
hkey = "PKPS1" + secretKey;
for (i = 0; i < 1000; i++)
{
modifier = i.ToString() + header;
hkey = HASH(hkey, modifier);
}
return HASH(hkey, requestImprint);
}
The SIGNATURE-VERSION for Method 1 is pkps1.
Method 2
The pseudocode for Method 2 looks as following:
string SignedValueV2(string secretKey, string requestImprint, string header)
{
hkey = PBKDF2(SHA1, secretKey, header, 10000 /* iterations */, 32 /* output length in bits */);
return HASH(hkey, requestImprint);
}
The SIGNATURE-VERSION for Method 2 is pkps2.
Method 3
The Method 3 can be implemented using the following pseudocode:
string SignedValueV3(string secretKey, string requestImprint, string header)
{
hkey = PBKDF2(SHA256, secretKey, header, 10000 /* iterations */, 256 /* output length in bits */);
return HASH(hkey, requestImprint);
}
The SIGNATURE-VERSION for Method 3 is pkps3.
Adding the signed value to the request
The signed value should always be a 64-character hex string. Once you've calculated it, append the result to the header string separated by a colon and encode the result in base64 to complete the signature. You can then add the completed signature to your request either as an additional query parameter ("sig") or as an HTTP header ("X-Sig").
To validate the signature, follow the same method to build the request imprint and the signature, but instead of building the signature header yourself, use the parameters included in the header of the signature you are validating. Then compare the signature you received with the one you've just built. If the signatures match, the request or response is genuine and has not been modified.
Examples
This section will illustrate the use of two signature methods, 1 and 3. The example assumes that there is a user named keyuser set up on both sides of the PKI Proxy channel, with Secret Key authentication type configured, and the secret key of 1234567890. If the PKI Proxy client is sending a list request to PKI Proxy server for all certificate objects, the request will be a GET request to http://pkiproxy.server.com/objects?filter=class%3Dcertificate.
First, derive the request imprint and the header string:
Request imprint:
get \n \n /objects?filter=class%3Dcertificate \nNote that the Content-Type and the request body are empty strings.
The following are examples of signature headers for methods 1 and 3 respectively. For the same salt and timestamp, the signature method prefix is the only difference between the two:
pkps1:keyuser:1733143134108:2C86BA1E47132F32 pkps3:keyuser:1733143134108:2C86BA1E47132F32
Calculating the signed value for method 1 uses the following flow:
string SignedValueV1(string secretKey = "1234567890", string requestImprint, string header = "pkps1:keyuser:1733143134108:2C86BA1E47132F32")
{
hkey = "PKPS1" + secretKey; // hkey = PKPS11234567890
for (i = 0; i < 1000; i++)
{
modifier = i.ToString() + header; // for the i value of 0, modifier is 0pkps1:keyuser:1733143134108:2C86BA1E47132F32,
hkey = HASH(hkey, modifier); // and hkey is 24681907F88BCE1CDA911443759ABB236729EBEBA88C917B59AA48B204406BF3
}
// By the exit of the loop, hkey is 932BB59B278773CA4F55E5BEF774961D88F001D793450FB0B30A1A75AE9994DB.
// Passing it to HASH one final time:
return HASH(hkey, requestImprint); // the result is D2A2C56F719E412681429C9F1D79ACBD8F2E5DA5AEE1EA43DFE21520DBBD21D6.
}
Calculating the signed value for method 3 uses the following flow:
string SignedValueV3(string secretKey = "1234567890", string requestImprint, string header = "pkps3:keyuser:1733143134108:2C86BA1E47132F32")
{
hkey = PBKDF2(SHA256, secretKey, header, 10000, 256);
// The output of PBKDF2 is a 32-byte binary array of [4B, E0, A7, E6, 8E, 96, C2, AF,
// 8E, B5, 48, F1, 89, 4C, 68, DD, 59, 8A, 84, 1C, 80, EC, 07, 14, 3B, A5, 0E, 52,
// A5, 44, DB, C2].
return HASH(hkey, requestImprint); // the result is 799709C3D9A0BD12E249D8EEBE6411368D0F54ABFBEEFEF16A6107F234FEF3F3.
}
Once the signed value has been created, form the full signature by appending it to the header and encoding the whole string with base64 (it does not need to be aligned to a 4-byte boundary with trailing '=' characters):
// Method 1
signature_unencoded = pkps1:keyuser:1733143134108:2C86BA1E47132F32:D2A2C56F719E412681429C9F1D79ACBD8F2E5DA5AEE1EA43DFE21520DBBD21D6
signature_encoded = cGtwczE6a2V5dXNlcjoxNzMzMTQzMTM0MTA4OjJDODZCQTFFNDcxMzJGMzI6RDJBMkM1NkY3MTlFNDEyNjgxNDI5QzlGMUQ3OUFDQkQ4RjJFNURBNUFFRTFFQTQzREZFMjE1MjBEQkJEMjFENg
// Method 3
signature_unencoded = pkps3:keyuser:1733143134108:2C86BA1E47132F32:799709C3D9A0BD12E249D8EEBE6411368D0F54ABFBEEFEF16A6107F234FEF3F3
signature_encoded = cGtwczM6a2V5dXNlcjoxNzMzMTQzMTM0MTA4OjJDODZCQTFFNDcxMzJGMzI6Nzk5NzA5QzNEOUEwQkQxMkUyNDlEOEVFQkU2NDExMzY4RDBGNTRBQkZCRUVGRUYxNkE2MTA3RjIzNEZFRjNGMw
Once you append the signature to the query string, it should look like this:
// Method 1
/objects?filter=class%3Dcertificate&sig=cGtwczE6a2V5dXNlcjoxNzMzMTQzMTM0MTA4OjJDODZCQTFFNDcxMzJGMzI6RDJBMkM1NkY3MTlFNDEyNjgxNDI5QzlGMUQ3OUFDQkQ4RjJFNURBNUFFRTFFQTQzREZFMjE1MjBEQkJEMjFENg
// Method 3
/objects?filter=class%3Dcertificate&sig=cGtwczM6a2V5dXNlcjoxNzMzMTQzMTM0MTA4OjJDODZCQTFFNDcxMzJGMzI6Nzk5NzA5QzNEOUEwQkQxMkUyNDlEOEVFQkU2NDExMzY4RDBGNTRBQkZCRUVGRUYxNkE2MTA3RjIzNEZFRjNGMw
Get Service Information
GET /
This endpoint can be used to gather basic information about the key store, such as the cryptographic mechanisms it supports.
Request Headers
Name | Type | Description |
---|---|---|
X-Sig
optional |
string | An encoded request signature. |
Request Query Parameters
Name | Type | Description |
---|---|---|
sig
optional |
string |
An encoded request signature. |
Responses
The details of the keystore.
Content-type: application/jsonProperties
Name | Type | Description |
---|---|---|
id | string |
The Id of the keystore. |
vendor | string |
The vendor of the keystore. |
description | string |
A description of the keystore. |
version | string |
The keystore's version. |
active | boolean |
Whether or not the keystore is active. |
capabilities | CryptoMechanismInfo array |
The cryptographic mechanisms supported by the keystore. |
services | object array |
The services offered by the keystore. |
props | object array |
Other properties of the keystore. |
trace | string |
An optional low-level request execution trace. |
List Certificates and Keys
GET /objects
This endpoint provides access to the certificates, public keys, and private keys that have been shared with the user. Each object is associated with properties such as an Id, a type, a human-friendly label, and its cryptographic capabilities.
For private keys, only metadata such as labels and supported operations will be returned. The PKI Proxy key store never exposes sensitive or private parameters.
Request Headers
Name | Type | Description |
---|---|---|
X-Sig
optional |
string | An encoded request signature. |
Request Query Parameters
Name | Type | Description |
---|---|---|
filter
optional |
string |
A filtering criteria. |
maxcount
optional |
integer |
The maximum number of objects to return. If this parameter is provided, and as its outcome the returned list ends up incomplete, a "token" parameter is returned which can be used as a new filter for continuing the listing. |
sig
optional |
string |
An encoded request signature. |
Responses
The list of objects available in the key store.
Content-type: application/jsonProperties
Name | Type | Description |
---|---|---|
objects | CryptoObject array |
A list of objects matching the criteria from the request. |
token | string |
A token that can be used as a filter to continue the list. |
trace | string |
An optional low-level request execution trace . |
Encrypt Data
POST /encrypt
This endpoint can be used to encrypt data with a specified key. The Id of the encryption key must be included with the request, either as a query parameter or in a JSON body. If the client credentials are correct, the encrypted data will be passed back to the client in the response.
Request Headers
Name | Type | Description |
---|---|---|
X-Sig
optional |
string | An encoded request signature. |
Request Query Parameters
Name | Type | Description |
---|---|---|
key
optional |
string |
The ID of the key to perform the encryption. |
mech
optional |
string |
The mechanism to use, if not deductable from the key. Possible values are:["rsaEncryption","rsaOaep"]
|
fmt
optional |
string |
The output format to use. The default output format matches the input format (JSON in - JSON out, or octet-stream in - octet-stream out). Possible values are:["json","plain"]
|
sig
optional |
string |
An encoded request signature. |
Request Body
Name | Type | Description |
---|---|---|
plaintext
(optional) |
string (binary) |
The plaintext data to encrypt. |
key
(optional) |
string (binary) |
The Id of the key to use for encryption. |
mech
(optional) |
CryptoMechanism (binary) |
The mechanism to use for encryption. |
Responses
OK
Content-type: application/jsonProperties
Name | Type | Description |
---|---|---|
ciphertext | string |
The encrypted data. |
trace | string |
An optional low-level request execution trace. |
OK
Content-type: application/octet-streamProperties
Name | Type | Description |
---|---|---|
ciphertext | string (binary) |
The encrypted data. |
trace | string (binary) |
An optional low-level request execution trace. |
Decrypt Data
POST /decrypt
This endpoint can be used to decrypt data. The Id of the decryption key must be included with the request, either as a query parameter or in a JSON body. If the client credentials are correct and the data is successfully decrypted with the specified key, the encrypted data will be passed back to the client in the response.
Request Headers
Name | Type | Description |
---|---|---|
X-Sig
optional |
string | An encoded request signature. |
Request Query Parameters
Name | Type | Description |
---|---|---|
key
optional |
string |
The ID of the key to perform the decryption. |
mech
optional |
string |
The mechanism to use, if not deductable from the key. Possible values are:["rsaEncryption","rsaOaep"]
|
fmt
optional |
string |
The output format to use. The default output format matches the input format (JSON in - JSON out, or octet-stream in - octet-stream out). Possible values are:["json","plain"]
|
sig
optional |
string |
An encoded request signature. |
Request Body
Name | Type | Description |
---|---|---|
ciphertext
(optional) |
string (binary) |
The encrypted data to decrypt. |
key
(optional) |
string (binary) |
The Id of the key to use for decryption. |
mech
(optional) |
CryptoMechanism (binary) |
The mechanism to use for decryption. |
Responses
OK
Content-type: application/jsonProperties
Name | Type | Description |
---|---|---|
plaintext | string |
The plaintext data. |
trace | string |
An optional low-level request execution trace |
OK
Content-type: application/octet-streamProperties
Name | Type | Description |
---|---|---|
plaintext | string (binary) |
The plaintext data. |
trace | string (binary) |
An optional low-level request execution trace |
Sign Data
POST /sign
This endpoint can be used to sign data. The Id of the signing key must be included with the request, either as a query parameter or in a JSON body. The body of the request should also include a hash of the data to be signed, either in a JSON object with other parameters or in a binary format (with other parameters in the query parameters). The signature will be returned in the body of the response.
Request Headers
Name | Type | Description |
---|---|---|
X-Sig
optional |
string | An encoded request signature. |
Request Query Parameters
Name | Type | Description |
---|---|---|
key
optional |
string |
The ID of the key to perform the signing. |
mech
optional |
string |
The mechanism to use, if not deductable from the key. Possible values are:["rsaEncryption","sha1WithRSAEncryption","sha256WithRSAEncryption","sha384WithRSAEncryption","sha512WithRSAEncryption","sha1WithRSAPss","sha256WithRSAPss","sha384WithRSAPss","sha512WithRSAPss","sha1WithECDSA","sha256WithECDSA","sha384WithECDSA","sha512WithECDSA"]
|
fmt
optional |
string |
The output format to use. The default output format matches the input format (JSON in - JSON out, or octet-stream in - octet-stream out). Possible values are:["json","plain"]
|
sig
optional |
string |
An encoded request signature. |
Request Body
Name | Type | Description |
---|---|---|
plaintext
(optional) |
string (binary) |
The data to sign. |
key
(optional) |
string (binary) |
The Id of the key to use for signing. |
mech
(optional) |
CryptoMechanism (binary) |
The mechanism to use for signing. |
Responses
OK
Content-type: application/jsonProperties
Name | Type | Description |
---|---|---|
signature | string |
The signature. |
trace | string |
An optional low-level request execution trace |
OK
Content-type: application/octet-streamProperties
Name | Type | Description |
---|---|---|
signature | string (binary) |
The signature. |
trace | string (binary) |
An optional low-level request execution trace |
Verify a Signature
POST /verify
This endpoint can be used to verify signed data. The Id of the verification key must be included with the request, either as a query parameter or in a JSON body.
Request Headers
Name | Type | Description |
---|---|---|
X-Sig
optional |
string | An encoded request signature. |
Request Query Parameters
Name | Type | Description |
---|---|---|
key
optional |
string |
The ID of the key to verify the signature. |
mech
optional |
string |
The mechanism to use, if not deductable from the key and/or signature. Possible values are:["rsaEncryption","sha1WithRSAEncryption","sha256WithRSAEncryption","sha384WithRSAEncryption","sha512WithRSAEncryption","sha1WithRSAPss","sha256WithRSAPss","sha384WithRSAPss","sha512WithRSAPss","sha1WithECDSA","sha256WithECDSA","sha384WithECDSA","sha512WithECDSA"]
|
fmt
optional |
string |
The output format to use. The default output format matches the input format (JSON in - JSON out, or octet-stream in - octet-stream out). Possible values are:["json","plain"]
|
sig
optional |
string |
An encoded request signature. |
Request Body
Name | Type | Description |
---|---|---|
plaintext
(optional) |
string (binary) |
The signed data. |
signature
(optional) |
string (binary) |
The signature. |
key
(optional) |
string (binary) |
The Id of the key to use to verify the signature. |
mech
(optional) |
CryptoMechanism (binary) |
The mechanism to use to verify the signature. |
Responses
OK
Content-type: application/jsonProperties
Name | Type | Description |
---|---|---|
verifyresult | integer |
The outcome of the signature verification. |
verifydetails | string |
The details of the signature verification. |
plaintext | string |
The plaintext (now unsigned) data. |
mech | CryptoMechanism |
The mechanism to use to verify the signature. |
trace | string |
An optional low-level request execution trace |
OK
Content-type: application/octet-streamProperties
Name | Type | Description |
---|---|---|
verifyresult | integer (binary) |
The outcome of the signature verification. |
verifydetails | string (binary) |
The details of the signature verification. |
plaintext | string (binary) |
The plaintext (now unsigned) data. |
mech | CryptoMechanism (binary) |
The mechanism to use to verify the signature. |
trace | string (binary) |
An optional low-level request execution trace |
Get Server Configuration
GET /config
This endpoint can be used to get the server's configuration parameters, such as properties, certificates, and users.
Request Headers
Name | Type | Description |
---|---|---|
X-Sig
optional |
string | An encoded request signature. |
Request Query Parameters
Name | Type | Description |
---|---|---|
filter
optional |
string |
A filtering criteria. |
sig
optional |
string |
An encoded request signature. |
Responses
A array of configuration parameters.
Content-type: application/jsonProperties
Name | Type | Description |
---|---|---|
props | object array |
An array of properties for the server. |
certs | object array |
An array of certificates on the server. |
users | object array |
An array of users on the server. |
trace | string |
An optional low-level request execution trace |
Change Server Configuration
PUT /config
The server configuration can be changed by sending a PUT request to the configuration endpoint.
Request Headers
Name | Type | Description |
---|---|---|
X-Sig
optional |
string | An encoded request signature. |
Request Query Parameters
Name | Type | Description |
---|---|---|
sig
optional |
string |
An encoded request signature. |
Request Body
A valid value for the request body is required when performing this operation.
Name | Type | Description |
---|---|---|
props | array |
An array of properties for the server. |
certs | array |
An array of certificates on the server. |
users | array |
An array of users on the server. |
Responses
OK
Content-type:Schemas
CryptoObject
Information representing an object stored in the service.
Name | Type | Description |
---|---|---|
id | string |
The Id of the object. |
class | string |
The type of object. |
private | boolean |
Whether the object is private. |
sensitive | boolean |
Whether the object contains sensitive data. |
exportable | boolean |
Whether the object is exportable. |
readonly | boolean |
Whether the object is read-only. |
group | string |
The group the object belongs to. |
label | string |
A lable for the object. |
value | string |
The contents of the object. |
fingerprint | string |
The object's fingerprint. |
validfrom | string |
The object's "valid from" date. |
validto | string |
The object's "valid to" date. |
subject | string |
The subject of a certificate. |
issuer | string |
The issuer of a certificate. |
serialno | string |
The serial number of a certificate. |
friendlyname | string |
The friendly name of a certificate. |
mech | string |
The mechanism for the private key (i.e. "RSA"). |
mechvars | string array |
Additional parameters for the private key mechanism (i.e. "PSS"). |
size | integer |
The size of the object, in bytes. |
ops | Property |
The operations supported by the object. |
props | Property array |
An array of additional properties for the object. |
CryptoMechanismInfo
Detailed information for a cryptographic mechanism.
Name | Type | Description |
---|---|---|
name | string |
The name of the cryptographic mechanism. |
aliases | string array |
An array of aliases for the cryptographic mechanism. |
ops | CryptoMechanismOperations |
The operations supported by the cryptographic mechanism. |
props | CryptoMechanismProperties |
An array of properties for the mechanism. |
CryptoMechanism
Basic information representing a cryptographic mechanism.
Name | Type | Description |
---|---|---|
name | string |
The name of the cryptographic mechanism. Possible values are:[
"rsaEncryption",
"rsaOaep",
"sha1WithRSAEncryption",
"sha256WithRSAEncryption",
"sha384WithRSAEncryption",
"sha512WithRSAEncryption",
"sha1WithRSAPss",
"sha256WithRSAPss",
"sha384WithRSAPss",
"sha512WithRSAPss",
"sha1WithECDSA",
"sha256WithECDSA",
"sha384WithECDSA",
"sha512WithECDSA"
]
|
props | Property array |
An array of properties for the mechanism. |
CryptoObjectOperations
An object representing the cryptographic operations supported by an object on the server.
Name | Type | Description |
---|---|---|
encrypt | boolean |
Whether the object can be used for encryption. |
decrypt | boolean |
Whether the object can be used for decryption. |
sign | boolean |
Whether the object can be used for signing. |
verify | boolean |
Whether the object can be used for verifying a signature. |
CryptoMechanismOperations
An object representing the cryptographic operations supported by a cryptographic mechanism on the server.
Name | Type | Description |
---|---|---|
encrypt | boolean |
Whether the mechanism can be used for encryption. |
decrypt | boolean |
Whether the mechanism can be used for decryption. |
sign | boolean |
Whether the mechanism can be used for signing. |
verify | boolean |
Whether the mechanism can be used for verifying signatures. |
hash | boolean |
Whether the mechanism can be used for to generate a hash. |
signrecover | boolean |
Whether the mechanism can be used to create an enveloping signature. |
verifyrecover | boolean |
Whether the mechanism can be used to verify an enveloping signature. |
generate | boolean |
Whether the mechanism can be used to generate a key. |
wrap | boolean |
Whether the mechanism can be used to wrap a key. |
unwrap | boolean |
Whether the mechanism can be used to unwrap a key. |
derive | boolean |
Whether the mechanism can be used to derive a key. |
rng | boolean |
Whether the mechanism can be used to generate random numbers. |
Property
A name-value pair that represents a property on a cryptographic object or mechanism.
Name | Type | Description |
---|---|---|
prop | string |
The name of the property |
propval | string |
The value of the property |
CryptoMechanismProperties
A collection of properties for a cryptographic mechanism.
Name | Type | Description |
---|---|---|
minbits | integer |
The minimum key length for the mechanism. |
maxbits | integer |
The maximum key length for the mechanism. |
oth | Property array |
An array of other properties. |