# Smart Card Shell

- - Home
- - GPError
  - GPSystem
  - ByteString
  - ByteBuffer
  - TLV
  - TLVList
  - Card
  - Atr
  - Key
  - Crypto
  - Application
  - GPApplication
  - GPSecDomain
- - ASN1
  - CardFile
  - IsoSecureChannel
  - ApplFactory
  - GPXML
  - JsScript
  - CardSim
- - X509
  - CRL
  - KeyStore
  - Signed CMS
  - Enveloped CMS
  - CMS Generator
  - XMLSignature
  - SSS
  - OCSPQuery
  - LDAP
  - SOAP
  - URLConnection
- - PKCS11Provider
  - PKCS11Session
  - PKCS11Object
- - OutlineNode
  - Dialog
  - Task
- - Tools
  - Modules
- - OpenSCDP

# GPSystem - Reference Documentation

Class implementing the Global Platform GPSystem class

## Index of Methods

- GPSystem() constructor
- getVersion()
- wait()
- trace()
- isTraceOn()
- setTraceLevel()
- log()
- markTrace()
- copyTrace()
- getVendorObject()
- getSystemID()
- dateTimeByteString()
- mapFilename()

## Constructor

### Prototype

None

### Description

The GPSystem class only provides class functions. No objects can be instantiated.

### Exceptions

Name | Value | Description
--- | --- | ---

### Example

## getVersion()

### Prototype

String getVersion()

### Description

Retrieve the version of the Global Platform Scripting specification implemented by the runtime.

### Return

`String` | String containing the version number

### Exceptions

Name | Value | Description
--- | --- | ---
GPError | GPError.INVALID_ARGUMENTS | Too many arguments in call

### Example

    version = GPSystem.getVersion();

    assert(version == "1.1.0");

## wait()

### Prototype

wait(Number ms)

### Description

Wait for a specified period

### Arguments

Type | Name | Description
--- | --- | ---
`Number` | ms | The time to wait in milliseconds

### Return

`` |

### Exceptions

Name | Value | Description
--- | --- | ---
GPError | GPError.INVALID_ARGUMENTS | Too many arguments in call
GPError | GPError.ARGUMENTS_MISSING | Too few arguments in call
GPError | GPError.INVALID_DATA | The argument stringValue contains characters not compatible with the encoding format
GPError | GPError.INVALID_TYPE | Type of argument is invalid for call

### Example

    start = new Date().valueOf();
    waitingTime = 1000;

    GPSystem.wait(waitingTime);

    stop = new Date().valueOf();
    elapsed = stop - start;

    // Allow a tolerance of 10 ms
    print("Wait: " + waitingTime + " ms / Elapsed: " + elapsed + " ms");
    assert(((elapsed - 50) <= waitingTime) && ((elapsed + 50) >= waitingTime));

## trace()

### Prototype

boolean trace(Object o)

### Description

Append data to the trace file by calling the objects "toString()" method.

### Arguments

Type | Name | Description
--- | --- | ---
`Object` | o | The object to trace

### Return

`Boolean` | Boolean value indicating the success (true) or failure (false) of the tracing

### Exceptions

Name | Value | Description
--- | --- | ---
GPError | GPError.INVALID_ARGUMENTS | Too many arguments in call
GPError | GPError.ARGUMENTS_MISSING | Too few arguments in call
GPError | GPError.INVALID_DATA | The argument stringValue contains characters not compatible with the encoding format
GPError | GPError.INVALID_TYPE | Type of argument is invalid for call

### Example

    rval = GPSystem.trace("Testoutput from GPSystem.trace()");
    // assert(rval == true);

    try {
    	GPSystem.trace(null);
    }
    catch (e) {
    	assert(e instanceof GPError);
    	assert(e.error == GPError.INVALID_TYPE);
    }

## isTraceOn()

### Prototype

boolean isTraceOn()

boolean isTraceOn(String class, Number level)

### Description

Return true if the trace is enabled.

### Arguments

Type | Name | Description
--- | --- | ---
`String` | class | The class name from this this log entry is created
`Number` | level | The log level, which is one of GPSystem.[DEBUG, INFO, WARN, ERROR, FATAL]

### Return

`Boolean` | Boolean value indicating if tracing is enabled

### Exceptions

Name | Value | Description
--- | --- | ---
GPError | GPError.INVALID_ARGUMENTS | Too many arguments in call

### Example

    assert(typeof(GPSystem.isTraceOn()) == "boolean");
    assert(typeof(GPSystem.isTraceOn("de.cardcontact.scdp.gp.GPSystem", GPSystem.INFO)) == "boolean");

## setTraceLevel()

### Prototype

void setTraceLevel(String class, Number level)

### Description

Set trace level for given class. Not all implementations support the full feature set.

### Arguments

Type | Name | Description
--- | --- | ---
`String` | class | The class name from this this log entry is created
`Number` | level | The log level, which is one of GPSystem.[DEBUG, INFO, WARN, ERROR, FATAL]

### Return

`` |

### Exceptions

Name | Value | Description
--- | --- | ---
GPError | GPError.INVALID_ARGUMENTS | Too many arguments in call

### Example

    GPSystem.setTraceLevel("", GPSystem.INFO);		// The default

## log()

### Prototype

boolean log(Number level, String class, Object o)

### Description

Log information for class at level by calling the objects "toString()" method.

### Arguments

