BerTool

Basic Encoding Rules tool.

Лицензия

Лицензия

Группа

Группа

org.nightcode
Идентификатор

Идентификатор

bertool
Последняя версия

Последняя версия

0.5
Дата

Дата

Тип

Тип

jar
Описание

Описание

BerTool
Basic Encoding Rules tool.
Ссылка на сайт

Ссылка на сайт

http://github.com/nightcode/bertool/
Система контроля версий

Система контроля версий

http://github.com/nightcode/bertool/

Скачать bertool

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/org.nightcode/bertool/ -->
<dependency>
    <groupId>org.nightcode</groupId>
    <artifactId>bertool</artifactId>
    <version>0.5</version>
</dependency>
// https://jarcasting.com/artifacts/org.nightcode/bertool/
implementation 'org.nightcode:bertool:0.5'
// https://jarcasting.com/artifacts/org.nightcode/bertool/
implementation ("org.nightcode:bertool:0.5")
'org.nightcode:bertool:jar:0.5'
<dependency org="org.nightcode" name="bertool" rev="0.5">
  <artifact name="bertool" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.nightcode', module='bertool', version='0.5')
)
libraryDependencies += "org.nightcode" % "bertool" % "0.5"
[org.nightcode/bertool "0.5"]

Зависимости

compile (1)

Идентификатор библиотеки Тип Версия
com.google.code.findbugs : jsr305 jar 3.0.0

test (1)

Идентификатор библиотеки Тип Версия
junit : junit jar 4.12

Модули Проекта

Данный проект не имеет модулей.

BerTool

Build Status Coverage Status Maven Central

Basic Encoding Rules tool. BerTool was primarily created to decode EMV records encoded in tag-length-value or BER TLV format (TLV is also known as type-length value). With this tool it is easy not only to decode but to encode records too.

How to encode

 ├─[6F]
 │  ├─[84] 315041592E5359532E4444463031
 │  └─[A5]
 │     ├─[88] 02
 │     └─[5F2D] 656E
 └─[9F36] 0060

code

  BerBuilder builder = BerBuilder.newInstance()
        .add(0x6F, BerBuilder.newInstance()
            .addHexString(0x84, "315041592E5359532E4444463031")
            .add(0xA5, BerBuilder.newInstance()
                .add(0x88, new byte[] {0x02})
                .addAsciiString(0x5F2D, "en")))
        .add(0x9F36, new byte[] {0x00, 0x60});

  // write to OutputStream
  OutputStream out = new ByteArrayOutputStream();
  builder.writeTo(out);

  // or to ByteBuffer
  ByteBuffer buffer = ByteBuffer.allocate(builder.length());
  builder.writeTo(buffer);

How to decode

  byte[] byteArray = BerUtil.hexToByteArray("6F1A840E315041592E5359532E444446"
    + "3031A5088801025F2D02656E9f36020060");

  BerFrame berFrame = BerFrame.parseFrom(byteArray);

  byte[] tag84 = berFrame.getContent(0x84)
  byte[] tag5F2D = berFrame.getContent(0x5F2D);

StreamBerPrinter example

with DefaultBerFormatter

  byte[] byteArray = BerUtil.hexToByteArray("6F1A840E315041592E5359532E444446"
    + "3031A5088801025F2D02656E77299f2701009f360200609f2608c2c12b098f3d"
    + "a6e39f10120111258013423a02cfec00000002011400ff9000"); 

  BerFrame berFrame = BerFrame.parseFrom(byteArray);

  BerPrinter printer = new StreamBerPrinter(System.out);
  printer.print(berFrame);

output

 ├─[6F] 840E315041592E5359532E4444463031A5088801025F2D02656E
 │  ├─[84] 315041592E5359532E4444463031
 │  └─[A5] 8801025F2D02656E
 │     ├─[88] 02
 │     └─[5F2D] 656E
 ├─[77] 9F2701009F360200609F2608C2C12B098F3DA6E39F10120111258013423A02CFEC00000002011400FF
 │  ├─[9F27] 00
 │  ├─[9F36] 0060
 │  ├─[9F26] C2C12B098F3DA6E3
 │  └─[9F10] 0111258013423A02CFEC00000002011400FF
 └─[90]

with EmvBerFormatter

  byte[] byteArray = BerUtil.hexToByteArray("6F1A840E315041592E5359532E444446"
    + "3031A5088801025F2D02656E77299f2701009f360200609f2608c2c12b098f3d"
    + "a6e39f10120111258013423a02cfec00000002011400ff9000"); 

  BerFrame berFrame = BerFrame.parseFrom(byteArray);

  BerPrinter printer = new StreamBerPrinter(System.out
      , EmvBerFormatter.newInstanceWithSpaces());
  printer.print(berFrame);

output

 ├─[6F] File Control Information (FCI) Template
 │  │ 84 0E 31 50 41 59 2E 53  59 53 2E 44 44 46 30 31
 │  │ A5 08 88 01 02 5F 2D 02  65 6E
 │  ├─[84] Dedicated File (DF) Name
 │  │   31 50 41 59 2E 53 59 53  2E 44 44 46 30 31
 │  └─[A5] File Control Information (FCI) Proprietary Template
 │     │ 88 01 02 5F 2D 02 65 6E
 │     ├─[88] Short File Identifier (SFI)
 │     │   02
 │     └─[5F2D] Language Preference
 │         65 6E
 ├─[77] Response Message Template Format 2
 │  │ 9F 27 01 00 9F 36 02 00  60 9F 26 08 C2 C1 2B 09
 │  │ 8F 3D A6 E3 9F 10 12 01  11 25 80 13 42 3A 02 CF
 │  │ EC 00 00 00 02 01 14 00  FF
 │  ├─[9F27] Cryptogram Information Data
 │  │   00
 │  ├─[9F36] Application Transaction Counter (ATC)
 │  │   00 60
 │  ├─[9F26] Application Cryptogram
 │  │   C2 C1 2B 09 8F 3D A6 E3
 │  └─[9F10] Issuer Application Data
 │      01 11 25 80 13 42 3A 02  CF EC 00 00 00 02 01 14
 │      00 FF
 └─[90] Issuer Public Key Certificate

Download

Download the latest jar via Maven:

<dependency>
  <groupId>org.nightcode</groupId>
  <artifactId>bertool</artifactId>
  <version>0.5</version>
</dependency>

Feedback is welcome. Please don't hesitate to open up a new github issue or simply drop me a line at dmitry@nightcode.org.

Версии библиотеки

Версия
0.5
0.4.1
0.4
0.3
0.2
0.1