In a typical profiling and monitoring session, the Java virtual machine must do a large amount of extra work: collecting, storing, and analyzing data, as well as replying to requests from external tools. When this is done on embedded devices, possibly using a slower CPU or constrained memory, development can become an unacceptably sluggish experience.
For this reason, version 8 of the Oracle Java ME Embedded software moves as much CPU intensive processing away from the embedded Java VM as possible. Instead, a separate application running on the host side will interact across the network with the internals of the Java VM. With this design, the VM only sends low-level events to the host application, such as state change information, methods transition, and objects information. The information is then stored and analyzed on host side, and the host application in turn provides the information to all external profilers, monitors, and managers. External tools can treat the Java SE host application as if it was the VM itself. Besides performance and footprint goals, this approach minimizes development efforts on porting different component communications to new physical transport such as USB, serial, or Bluetooth. Instead, this VM proxy application and the VM proxy channel becomes the inter-component tool, and Javacall, CLDC, MEEP, JSRs and SDK components can all take advantage of it.
The VM proxy uses a single transport connection to transmit all data for any subsystem. See Figure 2-1 for an illustration of this design; the VM proxy is the middle component.
Figure 2-1 VM Proxy and Agent Design for Java Embedded
Be sure not to confuse the VM proxy with the VM agent. The VM agent consists of native code and is located on the embedded device. The VM proxy is written in Java SE and is launched on the desktop host.
The proxy also provides a software management (SWM) API, similar to the javax.microedition.swm
package, as declared in the Java ME Embedded Profile (MEEP) specification. This API is an extension of the previous Application Management System (AMS) API of previous versions of the Oracle Java ME Embedded platform, and can be leveraged by ME SDK, IDEs, and the CLI to manage applications with any connected device.
The transport layer between the VM proxy (desktop) and the VM agent (device) is protocol-agnostic by design. However, it is currently implemented for TCP, Serial (COM port), and USB. The transport can initiate connection establishment in any direction, either from device to host or vise versa. The current supported platforms are: Win32 (the emulator), RPi (Raspberry Pi with an embedded Linux OS), Keil (RTX OS), Orion (Brew MP OS), and STMicro Discovery.
To use the VM Proxy, extract the files from your copy of the Oracle Java ME Embedded ZIP archive on the Windows desktop. The VM Proxy program is found as a JAR file inside the util
directory of the Oracle Java ME Embedded distribution, named proxy.jar.
You can start the VM Proxy on the desktop host computer either in a server or a client mode as described below.
The server mode is used by default. In this mode, the VM Proxy must be started after the Java runtime is started on the embedded board. Then do the following.
Change to the util
directory on your desktop host and enter the following command. You should see an output similar to the following:
C:\mydir\util> java -jar proxy.jar -socket <Raspberry Pi IP Address>
Channel 8 CLOSED -> AVAILABLE
Trying to open socket connection with device: <IP Address>:2201
Connected to the socket Socket[addr=/<IP address>, port 2201, localport=54784]
Debugger Connection initialized
To switch to a client mode connection, perform the following steps.
Edit the jwc_properties.ini
file on the embedded board as follows:
Set the proxy.connection_mode
property to the client
value.
Set the proxy.client_connection_address
property to the IP address of the host running the Developer Agent.
Start the Java runtime on the embedded board.
Change to the lib
directory on your desktop host and enter the following command. You should see an output similar to the following:
C:\mydir\util> java -jar proxy.jar Starting with default parameters: -ServerSocketPort 2200 -jdbport 2801 Channel 8 CLOSED -> AVAILABLE Waiting for device connections on port 2200
By default, the proxy listens for CLI connections at 65002 port on the host. The port can be changed by passing the -cliport
option while launching the proxy.
The following options are available when starting the VM Proxy using the java -jar proxy.jar command.
no options - runs proxy with default transport. The host opens a server socket and waits for a connection from the embedded device. This means the Java Embedded runtime should be started on the device with its jwc_properties.ini
file containing the following settings:
proxy.connection_mode=client proxy.client_conncetion_address=(IP address of VM Proxy)
-socket <IpAddress> - runs the proxy as a client. This means that the device should open a server socket and wait for a connection from the host. The Java Embedded runtime should be started on the device with its jwc_properties.ini
file containing the following setting:
proxy.connection_mode=server
-serial <COM_PORT> - runs the proxy with a serial transport. This means that the VM proxy communicates with device across the specified serial port.
-debug - Adds additional debugging information when the VM proxy is running.
Once the VM proxy is running on the desktop, you can use the AMS CLI. The easiest way to do this is to start a PuTTY executable on your desktop computer, and connect to localhost
at port 65002. This is shown in Figure 2-1. See the appropriate Getting Started Guide for your embedded board for platform-specific information on using the Command Line Interface.
The window from port 65002 provides a command-line interface (CLI), and is shown in Figure 2-2:
WARNING: The command-line interface (CLI) feature in this Oracle Java ME Embedded software release is provided only as a concept for your reference. It uses insecure connections with no encryption, authentication, or authorization. |
The following CLI commands are available for developers. When a command is only available for a specific embedded platform, it is shown in the description.
Installs IMlets on the embedded device.
ams-install
<URL> [auth
=<username>:<password>] [hostdownload
]
This command takes the following parameters:
Parameter | Description |
---|---|
<URL> | Specifies the JAD/JAR location. The URL may contain credentials to access the JAD/JAR server (e.g. http://username:password@host/ ...). |
hostdownload |
Downloads the JAR file using HTTP and then installs it to device via the tooling channel. Applicable for JAR files only. |
auth |
Specifies the user credentials to access the JAD/JAR server. |
This command may return the following responses:
Response | Description |
---|---|
<<ams-install,start install, <URL> | Information message about the start of the installation process. |
<<ams-install, install status: stage stage , %percentage% | Information message about the installation progress |
<<ams-install, OK,install success | Information message about the installation completing. |
<<ams-install,FAIL,missing parameters. see help. | The URL is not specified. |
<<ams-install,ERROR,unknown parameter: unexpected. see help. | An unexpected parameter was found. |
<<ams-install,ERROR,duplicate parameter: auth. see help. | One or more parameters were found two or more times. |
<<ams-install,FAIL,credentials must be specified once: in url or in auth parameter | Credential info specified twice: in <URL> and in <auth> parameter. |
<<ams-install,FAIL,can't download jar data from <URL> | An error occurred while downloading the JAR in hostdownload mode. |
<<ams-install,FAIL,errorCode errorcode, errorMessage : message | Installation was aborted for some reason, described in error message. |
<<ams-install,FAIL, error occurred exception | An unexpected error occurred. Note that this response is added for debugging purposes and to avoid confusion. |
Shows a list of installed IMlets on the device or in the specified suite. If no arguments are specified, the ams-list
command will return a list of all installed suites. If a suite's index or name/vendor combination are used, the command will list the suite's midlets.
ams-list
[<index> or <name>|<
vendor>]
This command takes the following parameters:
Parameter | Description |
---|---|
<index> | Specifies the suite via its index number. |
<name>|<vendor> | Specified the suite via its name and vendor |
This command may return the following responses:
Response | Description |
---|---|
<<ams-list,FAIL,invalid parameters | Unexpected parameters were found |
<<ams-list,OK,0 suites are installed | No suites were found on the device |
<<ams-list,0.name|vendor,status
... <<ams-list,N.name|vendor,status <<ams-list,OK,N suites are installed |
List of installed suites with details |
<<ams-list,FAIL,invalid parameter | Parsing the suite's index failed or the | character was missed |
<<ams-list,FAIL,not found | The suite was not found |
<<ams-list,1.midlet,status
... <<ams-list,N.midlet,status <<ams-list,OK,N midlets are installed in suiteName|suiteVendor |
List of the installed midlets in the suite. Note that each suite status can be RUNNING or STOPPED. |
Updates the specified suite.
ams-update
<index> or <name|vendor> [auth
=<username>[:<password>]]
This command takes the following parameters:
Parameter | Description |
---|---|
<index> | The index of the suite to be updated. To obtain the suite index, use the ams-list command. |
<name>|<vendor> | Specifies the suite to be updated via its name and vendor. |
auth |
Specifies the user credentials to access the JAD/JAR server. |
Note: The suite's <index> or <name|vendor> combination is mandatory and must be placed first.
This command may return the following responses:
Response | Description |
---|---|
<<ams-update,FAIL,missing parameters. see help. | Missing parameters (the suite's index or name|vendor combination is not specified) |
<<ams-update,ERROR,unknown parameter: parameter. see help. | An unexpected parameter was found. |
<<ams-update,ERROR,duplicate parameter: parameter. see help. | A duplicate parameter was found |
<<ams-update,ERROR,Can't update suite suiteIndex (suiteName|suiteVendor): download url is not specified. | The download URL is not specified. For suites, installed in hostdownload mode, see the ams-install command. |
<<ams-update,FAIL,not found | Suite not found. Either the suite was removed or the index / name|vendor identifier was specified incorrectly. |
<<ams-update,start install, <URL> | Information message about the update process starting. |
<<ams-update, install status: stage stage , percentage% | Information message about the update progress |
<<ams-update, OK,install success | Information message about the update process completing. |
<<ams-update,FAIL, errorCode errorcode, errorMessage : message | The update was aborted for some reason, as described in the error message. |
<<ams-update,FAIL, error occurred exception | An unexpected error occurred. Note that this response is added for debugging purposes and to avoid confusion. |
Removes the specified suite from device.
ams-remove
<index or name|vendor>
This command takes the following parameters:
Parameter | Description |
---|---|
<index> | The index of the suite to be removed. To obtain the suite index, use the ams-list command. |
<name>|<vendor> | Specifies the suite to be removed via its name and vendor |
This command may return the following responses:
Response | Description |
---|---|
<<ams-update,FAIL,missing parameters. see help. | Missing parameters (suite's index or name|vendor not specified) |
<<ams-remove,OK,removed | The suite was successfully removed: |
<<ams-remove,FAIL,not found | The suite was not found. Either the suite has been already removed, or the <index>/<name|vendor> identifier was specified incorrectly. |
<<ams-remove,FAIL,locked | The suite is locked and cannot be removed. The suite is likely in the RUNNING state. The ams-stop command must be called first. |
<<ams-remove,FAIL,not allowed | The user doesn't have permissions to remove suites. |
Run default suite's MIDlet or MIDlet, specified wit [MILET_ID] parameter
ams-run
<index or name|vendor> [<id>]
This command takes the following parameters:
Parameter | Description |
---|---|
<index> | Index of suite to be run. To obtain the suite index, use the ams-list command. |
<name>|<vendor> | Specifies the suite to be launched via its name and vendor |
<id> | The index of midlet in the suite to be run. |
This command may return the following responses:
Response | Description |
---|---|
<<ams-run,FAIL,invalid parameters | Unexpected parameters were found. |
<<ams-run,FAIL,failed to start | Cannot start the midlet. The index of the suite or midlet was specified incorrectly. |
<<ams-run,FAIL,already started | The suite has been already started. |
<<ams-run,OK,started | The suite was started successfully. |
Stops the default MIDlet, or the MIDlet with the specified ID if given.
ams-stop
<index or name|vendor> [id]
This command takes the following parameters:
Parameter | Description |
---|---|
<index> | Index of suite to be stopped. To obtain the suite index, use the ams-list command. |
<name>|<vendor> | Specified the suite to be stopped via its name and vendor |
<id> | The ID of midlet in the suite to be stopped. |
This command may return the following responses:
Response | Description |
---|---|
<<ams-stop,FAIL,invalid parameters | Unexpected parameters were found |
<<ams-stop,FAIL,not found | Cannot stop the midlet. The index of the suite or midlet was specified incorrectly. |
<<ams-stop,OK,started | The suite was stopped successfully |
Blacklists clients and applications.
blacklist -client
<name>
blacklist -app
<name|vendor>
This command takes the following parameters:
Parameter | Description |
---|---|
<name> | The name of the client to be blacklist. |
<name>|<vendor> | Specifies the suite to be blacklisted via its name and vendor |
This command may return the following responses:
Response | Description |
---|---|
<<blacklist,FAIL,invalid parameters | Unexpected parameters were found |
<<blacklist status OK | The command was successful. |
Shows the list of names of properties which control Java ME runtime, common to the java_properties.ini
file. Note that a property type may be only INT, STRING or BOOL. The read/write flag value may be only read/write or read only, and a BOOL property value may be only true or false.
properties-list
[-l
]
This command takes the following parameters:
Parameter | Description |
---|---|
-l |
Use the long listing format with properties' types, values and readonly flags. |
This command may return the following responses:
Response | Description |
---|---|
<<properties-list,AMS_MEMORY_LIMIT_MVM AMS_MEMORY_RESERVED_MVM AuthenticationName AuthenticationPwd btgoep btl2cap btspp cbs ... | The response without the long listing flag. Shows property names separated by a space. |
<<properties-list,OK
read/write INT AMS_MEMORY_LIMIT_MVM = -1 read/write INT AMS_MEMORY_RESERVED_MVM = 100 read/write STRING AuthenticationName = user read/write STRING AuthenticationPwd = password read only BOOL microedition.deviceid.isunique = false read only BOOL microedition.devicevendor.isunique = false |
The response with the long listing flag. |
<<properties-list,FAIL,invalid parameters
<<properties-list,Usage: properties-list [-l] <<properties-list,list of properties which control Java ME runtime <<properties-list, -l use a long listing format |
An unexpected parameter was found |
<<properties-list,OK,there is no property found | An empty list of properties was found. |
<<properties-list,FAIL,connection is closed | An IOException has occurred. |
Shows the value of requested property. If the property is not defined, the command shows an empty string as its value.
get-property
<name> [-i
]
This command takes the following parameters:
Parameter | Description |
---|---|
-i |
Displays additional property information |
This command may return the following responses:
Response | Description |
---|---|
<<get-property,OK,imc = com.sun.midp.io.j2me.imc.ProtocolPushImpl | The property was found (without displaying additional information) |
<<get-property,OK,dummy.property = | The property value is empty or not a set (without additional information) |
<<get-property,OK, read/write STRING imc = com.sun.midp.io.j2me.imc.ProtocolPushImpl | The property is found (with -i flag) |
<<get-property,OK, read/write STRING dummy-property = | The property value is empty or not a set (with -i flag) |
<<get-property,FAIL,invalid parameters
<<get-property,Usage: get-property name [-i] <<get-property,shows value of string property 'name' <<get-property, -i display property info |
An unexpected parameter was found |
<<get-property,FAIL,illegal argument [info]
<<get-property,Usage: get-property name [-i] <<get-property,shows value of string property 'name' <<get-property, -i display property info |
The wrong flag format was used(e.g. using -info instead of -i ) |
<<get-property,FAIL,connection is closed | An IOException has occurred. |
Sets the new value for the requested property. If the property controls the Java ME Runtime (i.e., it is defined in the java_properties.ini
file), it cannot be rewritten unless the read-only
flag is disabled. Note that properties are verified for type correctness. The value of a BOOL property may be any string. However, only "true
" (case insensitive) is considered a true value; any other string is considered to be false.
The new value for a property that controls the Java ME Runtime will be applied only after a VM reboot. In this case, only the latest set-property
command will have an effect after reboot. New values for other properties can be read just after the get-property
command has finished.
set-property
<name> <value>
This command takes the following parameters:
Parameter | Description |
---|---|
<name> | The name of the requested property |
<value> | The new value for the property. |
This command may return the following responses:
Response | Description |
---|---|
<<set-property,OK,imc = new.value | The operation completed successfully. |
<<set-property,FAIL,illegal number [hello].
<<set-property,Usage: set-property name value <<set-property,sets 'value' to property 'name' |
The value type is not a number when property type is INT: |
<<set-property,FAIL,illegal argument [microedition.devicevendor.isunique] or [true].
<<set-property,Usage: set-property name value <<set-property,sets 'value' to property 'name' |
The property is read-only: |
<<set-property,FAIL,invalid parameters.
<<set-property,Usage: set-property name value <<set-property,sets 'value' to property 'name' |
Wrong number of parameters: |
<<set-property,FAIL,connection is closed | An IOException has occurred |
Saves properties to an internal storage.
save-properties
This command takes no parameters:
This command may return the following responses:
Response | Description |
---|---|
<<save-properties,OK,success | Properties have been successfully saved to the internal storage |
<<save-properties,FAIL | An IOException has occurred. |
Show the network information of the system. This command only works on Qualcomm IoE devices.
net-info
This command takes no parameters:
This command may return the following responses:
Response | Description |
---|---|
<<net-info,OK,success getting info | Shows network information in the format <name>= <value> |
<<net-info,FAIL, connection is closed | An IOException has occurred. |
Sets a new value for the requested property of the network system. The property is verified for type correctness. This command only works on Qualcomm IoE devices.
net-set
<name> <value>
This command takes the following parameters:
Parameter | Description |
---|---|
<name> | The name of the requested property |
<value> | The new value for the property. |
This command may return the following responses:
Response | Description |
---|---|
<<net-set,OK,<NAME> = <VALUE> | The operation completed successfully. |
<<net-set,FAIL,illegal first argument [<NAME>]
<<net-set ssid <SSID>:set value for WIFI access <<net-set passwd <PASSWD>:set password for WIFI access <<net-set pref <0|1|2|3|4|5>:set network mode preference 0:AUTO, 1:NO OP, 2:WLAN Only, 3:GSM/WCDMA only, 4:WCDMA only, 5:GSM/WCDMA/WLAN <<net-set apn <APN>:set APN <<net-set pdp_authtype <0|1|2>:set APN's auth type 0:NONE, 1:PAP, 2:CHAP <<net-set pdp_username <USERNAME>:set pdp username <<net-set pdp_password <PASSWORD>:set pdp password |
An illegal type of property was encountered. The response dictates the correct syntax and property type. |
<<net-set,FAIL,illegal value [<VALUE>] | The value type was not a number when the property type is INT. |
<<net-set,FAIL,illegal argument [<NAME>] or [<VALUE>] | This is returned if any of arguments are null or if the property.name has an incorrect property type. |
<<net-set,FAIL,connection is closed | An IOException has occurred. |
Reconnects the network and reboots Java. This command only works on Qualcomm IoE devices.
net-reconnect
This command takes no parameters:
This command may return the following responses:
Response | Description |
---|---|
<<net-reconnect,OK,VM will reboot. Device will reconnect to the network | The network reconnect command completed successfully. The device will be rebooted and reconnected to the network. |
<<net-reconnect,FAIL | Cannot reconnect the device to the network |
<<net-reconnect,FAIL, connection is closed | An IOException has occurred. |
Prints a list of all connected devices at the current time.
device-list
This command takes no parameters.
This command may return the following responses:
Response | Description |
---|---|
< <<device-list,0,<IP0>:<port0>,CURRENT<<device-list,1,<IP1>:<port1>...<<device-list,<N-1>,<IPN-1>:<portN-1><<device-list,OK,N devices are connected | Printed list of devices. The "CURRENT " annotation indicates the currently seleted device that all device-related CLI command are addressed to. |
<<device-list,FAIL,invalid parameters | Unexpected parameters were found. In this case, the command has no parameters, but the user has specified some: |
Switches the currently-selected device. Once changed, all further device-related commands will be address to the newly selected device.
device-change
<index>
This command takes the following parameters:
Parameter | Description |
---|---|
<index> |
An integer index of device, as printed by the device-list command. |
This command may return the following responses:
Response | Description |
---|---|
<<device-change,OK,current device is changed | The command has been processed successfully; the current device was changed. |
<<device-change,FAIL,invalid parameters | An invalid number of parameters have been specified (either no parameters or more than one parameter). |
<<device-change,FAIL,incorrect device index | The index is not an integer. |
<<device-change,FAIL,device not found | There is no such device. |
<<device-change,FAIL,the device is already current | An attempt was made to switch to a device that is already the current device. |
Shutdown or restart the device.
shutdown
[-r
]
This command takes the following parameters:
Parameter | Description |
---|---|
-r |
Restart the device. Note that restart is not supported on Win32 platform. |
This command may return the following responses:
Response | Description |
---|---|
<<shutdown,OK,device will shutdown! | The shutdown command was processed successfully. The device will be shutdown soon. |
<<shutdown,OK,device will reboot! | The shutdown command was processed successfully, device will be restarted soon. |
<<shutdown,FAIL,can't reboot device | Cannot restart the device |
<<shutdown,FAIL,wrong parameters. see help. | Unexpected parameters were found. |
<<shutdown,FAIL,<Error message> | Shutdown command failed due an unknown reason. |
Changes the working directory on the device.
cd
<deviceDirectoryName>
This command takes the following parameters:
Parameter | Description |
---|---|
<deviceDirectoryName> | This specifies the directory on the device to which you want to change. The <deviceDirectoryName> can be relative to the current working directory, or an absolute path |
This command may return the following responses:
Response | Description |
---|---|
<<cd,OK | The command completed successfully |
<<cd,FAIL,invalid parameters | Missing or excess parameters were encountered |
<<cd,FAIL,directory not found <deviceDirectoryName> | Incorrect <deviceDirectoryName> specified |
<<cd,FAIL,connection is closed | An IOException has occurred |
Deletes file on the device.
delete
<deviceFileName>
This command takes the following parameters:
Parameter | Description |
---|---|
<deviceFileName> | Specifies the file to delete. <deviceFileName> can be relative to the current working directory, or an absolute path. |
This command may return the following responses:
Response | Description |
---|---|
<<delete,OK |
The command completed successfully |
<<delete,FAIL,invalid parameters |
Missing or excess parameters were encountered. |
<<delete,FAIL,file not found <deviceFileName> |
Incorrect <deviceFileName> specified |
<<delete,FAIL,connection is closed |
An IOException has occurred |
Copies a device file to the host.
get
<deviceFileName> <hostFileName>
This command takes the following parameters:
Parameter | Description |
---|---|
<deviceFileName> | Specifies the file to copy. <deviceFileName> can be relative to the current working directory, or an absolute path. |
<hostFileName> | Specifies the name of the file to use on the host. |
This command may return the following responses:
Response | Description |
---|---|
<<get,OK | The command completed successfully |
<<get,FAIL,invalid parameters | Missing or excess parameters were encountered |
<<get,FAIL,file not found <deviceFileName> | Incorrect <deviceFileName> specified |
<<get,FAIL,unable to write into file <hostFileName> | Incorrect <hostFileName> specified |
<<get,FAIL,connection is closed | An IOException has occurred |
Displays a list of files and subdirectories in a device directory.
ls
[<deviceDirectoryName>]
This command takes the following parameters:
Parameter | Description |
---|---|
<deviceDirectoryName> | Specifies the directory for which you want to see a listing. <deviceDirectoryName> can be relative to the current working directory, or an absolute path. If no directory is specified, the current working directory on the device is used. In the result listing, subdirectories are marked by a trailing device file separator symbol (for example, "\" on Windows, "/" on RPi). |
This command may return the following responses:
Response | Description |
---|---|
<<ls,OK
alljavalist.txt all_classes.zip appdb\ bin\ classes\ classes.zip |
The command completed successfully |
<<ls,FAIL,invalid parameters | Excess or invalid parameters were encountered |
<<ls,FAIL,directory not found <deviceDirectoryName> | Incorrect <deviceDirectoryName> specified |
Creates a directory on the device.
mkdir <deviceDirectoryName>
This command takes the following parameters:
Parameter | Description |
---|---|
<deviceDirectoryName> | Specifies the name of the new device directory. <deviceDirectoryName> can be relative to the current working directory, or an absolute path. |
This command may return the following responses:
Response | Description |
---|---|
<<mkdir,OK | The command completed successfully |
<<mkdir,FAIL,invalid parameters | Missing or excess parameters were encountered |
<<mkdir,FAIL,directory not found <deviceDirectoryName> | Incorrect <deviceDirectoryName> was specified |
<<mkdir,FAIL,connection is closed | An IOException has occurred |
Prints the current working directory on the device.
pwd
This command may return the following responses:
Response | Description |
---|---|
<<pwd,OK
c:\Users\abc\javame-sdk\8.0_ea\work\EmbeddedDevice1\appdb |
The command processed successfully |
<<pwd,FAIL,invalid parameters | Excess parameters were encountered |
Copies a local host file to the device.
put
<hostFileName> <deviceFileName>
This command takes the following parameters:
Parameter | Description |
---|---|
<hostFileName> | Specifies the local host file to copy. |
<deviceFileName> | Specifies the name to use on the device. <deviceFileName> can be relative to the current working directory, or an absolute path. |
This command may return the following responses:
Response | Description |
---|---|
<<put,OK | The command processed successfully |
<<put,FAIL,invalid parameters | Missing or excess parameters |
<<put,FAIL,unable to read file <hostFileName> | Incorrect <hostFileName> specified |
<<put,FAIL,file not found <deviceFileName> | Incorrect <deviceFileName> specified |
<<put,FAIL,connection is closed | An IOException has occurred |
Deletes a key from the ME device keystore, identified either by its owner or the key number.
ks-delete
(-owner
<ownerName> | -number
<keyNumber>)
This command takes the following parameters:
Parameter | Description |
---|---|
<ownerName> | The name of the owner of an ME key. |
<keyNumber> | The key number (starting at 1) of an ME key currently in the device keystore. |
This command may return the following responses:
Response | Description |
---|---|
<<ks-delete,OK | The command processed successfully |
<<ks-delete,FAIL,bad command or missing parameters. Type help for assistance. | An error occurred, either with the command itself or one of the parameters. |
Exports a key from the device keystore identified by its index.
ks-export
-number
<keyNumber> -out
<filename>
This command takes the following parameters:
Parameter | Description |
---|---|
<keyNumber> | The key number (starting at 1) of an ME key currently in the device keystore. |
<filename> | The complete filename to save the exported key as. |
This command may return the following responses:
Response | Description |
---|---|
<<ks-export,OK | The command processed successfully |
<<ks-export,FAIL,bad command or missing parameters. Type help for assistance. | An error occurred, either with the command itself or one of the parameters. |
Imports a public key from a JCE keystore or a key file into a ME device keystore.
ks-import
[-keystore
<filename>] [-storepass
<storepass>] [-keypass
<keypass>] [-alias
<keyAlias>]
This command takes the following parameters:
Parameter | Description |
---|---|
<filename> | The complete filename of the JCE keystore or the key file. The keystore file may be in the following formats: jks, pkcs12,pem,der |
<storepass> | The password for the JCA keystore This parameter is not required when the source file is in the pem or der format. |
<keypass> | The password for the private key in a JCA or PKCS12 keystore. This parameter is not required if the command is importing only a public certificate. |
<keyAlias> | The short string ID of a key in a JCA keystore. This parameter is not required when the source file is in the pem or der format. |
This command may return the following responses:
Response | Description |
---|---|
<<ks-import,OK | The command processed successfully |
<<ks-import,FAIL,bad command or missing parameters. Type help for assistance. | An error occurred, either with the command itself or one of the parameters. |
Lists the owner and validity period of each key in the ME device keystore.
ks-list
This command may return the following responses:
Response | Description |
---|---|
<<ks-list [<number>]=Owner:<Owner distinguished name> Valid from <date> to <date> | A list of each of the installed keys, following this format. |