52 lines
2.0 KiB
C
52 lines
2.0 KiB
C
/* Benjamin DELPY `gentilkiwi`
|
|
http://blog.gentilkiwi.com
|
|
benjamin@gentilkiwi.com
|
|
Licence : http://creativecommons.org/licenses/by/3.0/fr/
|
|
*/
|
|
#pragma once
|
|
#include "globals.h"
|
|
#include "kull_m_string.h"
|
|
|
|
#define DIRTY_ASN1_ID_BOOLEAN 0x01
|
|
#define DIRTY_ASN1_ID_INTEGER 0x02
|
|
#define DIRTY_ASN1_ID_BIT_STRING 0x03
|
|
#define DIRTY_ASN1_ID_OCTET_STRING 0x04
|
|
#define DIRTY_ASN1_ID_NULL 0x05
|
|
#define DIRTY_ASN1_ID_OBJECT_IDENTIFIER 0x06
|
|
#define DIRTY_ASN1_ID_GENERAL_STRING 0x1b
|
|
#define DIRTY_ASN1_ID_GENERALIZED_TIME 0x18
|
|
#define DIRTY_ASN1_ID_SEQUENCE 0x30
|
|
|
|
#define DIRTY_ASN1_MASK_HIGH_SIZE 0x80
|
|
#define DIRTY_ASN1_MASK_APPLICATION 0x60
|
|
#define DIRTY_ASN1_MASK_CONTEXT 0xA0
|
|
|
|
typedef struct _DIRTY_ASN1_SEQUENCE_1 {
|
|
UCHAR type;
|
|
UCHAR size;
|
|
} DIRTY_ASN1_SEQUENCE_1, *PDIRTY_ASN1_SEQUENCE_1;
|
|
|
|
typedef struct _DIRTY_ASN1_SEQUENCE_2 {
|
|
UCHAR type;
|
|
UCHAR sizeSize;
|
|
USHORT size;
|
|
} DIRTY_ASN1_SEQUENCE_2, *PDIRTY_ASN1_SEQUENCE_2;
|
|
|
|
typedef struct _DIRTY_ASN1_SEQUENCE_EASY {
|
|
union {
|
|
DIRTY_ASN1_SEQUENCE_1 seq1;
|
|
DIRTY_ASN1_SEQUENCE_2 seq2;
|
|
};
|
|
} DIRTY_ASN1_SEQUENCE_EASY, *PDIRTY_ASN1_SEQUENCE_EASY;
|
|
|
|
DWORD kull_m_asn1_getSize(PDIRTY_ASN1_SEQUENCE_EASY sequence);
|
|
void kull_m_asn1_append(PDIRTY_ASN1_SEQUENCE_EASY * parent, PDIRTY_ASN1_SEQUENCE_EASY child);
|
|
void kull_m_asn1_append_ctx_and_data_to_seq(PDIRTY_ASN1_SEQUENCE_EASY * Seq, UCHAR CtxId, PDIRTY_ASN1_SEQUENCE_EASY Data);
|
|
PDIRTY_ASN1_SEQUENCE_EASY kull_m_asn1_create(UCHAR type, LPCVOID data, DWORD size, PDIRTY_ASN1_SEQUENCE_EASY *parent);
|
|
PDIRTY_ASN1_SEQUENCE_EASY kull_m_asn1_GenTime(PFILETIME localtime);
|
|
PDIRTY_ASN1_SEQUENCE_EASY kull_m_asn1_GenString(PCUNICODE_STRING String);
|
|
PDIRTY_ASN1_SEQUENCE_EASY kull_m_asn1_BitStringFromULONG(ULONG data);
|
|
|
|
#define KULL_M_ASN1_CREATE_APP(AppId) kull_m_asn1_create(DIRTY_ASN1_MASK_APPLICATION | AppId , NULL, 0, NULL)
|
|
#define KULL_M_ASN1_CREATE_CTX(CtxId) kull_m_asn1_create(DIRTY_ASN1_MASK_CONTEXT | CtxId , NULL, 0, NULL)
|
|
#define KULL_M_ASN1_CREATE_SEQ() kull_m_asn1_create(DIRTY_ASN1_ID_SEQUENCE , NULL, 0, NULL) |