- 
                Notifications
    
You must be signed in to change notification settings  - Fork 484
 
Description
Prerequisites
- Checked the developer manual
 - Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=repo%3Alibtom%2Flibtomcrypt
 -  Checked that your issue isn't due to the fact that you're using asymmetric cryptography and you forgot linking in and/or setting an MPI provider (usually this causes either random crashes or runtime errors like 
LTC_ARGCHK 'ltc_mp.name != NULL' failure ...). c.f. Ch. "Math Descriptors" of the developer manual. - Checked that your issue isn't related to TomsFastMath's limitation that PK operations can by default only be done with max. 2048bit keys
 
Description
How can I construct, using libtomcrypt release 1.18.2, a struct of type ltc_asn1_list that, when nested inside a SEQUENCE and encoded, will produce an encoded DER SET OF with an IMPLICIT CONTEXT SENSITIVE [0] tag (as in CMS SignedData certificates, for example)?
If I set list.type = LTC_ASN1_SETOF, I get a properly encoded SET but the tag is 0x31 (UNIVERSAL SET).  I can manually change the tag after encoding to 0xA0, except that the SET is nested inside layers of ASN.1 data.  If I use list.type = LTC_ASN1_CUSTOM_TYPE, I can get the tag I want, but the function der_encode_custom_type() encodes the items like a SEQUENCE, not in sorted order like a DER SET.  If I use the macro LTC_SET_ASN1_CUSTOM_CONSTRUCTED, I can nest a SET inside a custom typed SEQUENCE, creating an EXPLICIT tag.
Am I missing something?  Is there a solution in the latest developer version?  It seems that I must either change the tag manually after encoding, or else pre-sort the items manually  within the array list.data.  A fix would be to look during der_encode_custom_type() for list.used=LTC_ASN1_SETOF.
Steps to Reproduce
Version
Release 1.18.2