Skip to content

RFID Reprocessing

Overview

The server-side RFID reprocessing lets you perform complete server-side verification for electronic document chips. While reading is performed on mobile via NFC, the server is involved in the process for generation and storage of session keys and challenges.

This allows further reprocessing of the captured reading session in the “zero-trust to mobile” model to validate the chip and its data authenticity and validity via Chip Authentication, Active Authentication and Passive Authentication on the server-side.

How to perform server-side RFID reprocessing

To enable the server-side RFID processing, make sure to deploy a local service and an S3 storage for the session keys and challenges.

Then, take the following steps:

  1. Enable returning the package for reprocessing to the processing results:

    DocReader.shared.processParams.shouldReturnPackageForReprocess = true
    
  2. To use your local server (not the Regula one), set serviceURL and indicate the local service URL:

    let reprocParams = DocReader.ReprocParams()
    reprocParams.serviceURL = "https://api.regulaforensics.com"
    DocReader.shared.rfidScenario.reprocParams = reprocParams
    
  3. To guarantee check fail in case the service is not available, set setFailIfNoService:

    let reprocParams = DocReader.ReprocParams()
    reprocParams.serviceURL = "https://api.regulaforensics.com"
    reprocParams.failIfNoService = true
    DocReader.shared.rfidScenario.reprocParams = reprocParams
    
  4. When you get the result, envoke the getEncryptedContainers function.

  5. Send the request to the web service. Use the following endpoint to process Identity Documents in encrypted presentation:

POST /api/process

Body of the request should include 3 nodes:

  • processParam - params that have to be used during the document processing
  • ContainerList - the list of encrypted containters, such as license and other encrypted data
  • TransactionInfo - the transaction metadata
{
    "processParam": {
        "scenario": "FullProcess",
        "alreadyCropped": true
    },
    "ContainerList": {
        "List": [
            {
                "License": "",
                ...
                "result_type": 50
            },
            {
                "EncryptedRCL": "",
                ...
                "result_type": 49
            }
        ]
    },
    "TransactionInfo": {
        ...
    }
}

Request example

curl --request POST \
--url "https://api.regulaforensics.com/api/process" \
--header "Content-Type: application/json" \
--data '{ "processParam": { "scenario": "FullProcess", "alreadyCropped": true }, "ContainerList": { "List": [ { "License": "...", ... "result_type": 50 }, { "EncryptedRCL": "...", ... "result_type": 49 } ] }, "TransactionInfo": { ... } }'

Next Steps