Type | Name | Description
--- | --- | ---
`Number` | level | The log level, which is one of GPSystem.[DEBUG, INFO, WARN, ERROR, FATAL]
`String` | class | The class name from this this log entry is created
`Object` | o | The object to log

### Return

`Boolean` | Boolean value indicating the success (true) or failure (false) of the tracing

### Exceptions

Name | Value | Description
--- | --- | ---
GPError | GPError.INVALID_ARGUMENTS | Too many arguments in call
GPError | GPError.ARGUMENTS_MISSING | Too few arguments in call
GPError | GPError.INVALID_DATA | The argument stringValue contains characters not compatible with the encoding format
GPError | GPError.INVALID_TYPE | Type of argument is invalid for call

### Example

    GPSystem.log(GPSystem.DEBUG, "ClassName", "Output at DEBUG log level");
    GPSystem.log(GPSystem.INFO,  "ClassName", "Output at INFO log level");
    GPSystem.log(GPSystem.WARN,  "ClassName", "Output at WARN log level");
    GPSystem.log(GPSystem.ERROR, "ClassName", "Output at ERROR log level");
    GPSystem.log(GPSystem.FATAL, "ClassName", "Output at FATAL log level");
    GPSystem.log(GPSystem.FATAL, "ClassName", null);

## markTrace()

### Prototype

markTrace()

### Description

Mark the current position in the trace output for later retrieval of trace output using the copyTrace() method.

### Return

`` |

### Exceptions

Name | Value | Description
--- | --- | ---
GPError | GPError.INVALID_ARGUMENTS | Too many arguments in call

### Example

    GPSystem.markTrace();

## copyTrace()

### Prototype

String copyTrace()

### Description

Return the trace starting with the position marked with the markTrace() method up to the very last entry.

### Return

`String` | Copy of the recent trace entries or null if unsupported

### Exceptions

Name | Value | Description
--- | --- | ---
GPError | GPError.INVALID_ARGUMENTS | Too many arguments in call

### Example

    var msg ="Hello World";
    GPSystem.trace(msg);
    var t = GPSystem.copyTrace();

    if (t != null) {
    	assert(t == msg + "\n");
    }

## getVendorObject()

### Prototype

getVendorObject(String objectName)

### Description

Retrieve a vendor specific object

### Arguments

Type | Name | Description
--- | --- | ---
`String` | objectName | The name of the object

### Return

`Object` | The created object

### Exceptions

Name | Value | Description
--- | --- | ---
GPError | GPError.INVALID_ARGUMENTS | Too many arguments in call
GPError | GPError.ARGUMENTS_MISSING | Too few arguments in call
GPError | GPError.INVALID_TYPE | Type of argument is invalid for call
GPError | GPError.OBJECTCREATIONFAILED | The desired object could not be created

### Example

    try {
    	obj = GPSystem.getVendorObject("myObject");
    }
    catch (e) {
    	assert(e instanceof GPError);
    	assert(e.error == GPError.OBJECTCREATIONFAILED);
    }

## getSystemID()

### Prototype

getSystemID()

### Description

Get the ID of the system.

For the smart card development platform a unique object identifier is returned.

It has the following components: OpenSCDP.Runtime.MajorVersion.MinorVersion.Build.SerialNumber.

### Return

`ByteString` | The ID of the system or null if none available

### Exceptions

Name | Value | Description
--- | --- | ---
GPError | GPError.INVALID_ARGUMENTS | Too many arguments in call

### Example

    var id = GPSystem.getSystemID();
    print(id);
    var s = id.toString(OID).split(".");

    print("Runtime : " + s[s.length - 5]);
    print("Major   : " + s[s.length - 4]);
    print("Minor   : " + s[s.length - 3]);
    print("Build   : " + s[s.length - 2]);
    print("Serial  : " + s[s.length - 1]);

## dateTimeByteString()

### Prototype

dateTimeByteString()

### Description

Return a ByteString containing the current date and time

### Return

`ByteString` | The current date and time

### Exceptions

Name | Value | Description
--- | --- | ---
GPError | GPError.INVALID_ARGUMENTS | Too many arguments in call

### Example

    time = GPSystem.dateTimeByteString();
    assert(time != null);
    assert(time instanceof ByteString);

## mapFilename()

### Prototype

mapFilename(String filename, Number location)

mapFilename(String filename)

### Description

Searches for a file at the given location and maps the filename to the system specific absolute path.

If no location is specified the function uses the default location identifier GPSystem.AUTO.

### Arguments

Type | Name | Description
--- | --- | ---
`String` | filename | Filename
`Number` | location | Location indicator (GPSystem.CWD, GPSystem.USR, GPSystem.SYS, GPSystem.AUTO)

### Return

`String` | Absolute path of the file. Null if the file was not found.

### Exceptions

Name | Value | Description
--- | --- | ---
GPError | GPError.INVALID_ARGUMENTS | Too many arguments in call
GPError | GPError.ARGUMENTS_MISSING | Too few arguments in call
GPError | GPError.INVALID_TYPE | Type of argument is invalid for call

### Example

    absFilename = GPSystem.mapFilename("config.js", GPSystem.SYS);
    assert(absFilename != null);

    absFilename = GPSystem.mapFilename("config.js");
    assert(absFilename != null);

    absFilename = GPSystem.mapFilename("novalidfile.js");
    assert(absFilename == null);

© Copyright 2003 - 2024 CardContact Systems GmbH , Minden, Germany