20 int nbX(uchar v, quint64 *ret)
24 while((v & 0x80) && n < 8)
40 *n =
nbX(*field, &ret);
42 for(i = 1 ; i < *n ; i++)
56 time->
buf = (uint8_t*)calloc(time->
size,
sizeof *time->
buf);
58 for(
int i = 0 ; i < time->
size ; i++)
59 time->
buf[i] = *(field + i);
68 for(
int i = 0 ; i < 4 ; i++)
71 *time += *(field + i);
82 for(
int i = 0 ; i < 4 ; i++)
87 *int32 = (
long long int)tmp;
95 for(
int i = 0 ; i < 2 ; i++)
96 *uint16 += *(field + i);
109 hash->
buf = (uint8_t*)calloc(hash->
size,
sizeof *hash->
buf);
111 for(
int i = 0 ; i < length ; i++)
112 hash->
buf[i] = *(field + i);
138 for(
int i = 0 ; i < length ; i++)
139 opaque->
value.
buf[i] = *(field + i + offset);
141 return offset + length;
148 point->
type = *(field + offset++);
263 quint64 offset = 0, currentOffset;
267 quint64 nbIntX, currentOffsetIntX;
271 quint64 nbSsp, currentOffsetSsp;
273 subject->
type = *(field + offset++);
274 switch (subject->
type)
293 nbIntX =
extractINTX(field + offset, &nbOctetsIntX);
295 offset += nbOctetsIntX;
304 for(currentOffsetIntX = 0 ; currentOffsetIntX < nbIntX ;
cptIntX++, offset += currentOffset, currentOffsetIntX += currentOffset)
315 offset += nbOctetsSsp;
324 for(currentOffsetSsp = 0 ; currentOffsetSsp < nbSsp ;
cptSsp++, offset += currentOffset, currentOffsetSsp += currentOffset)
375 int nbOctetsTwoDLocation;
376 quint64 nbTwoDLocation =
extractINTX(field + offset, &nbOctetsTwoDLocation), currentOffset, currentOffsetLocation;
378 offset += nbOctetsTwoDLocation;
380 polygon->list.array = (
TwoDLocation_t**)calloc(1,
sizeof *polygon->list.array);
381 polygon->list.count = 0;
382 polygon->list.free = 0;
383 polygon->list.size = 0;
385 for(currentOffsetLocation = 0 ; currentOffsetLocation < nbTwoDLocation ;
cptTwoDLocation++, offset += currentOffset, currentOffsetLocation += currentOffset)
400 id->region_dictionary = *(field + offset++);
402 id->local_region =
extractINTX(field + offset, &nbOctets);
410 quint64 offset = 0, currentOffset;
413 int nbOctetsRectangularRegion;
414 quint64 nbRectangularRegion, currentOffsetRect;
424 nbRectangularRegion =
extractINTX(field + offset, &nbOctetsRectangularRegion);
426 offset += nbOctetsRectangularRegion;
435 for(currentOffsetRect = 0 ; currentOffsetRect < nbRectangularRegion ;
cptRectangularRegion++, offset += currentOffset, currentOffsetRect += currentOffset)
511 signature->
algorithm = *(field + offset++);
529 quint64 offset = 0, currentOffsetCertificate, currentOffset, currentOffsetRestriction;
536 int nbOctetSubjectAttr;
537 quint64 nbSubjectAttr =
extractINTX(field + offset, &nbOctetSubjectAttr);
539 offset += nbOctetSubjectAttr;
545 for(currentOffsetCertificate = 0 ; currentOffsetCertificate < nbSubjectAttr ;
cptSubjectAttr++, offset += currentOffset, currentOffsetCertificate += currentOffset)
553 int nbOctetValidityRestriction;
554 quint64 nbValidityRestriction =
extractINTX(field + offset, &nbOctetValidityRestriction);
556 offset += nbOctetValidityRestriction;
563 for(currentOffsetRestriction = 0 ; currentOffsetRestriction < nbValidityRestriction ;
cptValidityRestriction++, offset += currentOffset, currentOffsetRestriction += currentOffset)
578 quint64 offset = 0, currentOffset;
581 int nbOctetsCertificate;
582 quint64 nbCertificate, currentOffsetCertificate;
584 signerInfo->
type = *(field + offset++);
585 switch (signerInfo->
type)
600 nbCertificate =
extractINTX(field + offset, &nbOctetsCertificate);
602 offset += nbOctetsCertificate;
611 for(currentOffsetCertificate = 0 ; currentOffsetCertificate < nbCertificate ;
cptCertificate++, offset += currentOffset, currentOffsetCertificate += currentOffset)
676 quint64 headerLength =
extractINTX(field + 1, &n), currentOffset, offset = 0;
677 uchar *payload = field;
683 quint64 nbRequest, currentOffsetRequest;
686 int nbOctetsRecipient;
687 quint64 nbRecipients, currentOffsetRecipients;
710 &
headerField[
cptHeaderField].header_field.choice.generation_time_with_standard_deviation.generation_time_with_standard_deviation_value);
721 nbRequest =
extractINTX(payload + offset + n, &nbOctetsRequest);
723 offset += nbOctetsRequest;
732 for(currentOffsetRequest = 0 ; currentOffsetRequest < nbRequest ;
cptRequest++, offset += currentOffset, currentOffsetRequest += currentOffset)
744 offset += nbOctetItsAid;
755 nbRecipients =
extractINTX(payload + offset + n, &nbOctetsRecipient);
757 offset += nbOctetsRecipient;
766 for(currentOffsetRecipients = 0 ; currentOffsetRecipients < nbRecipients ;
cptRecipients++, currentOffsetRecipients += currentOffset, offset += currentOffset)
783 SecuredHeader_values.
type = *(payload + offset + n);
785 return SecuredHeader_values;
819 return SecureTrailer_values;
struct ValidityRestriction::validity_restriction::ValidityRestriction__validity_restriction_u::time_start_and_duration time_start_and_duration
#define ASN_SEQUENCE_ADD(headptr, ptr)
quint64 decode_GeographicRegion(uchar *field, GeographicRegion_t *region)
decode_GeographicRegion Decode a GeographicRegion.
quint64 decode_ItsAidSsp(uchar *field, ItsAidSsp_t *ssp)
decode_ItsAidSsp Decode an ItsAidSsp.
quint64 extractINTX(uchar *field, int *n)
extractINTX Decode an IntX.
quint64 decode_TwoDLocation(uchar *field, TwoDLocation_t *location)
decode_TwoDLocation Decode a TwoDLocation.
static IntX_t intx[NSECURE_FIELDS]
quint64 decode_RectangularRegion(uchar *field, RectangularRegion_t *region)
decode_RectangularRegion Decode a RectangularRegion.
IntX_t secured_trailer_length
quint64 decode_Signature(uchar *field, Signature_t *signature)
decode_Signature Decode a Signature.
struct SignerInfo * signer_info_certificate
Usefull functions and declarations.
SymmetricAlgorithm_t supported_symm_alg
subject_attribute_PR present
union EncryptionParameters::encryption_parameters::EncryptionParameters__encryption_parameters_u choice
quint64 decode_SubjectInfo(uchar *field, SubjectInfo_t *info)
decode_SubjectInfo Decode a SubjectInfo.
quint64 decode_UINT16(uchar *field, UINT16_t *uint16)
decode_UINT16 Decode an UINT16.
quint64 decode_INT32(uchar *field, INT32_t *int32)
decode_INT32 Decode an Int32.
static TrailerField_t trailerField[NSECURE_FIELDS]
PublicKeyAlgorithm_t pk_encryption
union SignerInfo::signer_info::SignerInfo__signer_info_u choice
static Certificate_t certificate[NSECURE_FIELDS]
struct EccPoint::ecc_point::EccPoint__ecc_point_u::uncompressed uncompressed
quint64 decode_ValidityRestriction(uchar *field, ValidityRestriction_t *validityRestriction)
decode_ValidityRestriction Decode a ValidityRestriction.
struct SignerInfo::signer_info::SignerInfo__signer_info_u::certificate_chain certificate_chain
struct SubjectAttribute::subject_attribute::SubjectAttribute__subject_attribute_u::its_aid_ssp_list its_aid_ssp_list
quint64 decode_HashedId(uchar *field, OCTET_STRING_t *hash, int length)
decode_HashedId Decode an HashedId.
quint64 decode_RecipientInfo(uchar *field, RecipientInfo_t *recipient)
decode_RecipientInfo Decode a RecipientInfo.
struct SubjectAttribute::subject_attribute::SubjectAttribute__subject_attribute_u::recontruction_value recontruction_value
struct EccPoint::ecc_point::EccPoint__ecc_point_u::unknown_ecc_point unknown_ecc_point
static int cptValidityRestriction
static RectangularRegion_t rectangularRegion[NSECURE_FIELDS]
quint64 decode_Time32(uchar *field, Time32_t *time)
decode_Time32 Decode a Time32.
quint64 decode_IdentifiedRegion(uchar *field, IdentifiedRegion_t *id)
decode_IdentifiedRegion Decode a IdentifiedRegion.
struct PublicKey::public_key::PublicKey__public_key_u::ecdsa_nistp256_with_sha256_public_key ecdsa_nistp256_with_sha256_public_key
struct GeographicRegion::geographic_region::GeographicRegion__geographic_region_u::circle circle
quint64 decode_Certificate(uchar *field, Certificate_t *certificate)
decode_Certificate Decode a Certificate.
Opaque_t service_specific_permissions
EcdsaSignature_t ecdsa_signature
int nbX(uchar v, quint64 *ret)
nbX Count the number of bytes used by the IntX.
union SubjectAttribute::subject_attribute::SubjectAttribute__subject_attribute_u choice
SubjectAssurance_t assurance
static int cptRectangularRegion
static RecipientInfo_t recipient[NSECURE_FIELDS]
quint64 decode_Duration(uchar *field, Duration_t *duration)
decode_Duration Decode a Duration.
union GeographicRegion::geographic_region::GeographicRegion__geographic_region_u choice
struct GeographicRegion::geographic_region geographic_region
struct SubjectAttribute::subject_attribute subject_attribute
ValidityRestrictionType_t type
struct Certificate * certif
quint64 decode_Opaque(uchar *field, Opaque_t *opaque, int length)
decode_Opaque Decode an Opaque.
encryption_parameters_PR present
struct TrailerField::trailer_field trailer_field
struct Certificate::validity_restrictions validity_restrictions
quint64 decode_ThreeDLocation(uchar *field, ThreeDLocation_t *location)
decode_ThreeDLocation Decode a ThreeDLocation.
GeographicRegion_t geographic_region
struct SignerInfo::signer_info::SignerInfo__signer_info_u::unknown_signer_info unknown_signer_info
struct SubjectAttribute::subject_attribute::SubjectAttribute__subject_attribute_u::verification_key verification_key
struct ValidityRestriction::validity_restriction::ValidityRestriction__validity_restriction_u::unknown_validity_restriction unknown_validity_restriction
struct Certificate::subject_attributes subject_attributes
struct RecipientInfo::recipient_info::RecipientInfo__recipient_info_u::unknown_recipient_info unknown_recipient_info
struct SubjectAttribute::subject_attribute::SubjectAttribute__subject_attribute_u::its_aid_list::its_aid its_aid
union PublicKey::public_key::PublicKey__public_key_u choice
struct ValidityRestriction::validity_restriction validity_restriction
struct SignerInfo::signer_info::SignerInfo__signer_info_u::certificate certificate
struct SubjectAttribute::subject_attribute::SubjectAttribute__subject_attribute_u::its_aid_ssp_list::its_aid_ssp its_aid_ssp
quint64 decode_EncryptionParameters(uchar *field, EncryptionParameters_t *encParams)
decode_EncryptionParameters Decode an EncryptionParameters.
struct EncryptionParameters::encryption_parameters::EncryptionParameters__encryption_parameters_u::aes_128_ccm aes_128_ccm
union ValidityRestriction::validity_restriction::ValidityRestriction__validity_restriction_u choice
SubjectAttributeType_t type
quint64 decode_HashedId3(uchar *field, HashedId3_t *hash)
decode_HashedId3 Decode an HashedId3.
UINT16_t region_identifier
geographic_region_PR present
struct Signature::sign::Signature__sign_u::unknown_signature unknown_signature
static int cptSubjectAttr
struct SignerInfo::signer_info::SignerInfo__signer_info_u::certificate_chain::certificates certificates
static int cptTwoDLocation
static HeaderField_t headerField[NSECURE_FIELDS]
struct SubjectAttribute::subject_attribute::SubjectAttribute__subject_attribute_u::its_aid_list its_aid_list
struct GeographicRegion::geographic_region::GeographicRegion__geographic_region_u::rectangle::rectangular_region rectangular_region
SubjectType_t subject_type
quint64 decode_Time64WithStandardDeviation(uchar *field, Time64WithStandardDeviation_t *time)
decode_Time64WithStandardDeviation Decode a Time64WithStandardDeviation.
quint64 decode_SubjectAttribute(uchar *field, SubjectAttribute_t *subject)
decode_SubjectAttribute Decode a SubjectAttribute.
recipient_info_PR present
quint64 decode_SignerInfo(uchar *field, SignerInfo_t *signerInfo)
decode_SignerInfo Decode a SignerInfo.
CircularRegion_t circular_region
EciesEncryptedKey_t enc_key
struct ValidityRestriction::validity_restriction::ValidityRestriction__validity_restriction_u::time_end time_end
quint64 decode_PublicKey(uchar *field, PublicKey_t *key)
decode_PublicKey Decode a PublicKey.
quint64 decode_EcdsaSignature(uchar *field, EcdsaSignature_t *ecdsa)
decode_EcdsaSignature Decode a EcdsaSignature.
PublicKeyAlgorithm_t algorithm
static SubjectAttribute_t subjAttr[NSECURE_FIELDS]
quint64 decode_EciesEncryptedKey(uchar *field, EciesEncryptedKey_t *ecies)
decode_EciesEncryptedKey Decode an EciesEncryptedKey.
quint64 decode_HashedId8(uchar *field, HashedId8_t *hash)
decode_HashedId8 Decode an HashedId8.
struct PublicKey::public_key public_key
struct Signature::sign sign
quint64 decode_SubjectAssurance(uchar *field, SubjectAssurance_t *subject)
decode_SubjectAssurance Decode a SubjectAssurance.
struct SignerInfo::signer_info signer_info
union RecipientInfo::recipient_info::RecipientInfo__recipient_info_u choice
struct PublicKey::public_key::PublicKey__public_key_u::unknown_public_key unknown_public_key
IdentifiedRegion_t id_region
struct SignerInfo::signer_info::SignerInfo__signer_info_u::certificate_digest_with_sha256 certificate_digest_with_sha256
SecuredHeader_t decode_SecuredHeader(uchar *field)
decode_SecuredHeader Decode a SecuredHeader.
struct GeographicRegion::geographic_region::GeographicRegion__geographic_region_u::id id
Signature_t signature_certificate
struct SubjectAttribute::subject_attribute::SubjectAttribute__subject_attribute_u::assurance_level assurance_level
PublicKeyAlgorithm_t algorithm
PolygonalRegion_t polygonal_region
SecureTrailer_t decode_SecureTrailer(uchar *field)
decode_SecureTrailer Decode a SecureTrailer.
struct RecipientInfo::recipient_info::RecipientInfo__recipient_info_u::ecies_nistp256_recipient_info ecies_nistp256_recipient_info
static int cptTrailerField
struct Signature::sign::Signature__sign_u::ecdsa_nistp256_with_sha256_signature ecdsa_nistp256_with_sha256_signature
struct SignerInfo::signer_info::SignerInfo__signer_info_u::certificate_digest_with_other_algorithm certificate_digest_with_other_algorithm
static int cptHeaderField
struct GeographicRegion::geographic_region::GeographicRegion__geographic_region_u::polygon polygon
struct ValidityRestriction::validity_restriction::ValidityRestriction__validity_restriction_u::region region
struct GeographicRegion::geographic_region::GeographicRegion__geographic_region_u::rectangle rectangle
PublicKeyAlgorithm_t algorithm
quint64 decode_EccPoint(uchar *field, EccPoint_t *point)
decode_EccPoint Decode an EccPoint.
static ValidityRestriction_t validityRestriction[NSECURE_FIELDS]
quint64 decode_PolygonalRegion(uchar *field, PolygonalRegion_t *polygon)
decode_PolygonalRegion Decode a PolygonalRegion.
struct EccPoint::ecc_point ecc_point
union Signature::sign::Signature__sign_u choice
static int cptCertificate
static ItsAidSsp_t ssp[NSECURE_FIELDS]
SubjectInfo_t subject_info
struct GeographicRegion::geographic_region::GeographicRegion__geographic_region_u::unknown_geographic_region unknown_geographic_region
quint64 decode_CircularRegion(uchar *field, CircularRegion_t *region)
decode_CircularRegion Decode a CircularRegion.
union EccPoint::ecc_point::EccPoint__ecc_point_u choice
quint64 decode_Time64(uchar *field, Time64_t *time)
decode_Time64 Decode a Time64.
struct EncryptionParameters::encryption_parameters::EncryptionParameters__encryption_parameters_u::unknown_encryption_parameters unknown_encryption_parameters
SymmetricAlgorithm_t symm_algorithm
struct PublicKey::public_key::PublicKey__public_key_u::ecies_nistp256_public_key ecies_nistp256_public_key
static HashedId3_t hashedID3[NSECURE_FIELDS]
struct SubjectAttribute::subject_attribute::SubjectAttribute__subject_attribute_u::unknown_subject_attribute unknown_subject_attribute
struct EncryptionParameters::encryption_parameters encryption_parameters
struct RecipientInfo::recipient_info recipient_info
validity_restriction_PR present
struct ValidityRestriction::validity_restriction::ValidityRestriction__validity_restriction_u::time_start_and_end time_start_and_end
struct SubjectAttribute::subject_attribute::SubjectAttribute__subject_attribute_u::encryption_key encryption_key
struct SecureTrailer::trailer_fields trailer_fields
static TwoDLocation_t twoDLocation[NSECURE_FIELDS]