ASN1 Play

Bookmark this to keep an eye on my project updates!

View project on GitHub

asn1Play

ASN.1 Encoder, Decoder & Validator.
Currently supports various versions of below specifications along with their inherited specs:

  1. GSMA SGP.22
  2. TCA eUICC_Profile_Package (SAIP)
  3. GSMA SGP.32


However, Tool can be extended to support any ASN1 based conversion (asn1schema of related specification needs to be added to tool).
Supports large variety of encoding-decoding rules (DER, JER, JSON, BER, CER, APER, COER, OER, UPER etc).

GitHub License Contributor Covenant

GitHub Release GitHub commits since latest release

Static Badge Website

Static Badge Website

Url(s) of AmenityPj

Refer Url(s) of AmenityPj for details.

Screen Shot(s) of Web App Static Badge

sample_web_1

Installation/Setup

Steps can be found here.

How To Use

There are various ways to Get Started:

  • Online Mode
    • Website Static Badge can be used
  • Offline Mode (Requires Download / Cloning of the Repo)
    • Code can be directly run from asn1Play/asn1_play/main/asn1play.py using any IDE
    • Local Web Server App amenitypj can be used

Help

Issue tracker can be found here.

Contributing

  • Code of Conduct can be found here.
  • Contributing Guidelines can be found here.

Few Major Features

  • Auto Trimming of HEX Data (White Spaces Deletion).
  • Auto Detection of Base64 & Hex data.
  • Auto Detection of ByteArraySigned & ByteArrayUnSigned.
  • Conversion Mode for HEX, ASCII, TEXT & Base64.
  • Support of “Individual Mode”; Raw/Target Data can be configured Directly or file path (Binary as well as Text File; any extension) can be passed.
  • Support of “Bulk Mode”; Raw/Target Data can be configured Directly in List/Array format or Directory Path can be passed (Files with Known extensions will be picked based on Input Format).
  • Support of “Yml Mode (Config Mode)”; Raw/Target Data (along with all needed config) can be configured Directly in Yaml Files (“.yaml” or “.yml” extensions), and same cane be passed in “Individual Mode” or “Bulk Mode”.
  • For Known File Extensions (“.asn1”, “.asn”, “.base64”, “.hex”), Input/Output Format may be modified automatically as per sensible out-of-the-box defaults.

Data Folders

  • \asn1Play\Data\SampleData: Sample Data folder containing various version specific data files.
  • \asn1Play\Data\UserData: User Data folder containing various version specific data files (Default Output Directory).

Sample Usage References

To Refer Sample usages, search for below keywords in source code (\asn1Play\asn1_play\main\data_type) and/or in data folders.

  • .Asn1Files;
  • .Base64Files;
  • .HexFiles;
  • .YmlFiles;
  • AsciiInput;
  • AsciiOutput;
  • TxtInput;
  • TxtOutput;
  • Asn1Element;
  • Asn1Schema;
  • Asn1ElementString;
  • Asn1ElementVariable;
  • Asn1Input;
  • Asn1Output;
  • Base64Input;
  • Base64Output;
  • BulkMode;
  • ByteArrayInput;
  • ByteArrayOutput;
  • ByteArraySignedInput;
  • ByteArraySignedOutput;
  • Certificate;
  • Der64Input;
  • Der64Output;
  • DerInput;
  • DerOutput;
  • DirectInput;
  • DirectoryInput;
  • DirectoryOutput;
  • EimConfigurationData;
  • ExportKeyword;
  • ExportedInput;
  • ExtendRemarksList;
  • FileInput;
  • HexInput;
  • HexOutput;
  • ItemIndexVariable;
  • ListInput;
  • OutputFile;
  • OutputKeyword;
  • PE_End;
  • ProfileElement;
  • ReParseOutput;
  • RemarksVariable;
  • StoreMetadataRequest;
  • TlvParsing;
  • UpdateMetadataRequest;
  • VersionVariable;
  • YmlInput;
  • YmlOutput;
  • YmlOutputSameFile;

Reserve Variables

  • $VERSION
    • Used for input_path, when version of asn specification needs to be considered in file path on run time.
  • $REMARKS
    • Used for output_file_path, when Remarks needs to be considered in output path.
  • $ASN1_ELEMENT
    • Used for remarks, when Asn Element Name needs to be considered in remarks.
  • $ITEM_INDEX
    • Used for output_file_path, when Item Index (For Bulk Mode) needs to be considered in output path.

Reserve Keywords

  • output
    • Used for output in file.
  • export
    • Used for export mode. Export of configuration in .yml file.

Important Points

  • For output_file, Both “directory path” and “file path” (identified based on any extension) are supported, Hence a path without extension will be considered as directory.
  • For input/output via files/directory, always enclosed path with r’’. Here “r” denotes raw string and avoid escape sequences, otherwise it might be considered as normal input.
  • output keyword always utilize comments
  • output file utilize comments in case of directory or if file name is having $REMARKS