• Welcome to Keymaker™

      The easy way to generate secure encryption keys in multiple formats.

      ProtegoST® Keymaker™ makes it simple to create encryption keys, serial numbers, product keys and QR codes. KeyMaker™ doesn't restrict you to a set of predefined formats, it enables you to create customized encryption keys and other unique customized identifiers in a easy way. And maybe best of all, this can be achieved without any custom programming! Keymaker™ utilizes a True Random Number Generator (TRNG)1 to ensure that that the random numbers used in generating encryption keys and other sensitive data are totally unpredictable and unbiased, making them highly secure.

      With Keymaker™, you don't need to be an expert in cryptology or number theory to generate the output you need. Simply define your desired format and what you want, and Keymaker™ will handle the rest and do the hard work for you.

      Keymaker™ offers two methods of access: a user-friendly web interface and a microservice2 that provides a convenient REST API3 delivered by the Keymaker™ server. The web interface can be accessed interactively by users via the Web Client, while the microservice REST API can be accessed by developers using any modern programming language via the REST Client interface. This makes it easy to integrate Keymaker™ solutions into your existing development environment and work flow.

      figure 1. Keymaker system overview figure 1. Keymaker system overview

      Output in different file formats

      Keymaker™ allows users to output the generated keys in various file formats such as CSV, JSON or SQL format4. The generated file can be used for transactions against any chosen system that supports the import of the file formats supported. This feature makes it easy to incorporate Keymaker's encryption keys into your existing workflows and for new applications and solutions. When using the REST3 Client interface. The result is in a returned as a text blob.

      Out in different file formats

      figure 2. Output in different file formats.

      Saving Generated Encryption Keys as SQL Tables

      Keymaker™ also allows saving encryption keys in an SQL table chosen by the user. Databases such as Oracle, MSsql, or PostgreSQL are supported. The user can use a JDBC interface5 for this purpose. Directly creating a table in the target database. This feature makes it easy to store the keys and integrate them into existing database management systems and applications. Keymaker™ is fully compatible with popular databases such as PostgreSQL, Oracle, IBM DB2, SQLite, or MSSQL6. Providing an easy way to store the keys and data for future use.

      Application Security

      User Registration and Security

      To ensure the security of users' information, registration is required before logging in to the server or accessing the micro service. Once registered through the Keymaker™ Management Console (KMC), users can take advantage of Keymaker's micro service to generate encryption keys in various formats, making it easy to integrate the service into existing workflows.

      Keymaker™ allows users to output the generated keys in various file formats such as CSV, JSON or SQL format4. The generated file can be used for transactions against any chosen system that supports the import of the said file formats. This feature makes it easy to incorporate Keymaker's encryption keys into your existing workflows.

      Furthermore, Keymaker™ allows the generated encryption keys to be saved as an SQL table in a database previously chosen by the user, such as Oracle, MSsql or PostgreSQL database. This option provides a convenient way to store the keys for future use and integrate them into your existing database management systems as Oracle, MSSQL6,

      True Random Number Generation used

      While Keymaker™ may simplify the process of generating encryption keys and other identifiers, it is important to note that the random numbers used through the application are generated through cryptographically secure means, from a physical True Random Number Generator (TRNG)1. A TRNG produce unpredictable and unbiased random numbers based on physical phenomena such as radioactive decay or electronic noise. This means that the random numbers generated by Keymaker™ cannot be guessed or predicted in any way, providing a high level of security for encryption keys and other sensitive data.

      Using a TRNG-based approach to generate random numbers is critical for cryptographic applications, as weak or predictable random numbers can make encryption vulnerable to attacks. Additionally, the use of physical TRNGs ensures that the random numbers generated are truly random and not influenced by software or other external factors, further increasing the security of the generated encryption keys.

      The system easily integrates with ProtegoST® supplied TRNGs. TRNGSs of other makes and models are also supported by Keymaker™. Contact us at XXXX for more information.

      Compliance with FIPS 140-3 Standards

      At ProtegoST®, we take security seriously. That's why all output from the Keymaker™ True Random Number Generator (TRNG)1 is tested in accordance with the Federal Information Processing Standards (FIPS) Publication 140-37. This means that you can be guaranteed that the output from Keymaker™ TRNG meets the highest quality and are totaly secure. The TRNG undergoes continius thoroughout testing to ensure that no "bad" output will ever reach your application, providing you with the confidence you need in regards to security and reliability. Compliance with FIPS 140-3 standards is a core feature of Keymaker™, ensuring that the random number generation is secure, reliable, and of the highest quality.

      Customizing Encryption Key Formats and Output

      Customizing Encryption Key Formats

      Keymaker™ provides a flexible solution for customizing the output format of your encryption keys using a format string. This format string is called a FDL-format string, this enables you to specify the desired output format, resulting in the encryption key being formatted in hexadecimal, decimal, alphanumeric, or ASCII format. The Format Description Language (FDL)8 supports this feature by enabling you to define your own format or choose from a list of standard formats.

      With the FDL-format string, there are virtually no limitations to how and in what format you can output your encryption keys. If you're familiar with formatting numbers or dates in Microsoft® Excel®, then you'll find the concept to be similar in kind.

      Using Keymaker's customizable FDL-format string, you can tailor your encryption keys to your specific needs and integrate them seamlessly into your existing workflows and intended applications. This flexibility ensures that your encryption keys are optimized for their intended use, allowing them to be easily incorporated into your application.

      Customizing Encryption Key Output

      Once you've selected the desired encryption key format, Keymaker™ enables you to choose the output file format for saving your keys. You can select from a variety of formats, such as comma-delimited (CSV), SQL, or JSON, depending on your needs. Additionally, you have the option to include additional information in the output file rows, such as:

      1. The creation time of the generated keys.

      2. The row number of the key in the output file.

      3. The cyclic redundancy check9 (CRC32) of the generated keys.

      Including this information in the output file enables you to customize it to meet the specific requirements of your workflow and intended use.

      Creating SQL Tables

      As mentioned in the introduction, Keymaker™ also allows the generated encryption keys to be created as an SQL table in a database previously chosen by the user. This feature enables you to store and manage your encryption keys more efficiently and integrate them into your existing database management systems.

      The database tables generated by Keymaker™ are in the ANSI-SQL format10, which is a standard SQL language defined by the American National Standards Institute (ANSI). This ensures that the tables are compatible with a wide range of database management systems, enabling you to easily incorporate your encryption keys into your existing systems.

      With Keymaker's flexible output options, you can easily integrate your encryption keys into existing systems or workflows, ensuring that they're optimized for your needs and easily accessible when you need them.

      Summary of benefits and features

      So, in summary, Keymaker™ offers a variety of access methods to suit your needs, whether you prefer an interactive web interface or programmatic access via a microservice2. It provides two methods of access: an easy-to-use web interface and a microservice provided by a convenient REST API. Keymaker™ always uses a True Random Number Generator (TRNG)1 to ensure that the random numbers used in generating encryption keys and other sensitive data are completely unpredictable and unbiased, making them highly secure. The application provides a flexible solution for customizing the output format of encryption keys using a format string. Keymaker™ also allows the generated encryption keys to be saved as an SQL table in a specified database previously chosen by the user. Moreover, compliance with FIPS 140-3 standards is a core feature of Keymaker™ TRNG, ensuring that the random number generation is secure, reliable, and of the highest quality. It also offers easy integration with other systems, making it a useful tool for a variety of custom applications. Keymaker™ is a solution that offers virtually unlimited flexibility, without the need for tedious custom programming.


      Getting Started with Keymaker™

      Introduction

      👉Important! Before you start using Keymaker™, you must obtain login credentials from the system administrator. Your login credentials contain a username and a password. After your first login, please go to Settings and immediately change your password.👈

      You should also obtain a URL for the service from the system administrator. Enter this URL in your browser, and you will be greeted with a login screen. Select Login and log in with the credentials (user ID and password), given to you by the system administrator. Please remember to change your temporary password immediately!

      How to read the sections of the Keymaker™ User Manual

      The Getting Started section is divided into two sections. The first part will introduce you to Keymaker™ and show you how to use it interactively using the easy-to-use web interface. In the second part, you will learn about the features of the interactive application that relate to the microservice2 REST API3.

      Using the application in interactive mode

      Logging in to the system

      You will first come to the welcome screen. This screen is always showed when you have entered the Keymaker™ URL or when you have logged of. To log in, you need a current user ID and password. The supplied password is sent to your e-mail account or by other means. You must use this new password to log in for the first time.

      figure 1. Logging in to the system

      figure 1. Logging in to the system - Welcome screen and Login screen.

      video 1. Logon into the system

      Settings Page

      After you have logged in as a user you will be redirected to the Settings page. On the settings page all settings relevant for you as a user is collected.

      For more information see More on Settings.

      For now you can leave the settings as they are. But if it's the first time you use the system, you should select the Change Password button before doing anything else.

      Change Password

      ch02_figure_3

      figure 2. Change Password button in Settings

      "When you have selected the Change Password button, the Change Password dialog will appear.

      ch02_figure_3

      figure 3. Change Password Dialog

      Enter your old password in the password field and then your new password in the new password field, and then enter it again for verification in the confirm new password field. Select Change, and you will automatically be logged out of the system. We will return to the Settings page further on in this Keymaker™ User Manual. But now we will go on and describe the primary functions of the system.

      video 2. Change Password

      Keymaker™ the Primary Parts

      Below you will find the "navigation map" to Keymaker™.
      ch02_figure_3 figure 4. The Keymaker™ navigation map

      More on Settings

      On the Settings page all settings relevant for you as a user is collected.

      1. Showing Tooltips in the application.

      2. Overwrite of output files placed in directory on the server.

      3. Changing password.

      4. Default maximum number of keys possible to generate.

      5. Managing templates for generating keys to file and to SQL export.For more information see The Template System.

      6. API where you can get an API key if you have the right privileges.

      7. Specify the remote database for SQL exports. For more information see Appendix 2. Connecting to an External Database.

      ch02_figure_41

      Export to database

      The video below gives a quick introduction from a user perspective of what is necessary for connecting with an external database. The system administrator must first install approriate drivers on the server for enabling the connection. For more information see Appendix 2. Connecting to an External Database.

      video 3. Export to database settings

      Tooltip

      If you want instant help at all times. Select to enable tooltip on the settings page. Below is a video that decribes how you do it.

      video 4. Setting tooltip on or off

      API Key

      Important for users that has the privileges and the need to access the REST API is the Api key. To get access to a API key, you must first contact the system administrator.

      video 5. Get a API key

       

      Generate keys to a CSV, SQL or JSON file

      If you choose the key icon to the left in the system. You can start generating keys.

      ch02_figure_5

      figure 5. Generate keys to a file. When you have made your selections, you are ready to create the output file. Just select the Generate button in the bottom of the page.

      video 6. Generate keys to a CSV file

      Output format

      Keymaker™ allows users to output the generated keys in various file formats such as CSV, JSON or SQL format4. The generated file can be used for transactions against any chosen system that supports the import of the file formats supported. This feature makes it easy to incorporate Keymaker's encryption keys into your existing workflows and for new applications and solutions. To select the file format that you prefer select the format in the selection control named Output format.

      Filename

      Here, you can select the file name for the file you wish to create. It is a good idea to choose a descriptive file name. The file extension will be .csv for CSV files, .sql for SQL files, and .json for JSON files.

      Key format

      In the key format field you specify your desired output key format. This allows you to customize the output format of your encryption keys, through the use of a flexible format string called a FDL-format string, also known as an FDLS. You can specify that you want the output in hexadecimal, decimal, alphanumeric, or ASCII format with a FDLS. You can define your own format or choose from quick format, using the Format Description Language (FDL)8.

      An example:

      As an example how you in practice can specify a custom FDLS, we will replace the default FDLS with a new string. Our goal is to generate a 64-bit key in hexadecimal, that will be used as a product key. The first thing we do is to type in a new FDLS into the Key format field like this:

      figure 6. FDLS for a custom key format

      This text, you can copy this FDLS directly into the Key format field. productkey:####/####/####-####

      Make sure that the Bits in keyfield is set to 64 bits. In the Key format field you should see the following characters: productkey:####/####/####-####

      The meaning of the individual charters in the string is explained below:

      There are also "quick FDLS" for defining your if you do not need advanced formating as an example:

      CharacterDescriptionExample
      $base 64 full lenght of key0061A85671B41F05
      AFormat in ASCIIrg&<$@3B
      B10Base 64 with length 10a7hOwv+ga7
      @Numeric positive integer199566710131161742035312991318290078543

      Table 1. Quick FDLS

      This "quick FDLS"8 will always expand to the full length of the defined Bits in key field by default. So if you define a $ FDLS with no length specification like $10, where the number 10 specifies the number of hex chars. It will expand to the full length of the number of bits specified in the Bits in keyfield.

      "This 'quick FDLS' will always expand to the full length of the defined 'Bits in key' field by default. For example, if you define a '$' FDLS with no length specification like '$10', where the number '10' specifies the number of characters outputted, it will expand to the full length of the number of bits specified in the 'Bits in key' field. Note that 'FDL' stands for 'Format Description Language', while 'FDLS' stands for 'Format Description Language String'."

      For more information about FDL and how to define a FDLS-Format string seeCustomizing Encryption Key Formats and Output in the first section of this manual and the, see the Format Description Language (FDL) Appendix of this user manual.

      Bits in key

      The number of bits taken from the TRNG input determines, as an example, how many hexadecimal numbers you can generate with a specific FDL-format string in the Key format input field. This is specified in the Bits in key field. If you specify the wrong number of bits in relation to the number of bits that are consumed by your FDLSs, you will get an error like this: figure 7. Error from wrong a formatted FDLS or wrong number of bits specified in the Bits in key field.

      Column and header selections

      For the desired output you can also add informative columns to the output. You can add a header row to a CSV file. You can add row numbers, a UUID column for unique identification and a time stamp when the row with the key was created to any file. For CSV files you can have different delimiters for column separation.

      figure 8. Selections available for column and header selection

      Include headers (csv only)

      This option adds a row of headers for the chosen columns. This option is only availible for CSV formatted files selected in the Output format field.

      Include row numbers

      This option adds a column with consecutive row numbers from 1 to the number of specified in the Number of Keys field. This option is applicable to all file formats availible in the Output format field.

      Include UUID column

      This option adds a column with a UUID version 4. This option is applicable to all file formats availible in the Output format field. This is a example of a UUID version 4 string:

      28aacd36-922c-4ab0-9933-a3bcc5c8642c

      Include timestamp

      This option adds a column with a timestamp in the ISO 8601 format. This option is applicable to all file formats availible in the Output format field. This is a example of a timestamp in the ISO 8601/ANSI SQL format:

      2023-03-10 15:46:01.106949

      This time value is taken from the server.

      Column Delimiter (csv only)

      For CSV files you can select different column delimiters. The choices are:

      Number of Keys

      This selects how many rows with keys the output file will contain. One key equals on row in the output.The maximum Number of Keys that are possible to generate is limited of the application Max keys on the Settings page.

      video 7. Setting max keys

      Making it happen

      When you have made your selections you are ready to create the output file. Just select the Generatebutton in the bottom of the page.

      How will the output look like?

      For all output formats, one thing remains the same: the key is defined by its FDLS. For example, if you have specified a valid FDL string like $ or B10 or productkey:####/####/####-#### or ############-####, you can use them without modification for all different formats, including CSV, SQL, or JSON.

      figure 9. Output file in CSV in Excel and in raw CSV text format.

      figure 10. Output file in SQL

      video 8. Generate keys to a JSON file

      figure 11. Output file in JSON

      Generate keys into a SQL-database

      If you choose the database icon to the left in the system sidebar. You can start generating keys into a database. Most of the settings are the same as the settings in Generate keys to a file. In this section we will show what is different from Generate keys to a file. You can use the same FDLSs as when you generated files. You can reuse your templates that you saved in Generate keys to a file. The differnce is that the filename becomes the table name.

      To generate a database table you must first establish a connection to a JDBC compatibel database[]. When you have the relevant connection parameters. You register them in the `Settings - DATABASE EXPORT SETTINGS section. You can test if you have a valid connection there. If the connection is succesfull the parameters will be stored there.

      Those settings that is exclusive for CSV files, are naturally excluded from the settings on the SQL export page.

      ch02_figure_5

      figure 12. Generate keys to a database table. When you have made your selections, you are ready to create your table. Just select the Generate button in the bottom of the page.

      video 9. SQL export of a table

      Table name

      This is the name of the table that will be created in the specified database.

      Key format

      In the key format field you specify your desired output key format. This allows you to customize the output format of your encryption keys, through the use of a flexible format string called a FDL-format string, also known as an FDLS. You can specify that you want the output in hexadecimal, decimal, alphanumeric, or ASCII format with a FDLS. You can define your own format or choose from quick format, using the Format Description Language (FDL)8.

      An example:

      As an example how you in practice can specify a custom FDLS, we will replace the default FDLS with a new string. Our goal is to generate a 64-bit key in hexadecimal, that will be used as a product key. The first thing we do is to type in a new FDLS into the Key format field like this:

      Bits in key

      The number of bits taken from the TRNG input determines, as an example, how many hexadecimal numbers you can generate with a specific FDL-format string in the Key format input field. This is specified in the Bits in key field. If you specify the wrong number of bits in relation to the number of bits that are consumed by your FDLSs, you will get an error like this: figure 13. Error from wrong a formatted FDLS or wrong number of bits specified in the Bits in key field.

      Column and header selections

      For the desired output you can also add informative columns to the output. You can add a header row to a CSV file. You can add row numbers, a UUID column for unique identification and a time stamp when the row with the key was created to any file. For CSV files you can have different delimiters for column separation.

      figure 14. Selections available for column and header selection

      Include row numbers

      This option adds a column with consecutive row numbers from 1 to the number of specified in the Number of Keys field. This option is applicable to all file formats availible in the Output format field.

      Include UUID column

      This option adds a column with a UUID version 4. This option is applicable to all file formats availible in the Output format field. This is a example of a UUID version 4 string:

      28aacd36-922c-4ab0-9933-a3bcc5c8642c

      Include timestamp

      This option adds a column with a timestamp in the ISO 8601 format. This option is applicable to all file formats availible in the Output format field. This is a example of a timestamp in the ISO 8601/ANSI SQL format:

      2023-03-10 15:46:01.106949

      This time value is taken from the server.

      Number of Keys

      This selects how many rows with keys the output table will contain. One key equals on row in the output. The maximum Number of Keys that are possible to generate is limited of the application Max keys is on the 'Settings page.'

      Making it happen

      When you have made your selections you are ready to create the output file. Just select the Generatebutton in the bottom of the page.

      The Template System

      Important! When generating keys, both for saving to a file and exporting as an SQL Table. You can save the settings in a Template. This Template' can be loaded later and reused. The template is also available for the REST API3.

      video 10. Save a template

      video 11. Load a template

      Saving Templates and Reading/Loading Templates

      Permission to Read/Load Templates ⚫️ Generate keys to a CSV, SQL or JSON file Generate keys to file ⚫️ Generate keys into a SQL-database SQL export Permission to Read only Templates ⚫️ The REST API

      System Status

      The True Random Number Generators that are connected to the system uses a disk buffer. The random numbers collected are encrypted by the driver and written to disk. In this way no collected randomness is wasted and the system gets an very high read speed. Keymaker can accommodate a great number of TRNGs connected to the system in parallel. The system administrator can set a maximum number of disc space aside for the RND Buffer. In the case below 3337 mega byte. Right now the buffer contains 3237 mega byte of randomness. This buffer is filling up 24/7. The TRNG Connected Port section shows that there are two TRNG devices connected to the server.

      figure 15. System status

      Logout from Keymaker™

      Logout from the system can be done in two ways. Either select the home icon in the left-top sidebar or the user icon in the left-bottom of the sidebar.

       

      video 12. Logout from Keymaker

      Summary

      After reading this section, you shall have learnt how to use the application in interactive mode, log in to the system, access and adjust settings, generate keys to a CSV, SQL or JSON file, and generate keys into a SQL-database. For more information about using the system to it's fullest, go to the Appendix Format Description Language FDL.


      Keymaker™ API Documentation v 1.0

      The Keymaker™API - an introduction

      The Keymaker™ API is a REST API, fully featured and easy to integrate with. A REST (Representational State Transfer) API is a type of web service that follows certain constraints and principles. The main features of a REST API are:

      1. Client-Server Architecture: REST API separates the client and server components of an application, which allows for flexible and scalable development. You can implement a call to the service in virtually any language of your choice.

      2. Statelessness: REST APIs do not store client context on the server between requests, which makes the API scalable and less prone to errors.

      3. Layered System: REST APIs can operate over a variety of networks and can be used by multiple systems, as long as they adhere to the constraints of the REST architecture.

      4. Use of HTTP Methods: REST APIs use HTTP methods such as GET, POST, PUT, DELETE, etc. to perform operations on resources.

      5. Return of Representations: REST APIs return a representation of the requested resource, which can be in various formats such as XML, JSON, etc. The Keymaker™ API returns values in JSON and text. It could also directly create resources on the server side as an example database tables.

      The Keymaker™ API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes and authentication. Additionally, the Keymaker™ API is secured by the use of a JWT Bearer Token in the HTTP request headers. This provides an extra layer of security and ensures that only authorized clients are able to access the API and its resources.

      Using the examples

      The sample code in this document has been designed to help you quickly and easily implement the functionality you require. The examples include code in Python, JavaScript fetch, and Curl calls, providing a range of options for you to choose from, depending on your preferred programming language or tool. Although they are ready to use, they will likely need to be modified to fit your specific needs and requirements. To help you understand how the code works and how to implement it, we've provided a series of examples that illustrate different aspects of the functionality.

      Throughout these examples, you will come across the URL https://acme.keym.net:5000. This URL is used as an example only and should be replaced with your own host address when you use the code. Your host address is the address of the server that will host your website or application.

      By customizing the examples to match your host address and other specific requirements, you can quickly and easily implement the functionality you need. Whether you're just starting out with web development or are an experienced developer, these examples are a great resource to have at your fingertips. Throughout the examples you will find a variable called baseurl, it will in the examples have the value "baseurl = "https://acme.keym.net:5000/"", please replace it with your own server value.

      Authorization Process

      To access the API, users must first request authorization from an assigned administrator. The administrator will review the request and grant access if deemed appropriate.

      Once the authorization is granted, the user will receive an API key through the Keymaker web interface. This key will be used to access the API and its associated resources. It's important to note that authorization is subject to review and can be revoked by the administrator at any time if necessary.

      By implementing this authorization process, we ensure that only users with a legitimate need for access to the API can use it. This helps to maintain the security and integrity of the API and its data, and protects against unauthorized access and misuse.

      Bearer Token - Authentication

      Bearer tokens are an authentication mechanism where a client sends a token to the server to prove their identity. The term "bearer" refers to the fact that the token "bearer" (or holder) of the token has the right to access the resources protected by the token. You get your token by calling the /get_token route. After calling /get_token with a valid API key, you will obtain a JSON Web Tokens (JWT). The terms Token, JWT and JSON Web Tokens are used interchangeably in this document.

      JSON Web Tokens (JWT) are a popular format for bearer tokens. A JWT is a JSON object that contains information about the authentication and authorization of a user. It is signed by the server and can be verified to ensure that it has not been tampered with.

      JWTs are used for authentication and authorization in RESTful APIs. They are usually passed in the "Authorization" header of a HTTP request, with the value "Bearer [token]". The server can then use the information in the JWT to verify the identity of the client and determine what resources they are allowed to access.

      In the Keymaker™ implementation the token generated on the server side contains a random response number. When the server revokes the token after a predetermined time. You must regenerate the token again.

      token

      Flow diagram: How to get a Token for using the API

      API key

      If you wish to utilize the Keymaker™ API, you must obtain a valid API key. This key enables you to make API requests and access the necessary data and functionality. You can obtain the API key through the Keymaker™ web interface or through the admin console. For further instructions, please refer to the Keymaker™ User Manual.

      The example code below shows you how to use the API key and the /get_token route route to obtain a token, which is a bearer token or a JSON Web Token (JWT). The resulting bearer token or JSON Web Token (JWT) is then utilized in a call to the /get_db_server_time route route to retrieve the server time. This provides a basic understanding of API usage and how to authenticate your API requests. You can use this code as a starting point and modify it as needed to fit your specific requirements.

      Run your first API request

      Python

      Javascript Fetch

      Curl - example of getting a Token and using it in a further API call.

      goto_top Goto top of page


      API-Definitions

      Index API-Definitions

      HTTP request endpointDescriptionProtected
      GET /get_tokenGet JWT token from serverNo
      GET /get_db_server_timeGet the server timeYes
      GET /getcachstatsGet stats from serverYes
      GET /getprofileIDGet profile settings with a specific ID numberYes
      GET /getsymkeyGenerates a symmetric key collection to different formatsYes
      GET /getsymkeysqlGenerates a symmetric key collection to a SQL tableYes
      GET /getuuidGenerates UUID v 4.0Yes
      GET /isrunningShows if the server is runningYes
      GET /randomnumberGenerates randomnumbers - flytta uppYes

      Note: All HTTP request endpoints are protected by a bearerAuth token. This with one exception. The GET /get_token where the request body contains the API Key. This route returns the JWT token subsequently used for accessing the protected routes in the above table.

      getsym_inc /get_token - Get JWT token from server

      Request Parameters: No parameters

      HTTP request headers

      JSON Body The request body should contain a JSON object with the following structure:

      Json body fields explained /getsymkey

      Fields in Jsonexamplepossible valuesmin/ valuesmax/ valuescomment
      api_key:see abovetextN/A1.000.000Maximum number of rows to generate.

      Response

      HTTP Status Codes

      CodeDescription
      200Success. The request was successful, and the response body contains the JWT token.*
      400Bad Request. The request was invalid. INVALIDAPICALL
      403Forbidden. The request was invalid. NOAPIPERMISSION. The client does not have permission to access the requested resource

      *Example Success Response: HTTP Status Code: 200 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJVadQssw5c Return type: TEXT

      Example Error Response (HTTP Status Code: 400): "INVALIDAPICALL". Return type: TEXT

      Note that the actual JWT token value in the success response is a dummy value, and you should replace it with a real JWT token in your implementation.

      Examples

      Python

      javascript fetch

      curl

      goto_top Goto top of page

      getsym_inc /get_db_server_time - Get the server time

      Request Parameters: No parameters

      HTTP request headers

      Response

      HTTP Status Codes

      CodeDescription
      200Success. The request was successful
      201Bad Request. The request was invalid. "Authorization error"

      Example Success Response: HTTP Status Code: 200 time:"2023-02-10 09:23:35", Return type: TEXT

      Example Error Response (HTTP Status Code: 201): "Authorization error",Return type: TEXT

      Examples

      Python

      javascript fetch

      Curl


      goto_top Goto top of page

      getsym_inc /getcachstats - Get stats from server

      Request Parameters: No parameters

      HTTP request headers

      Response

      HTTP Status Codes

      CodeDescription
      200Success. The request was successful
      201Bad Request. The request was invalid. "Authorization error"

      Example Success Response: HTTP Status Code: 200 time:"2023-02-10 09:23:35", Return type: TEXT

      Example Error Response (HTTP Status Code: 201): "Authorization error",Return type: TEXT

      Examples

      Python
      javascript fetch
      Curl

      goto_top Goto top of page


      getsym_inc /getprofileid - Get profile settings with a specific ID number

      Request

      The request must be done on a profile saved by a registred user on the interactive web interface to the system. For further instructions, please refer to the Keymaker™ User Manual section (TODO Link).

      ParameterTypeDescriptionRequired
      idnumberNumberRecord number of profile[optional]
      userStringName of user that saved the profile[optional]

      Return type: json

      HTTP request headers

      Examples

      Python

      javascript fetch

      Curl

      goto_top Goto top of page


      getsym_inc /getsymkey - Generates a symmetric key to different formats

      Json body

      Json body fields explained /getsymkey

      Fields in Jsonexamplepossible valuesmin/ valuesmax/ valuescomment
      maxrows:100Numeric11.000.000Maximum number of rows to generate.
      bits:12864, 128, 256, 51264512Multiples of bits shall match formatstring.
      formatstring:"'$'"FDL - FormatN/AN/ARefer to the FDL - Format description Language
      outputformat:"json"CSV, SQL, JSONN/AN/AOutputformat in CSV, ANSI SQL and JSON.
      exclusive_csv->columndelimiter_csv:";"; , (->)N/AN/ASemicolon, comma ord tab (only for csv)
      exclusive_csv->header_if_csv:False FalseTrueInclude header (only for csv)
      outfilename:"testfile"valid filenamesN/AN/AAny valid filename for the operating system
      isrownumbers:True1 to maxrowsFalseTrueInclude row numbers
      gen_uuid:TrueUUID
      version 4
      FalseTrueInclude a UUID column
      set_time:Trueserver timeFalseTrueInclude timestamp

      Return type: null (empty response body)

      Authorization: bearerAuth

      HTTP request headers

      Examples

      Python

      javascript fetch

      Curl

      goto_top Goto top of page


      getsym_inc /getsymkeysql - Generates a symmetric key to a SQL table

      Json body

      Return type:

      Authorization: bearerAuth

      HTTP request headers

      Json body fields explained for /getsymkeysql

      Fieldexamplepossible
      values
      min/
      values
      max/
      values
      comment
      maxrows:100Numeric11.000.000Maximum number of rows to generate.
      bits:12864, 128, 256, 51264512Multiples of bits shall match formatstring.
      formatstring:"'$'"FDL - FormatN/AN/ARefer to the FDL - Format description Language
      tablename:"keytbl"valid tablenameN/AN/AAny valid table name database
      isrownumbers:True1 to maxrowsFalseTrueInclude row numbers
      gen_uuid:TrueUUID version 4FalseTrueInclude UUID column
      set_time:Trueserver timeFalseTrueInclude timestamp

      Response

      HTTP Status Codes

      CodeDescription
      201Created. The request was successful, and a new resource has been created.
      400Bad Request. The request was invalid.

      Examples

      javascript fetch

      Curl

      goto_top Goto top of page


      getsym_inc /getuuid - Generates UUID v 4.0

      Parameters

      NameTypeDescriptionNotes
      countNumber [optional]
      typString [optional]

      Return type: Text Authorization: bearerAuth

      HTTP request headers

      Examples

      Python

      javascript fetch

      Curl

      goto_top Goto top of page


      getsym_inc /isrunning - Show if the server is running

      Parameters: No parameters

      Return type: null (empty response body)

      Authorization: bearerAuth

      HTTP request headers

      Examples

      Python

      javascript fetch

      Curl

      goto_top Goto top of page


      getsym_inc /randomnumber - Generates random numbers

      Parameters

      NameTypeDescriptionNotes
      minNumber [optional]
      maxNumber [optional]
      countNumber [optional]
      baseString [optional]
      typString [optional]

      Return type

      null (empty response body)

      Authorization

      bearerAuth

      HTTP request headers

      Examples

      Python

      javascript fetch

      Curl

      goto_top Goto top of page


      Appendix 1. Format Description Language FDL

      Formatting your output

      Many applications has a need for output in other formats than as an example hexadecimal. Sometimes you also need separators between different groups of encryption keys. Keymaker includes some standard formats. But with Keymaker, you can also create your own custom formatted output, exactly tailored to your needs. This without any custom programming . To create a custom format, you use characters from the . The language can mainly be separated in two parts. The flexible format string as this: '########-########' or the quick format as @*10 which creates a output like 0061A856-71B41F05, when you select a 64 bit output. You can also choose other delimiters in your format string as in '########/########' that will produce an output of 001E18D1/0146BFDF. The format string '##-##-##-##/##-##-##-##' creates an output of 'DB-29-59-11/A4-BC-8B-76'. Do not use the reserved characters specified in the table below in format strings.

      CharacterDescriptionUsage/NotesExample
      #Hexadecimal Digit placeholder########-########0061A856-71B41F05
      FCRC-32 of key########-########!FFFFFFFF0061A856-71B41F05,053010EE
      $base 64 full lenght of key 0061A85671B41F05
      $*base 64 full lenght of key with crc32 0061A85671B41F05,053010EE
      AFormat in ASCII rg&<$@3B
      A*Format as ASCII with crc32 rg&<$@3B,F84BFC19
      BFormat in base 64 a7hOwv+ga7jCuGvC
      B*Format in base 64 with crc32 a7hOwv+ga7jCuGvC,053010EE
      B10Base 64 with length 10 a7hOwv+ga7
      B*10Base 64 with length 10 with crc32 a7hOwv+ga7,053010EE
      @Numeric positive integer 199566710131161742035312991318290078543
      @*Numeric positive integer with crc32 199566710131161742035312991318290078543,F84BFC19
      @10Numeric positive integer with length 10 1491443784
      @*10Numeric positive integer with length 10 with crc32 1491443784,178EA843
      !Reserved charactersCannot be used in format strings as separators. 

      Examples

      TODO


      Appendix 2. connecting to an External Database

      ch02_figure_42 figure A1. Database Export Settings on the Settings page

      To export data from your application to an external database table, you need to set the following parameters for your JDBC* connection:

      To configure these settings, follow these steps:

      1. Open the application's settings page.

      2. Navigate to the "Database Export Settings" section.

      3. Enter the Host name or IP address of the external database server.

      4. Enter the Port number for the JDBC connection.

      5. Enter the User name and Password for the JDBC connection.

      6. Enter the Database name for the external database where you want to export your application's data.

      Test the connection to ensure that the settings are correct by selecting the Test Connection button. Once you have configured these settings, you can begin exporting your data to the specified external database.

      Supported databases

      Keymaker™ Supported database engines through Java™ database connectivity (JDBC). This option provides a convenient way to store the keys for future use and integrate them into your existing database management systems. You will find the connection details on the Settings page in the front end application. Supported databases:

      *JDBC stands for "Java Database Connectivity." It is a standard Java API that provides a set of interfaces for accessing relational databases from Java programs. JDBC allows Java programs to interact with databases using a uniform set of methods, regardless of the specific database management system being used. JDBC drivers are available for many different types of databases, including Oracle, MySQL, and PostgreSQL, among others. By using JDBC, Java developers can write database-independent code that can be easily ported to different platforms and database systems.


      Footnotes

      Keymaker™ Supported database engines through Java™ database connectivity (JDBC)5. This option provides a convenient way to store the keys for future use and integrate them into your existing database management systems. You will find the connection details in the Settings tab in the front end application. Supported databases:

      Java and JDBC are trademarks or registered trademarks of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.


      1 A True Random Number Generator (TRNG) is a device that generates random numbers based on physical phenomena such as radioactive decay or electronic noise. Unlike pseudo-random number generators that rely on algorithms, TRNGs produce truly random and unpredictable numbers that cannot be predicted or reproduced. This makes TRNGs ideal for use in cryptographic applications where the security of the generated numbers is critical.
      2 A microservice is a small, independently deployable service that performs a specific function within a larger software application. Microservices are designed to be modular, making it easier to build, test, and deploy complex applications. They are often used in distributed systems to improve scalability, resilience, and fault tolerance.
      3 A REST API is a web-based software architecture that enables communication between client and server using HTTP requests and responses. It allows for data transfer in a format that is easily read by client software, making it a flexible and powerful tool for building web applications. REST APIs are widely used in modern software development and are a key component of web-based applications.
      4 CSV, JSON, and SQL are file formats commonly used for storing and transmitting structured data. CSV is a plain-text format used for tabular data, while JSON is a lightweight format used for data interchange. SQL is a standard language used for managing and querying relational databases.
      5 Java™ Database Connectivity (JDBC) is an API originally for the Java programming language that defines how a client may access a database. It provides a Java-based data access technology used for Java database connectivity and is part of the Java Standard Edition platform from Oracle Corporation. However, JDBC is not limited to Java programming alone. It can be used with other programming languages, such as C, C#, and Python, to connect and interact with databases. Examples of libraries for each language include: C: unixODBC, Easysoft ODBC-ODBC Bridge, C#: .NET Framework Data Provider for ODBC, ADO.NET, Python: pyodbc, zxjdbc,JayDeBeApi.
      6 Supported databases
      7 The FIPS 140-3 standard specifies the security requirements for cryptographic modules including random number generation. Keymaker™ TRNG output undergoes statistical testing to ensure that it meets the highest standards for random number generation. All tests are executed in compliance with the FIPS 140-3 standard, giving you confidence in the quality and security of the encryption keys and identifiers generated by Keymaker™.
      8 An Keymaker™ FDL-format string is a string of characters that specifies the desired output format for encryption keys in Keymaker™. It is defined in the Format Description Language (FDL) format, which provides a flexible and powerful way to define custom output formats. With an FDL-format string, you can specify the order and format of various elements, such as the key length, delimiters, and padding characters. This enables you to tailor the output format to your specific needs and integrate it seamlessly into your workflows and intended applications. For more information about the Keymaker™ Format Description Language (FDL), see the Format Description Language (FDL) section of the user manual.
      9 CRC (cyclic redundancy check) is a type of checksum used to detect changes in data, such as errors that may occur during transmission or storage. When applied to an encryption key, CRC can be used to ensure that the key has not been modified or corrupted in any way. By comparing the CRC value of the original key with the CRC value of the received key, it is possible to check the integrity of the encryption key and verify that it has not been tampered with.
      10 ANSI-SQL is a standard SQL language defined by the American National Standards Institute (ANSI), which ensures compatibility with a wide range of database management systems
      Ref: "https://blog.ansi.org/2018/10/sql-standard-iso-iec-9075-2016-ansi-x3-135/"