Buscar categorias, pacotes e repositórios

Detalhes do pacotev1.6.8

asn1lib

Uma biblioteca de analisador ASN1 para Dart. Codifica/decodifica objetos ASN1 em bytes BER

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
2,3 mi
Curtidas
27
Pontos Pub
150

Instalar pacote

flutter pub add asn1lib

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

asn1lib é uma biblioteca Dart para análise e geração de estruturas de dados ASN.1 (Abstract Syntax Notation One) usando as regras de codificação básica (BER). Permite codificar e decodificar objetos ASN.1 em e a partir de fluxos binários BER, tornando-a adequada para trabalhar com protocolos que dependem do ASN.1, como certificados X.509, LDAP e SNMP. A biblioteca suporta todas as principais plataformas, incluindo Android, iOS, Web, macOS, Windows e Linux. Oferece uma API limpa e segura por tipo para lidar com estruturas complexas e aninhadas de ASN.1.

Casos de uso

  • Análise de certificados X.509
  • Trabalhando com dados LDAP
  • Implementando clientes SNMP
  • Manipulação de formatos de dados criptográficos
  • Interoperabilidade com sistemas legados

Principais recursos

  • Codificação/decodificação BER
  • Suporte para estruturas ASN.1 aninhadas
  • Compatibilidade multiplataforma
  • Mapeamento de objetos seguro por tipo
  • Leve e dependências mínimas

Indicado para

  • Desenvolvedores trabalhando com padrões criptográficos
  • Integradores de sistemas que lidam com protocolos baseados em ASN.1
  • Aplicações que exigem troca segura de dados

Considerações

  • Requer conhecimento de ASN.1 e BER
  • Não é ideal para dados simples do tipo JSON
  • Documentação limitada em comparação com bibliotecas principais

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

ASN.1 Parser for Dart

Encodes & decodes ASN1 using BER encoding.

Samples

Encoding
import 'package:asn1lib/asn1lib.dart';

var s = ASN1Sequence();
s.add(ASN1Integer(23));
s.add(ASN1OctetString('This is a test'));
s.add(ASN1Boolean(true));

// GET the BER Stream
var bytes = s
.
encodedBytes;
Decoding
import 'package:asn1lib/asn1lib.dart';

// e.g. bytes from the Encoding Example
var p = ASN1Parser(bytes);
var s2 = p.nextObject();
// s2 is a sequence...


// relaxed parsing, returning a generic ASN1Object from (yet) unsupported structures, instead of throwing
var p2 = ASN1Parser(bytes, relaxedParsing: true);
var s3 = p2.nextObject();
// s3 is a sequence...

ASN1 Object classes

The library has been most thoroughly tested against ASN1 primitive class types, such as strings, integers, sequences and sets.

There is minimal support for ASN1 Application, Context-specific and Private classes. If the parser encounters these tags, it will wrap them in an a corresponding object ( ASN1Application, ASN1ContextSpecific, ASN1Private). You can force decode these to another type, by doing something like this:

    var s = parser.nextObject();
    // We expect this is a context-specific class
    expect(s, isA<ASN1ContextSpecific>());
    // which is also an ASN1Object...
    expect(s, isA<ASN1Object>());
    // We expect this is a sequence, so "recast" to a sequence type
    var sequence = ASN1Sequence.fromBytes(s.encodedBytes);
    expect(sequence, isA<ASN1Sequence>());

Breaking Changes

As of 1.6, the default encoding of ASN1OctetString("some string") has changed. It now encodes octets using utf8 encoding. This is different than Dart's default utf16 encoding.

If you need to encode to utf16, you should convert to bytes first:

var x = ASN1OctetString(Uint8List.fromList('some string'.codeUnits));
// new getter
var y = x.utf16StringValue;

The getter ASN1OctetString.stringValue is deprecated. You should use ASN1OctetString.utf8StringValue or ASN1OctetString.utf16StringValue instead.

Issues

ASN1 parsing is complex, so bugs are expected. If you find a bug, please provide a test case that demonstrates the issue, along with the expected output. Bonus points if it is formatted as a dart test.

References

  • https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/
  • https://luca.ntop.org/Teaching/Appunti/asn1.html
  • https://ldap.com/ldapv3-wire-protocol-reference-asn1-ber/

Categorias

Repositório-fonte

Projetos que usam este pacote