You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Fixed PKCS#10 attribute canonicalisation: programmatically created attribute sets are DER-sorted, while decoded
`rawAttributes` and `rawValue` retain malformed wire order and duplicates for lenient parsing.
* Added `LenientSet`, a serializable ASN.1 `SET OF` collection that accepts only Kotlin sets when constructed,
preserves decoded wire contents when re-encoded, and exposes `toValidatedSet()` for duplicate validation.
* Decoding an ASN.1 `SET OF` into Kotlin `Set<T>` now throws instead of silently discarding duplicate elements.
* PKCS#10 semantic `attributes` and `value` getters now reject malformed decoded duplicates; empty attribute values,
duplicate attribute OIDs, and empty extension requests are rejected during programmatic construction.
* Attributes { ATTRIBUTE:IOSet } ::= SET OF Attribute{{ IOSet }}
26
+
*
27
+
* CRIAttributes ATTRIBUTE ::= {
28
+
* ... -- add any locally defined attributes here -- }
29
+
*
22
30
* Attribute { ATTRIBUTE:IOSet } ::= SEQUENCE {
23
31
* type ATTRIBUTE.&id({IOSet}),
24
32
* values SET SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{@type})
25
33
* }
26
-
*
27
34
* ```
35
+
*
36
+
* [rawAttributes] uses [LenientSet] to hold malformed data too. **DO NOT ASSUME ANY PARTICULAR ORDER OR CONCRETE COLLECTION TYPE!** Canonical sorting happens only on encode!
37
+
* Hence, the order of attributes may differ post-encode.
38
+
*
39
+
* This class's [equals] and [hashCode] reflect this characteristic: Order of attributes is irrelevant for equality!
28
40
*/
41
+
@ConsistentCopyVisibility
29
42
@Serializable
30
-
data classPkcs10CertificationRequestInfo(
43
+
data classPkcs10CertificationRequestInfo private constructor(
0 commit comments