New features, upcoming releases & more | Ascertia Blog

Post–Quantum Cryptography in ADSS Server–⁠Interoperability Validation

Written by Naeem Aslam | May 12, 2026 10:00:00 AM

The practical deployment of Post-Quantum Cryptography is often related to algorithms, but the real conversation also needs to include how the algorithms are encoded into real-world structures.

Deeper than that, structural compliance alone is insufficient; interoperability needs to be demonstrated against independent cryptographic toolchains. This blog will delve into the topic of interoperability where PQC is concerned.

This is the second blog in a series. In the first article, I examined how ADSS Server integrates ML-DSA and ML-KEM into X.509 and CMS structures in accordance with RFC 9881 and RFC 9882.

In release 8.4 of ADSS Server, we performed cross-validation testing using:

  • OpenSSL 3.6.1
  • Bouncy Castle 1.83

This article walks through the validation process and the results.

1. Test Environment

Document this clearly — engineers care.

Example:

  • ADSS Server 8.4
  • ML-DSA-44 test hierarchies
  • OpenSSL 3.6.1 (built with PQC support)
  • Bouncy Castle 1.83
  • Windows x86_64 test environment

No ADSS-specific validation tools were used during verification.

This reinforces independence.

2. X.509 Certificate Validation

2.1 Certificate Inspection (OpenSSL)

Example command:

openssl x509 -in ML-DSA-44_DocSig.cer -text -noout

What we verify:

  • signatureAlgorithm OID
  • subjectPublicKeyInfo.algorithm OID
  • Public key length
  • Certificate chain fields

Include output excerpt such as:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            1d:1d:9e:26:0f:18:b0:51:50:49:65:fc:df:14:3b:41
        Signature Algorithm: ML-DSA-44
        Issuer: C=GB, CN=ML-DSA-44_RootCA
        Validity
            Not Before: Feb  9 11:32:31 2026 GMT
            Not After : Feb  9 11:32:31 2027 GMT
        Subject: C=GB, CN=ML-DSA-44_DocSig
        Subject Public Key Info:
            Public Key Algorithm: ML-DSA-44
                ML-DSA-44 Public-Key:
                pub:
                    fd:e8:69:cb:58:81:9f:8d:5b:d5:9f:f2:0a:3f:0d:bc:
                                     ...... 
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Non Repudiation
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Authority Key Identifier:
                83:95:36:A5:8C:47:0C:04:56:A0:5B:92:25:24:0C:D8:D5:4D:C8:4D
            X509v3 Subject Key Identifier:
                FB:72:1C:D2:89:7A:B6:41:C6:88:91:91:F5:10:12:DD:84:EC:6B:7C
    Signature Algorithm: ML-DSA-44
    Signature Value:
        66:cc:4e:c0:62:76:33:af:6f:9d:d8:ab:87:be:cb:c8:57:84:ea:54:d4:c8:4f:97:
                        ..............

This confirms that:

  • OpenSSL recognises the ML-DSA OID.
  • The certificate’s AlgorithmIdentifier fields are correctly encoded.
  • The SubjectPublicKeyInfo structure is parsed without ASN.1 errors.
  • The public key length matches the selected ML-DSA parameter set.

Parsing is often the first failure point when ASN.1 encoding is incorrect. No structural errors were encountered.

2.2 Certificate Path Validation

Then validate chain:

openssl verify -CAfile ML-DSA-44_RootCA.cer ML-DSA-44_DocSig.cer

Expected result:

ML-DSA-44_DocSig.cer: OK

This demonstrates that:

  • OpenSSL successfully built the PKIX certification path.
  • ML-DSA signatures were cryptographically verified.
  • The trust anchor model remains unchanged.
  • No classical fallback mechanisms were required.

Importantly, PKIX path validation logic did not require modification. Only the signature primitive differed.

This confirms that ML-DSA integrates cleanly into the existing RFC 5280 trust model.

3. CRL Validation

Inspect CRL:

openssl crl -in ML-DSA-44_RootCA.crl -text -noout

Include output excerpt such as:

Certificate Revocation List (CRL):
    Version 2 (0x1)
    Signature Algorithm: ML-DSA-44
    Issuer: C=GB, CN=ML-DSA-44_RootCA
    Last Update: Feb  9 11:06:01 2026 GMT
    Next Update: Feb 10 11:06:01 2026 GMT
    CRL extensions:
        X509v3 Authority Key Identifier:
            83:95:36:A5:8C:47:0C:04:56:A0:5B:92:25:24:0C:D8:D5:4D:C8:4D
        X509v3 CRL Number:
            1
No Revoked Certificates.
    Signature Algorithm: ML-DSA-44
    Signature Value:
        7d:56:c5:53:22:60:69:de:04:c4:f7:08:3d:84:2c:60:12:d7:34:f7:49:ad:62:77:
        39:d1:8f:11:33:f3:82:26:96:ff:25:98:af:97:fb:48:fb:4e:07:79:5d:b1:6e:f5:
        a1:81:19:5a:2a:8a:91:ec:7a:4a:84:92:7d:6e:a8:25:93:4c:4f:4c:29:7c:c8:89:
        48:f4:92:cf:fd:9d:d2:dd:4e:fb:a2:71:96:c1:9e:86:ac:2b:1f:fc:a2:8f:de:df:

The CRL parsed correctly, displaying:

  • ML-DSA signature algorithm identifier
  • Valid issuer fields
  • Properly encoded revoked certificate entries

To validate revocation processing:

openssl verify -crl_check -CRLfile ML-DSA-44_RootCA.crl -CAfile
ML-DSA-44_RootCA.cer  ML-DSA-44_DocSig.cer

This confirms:

  • The CRL signature was successfully verified using ML-DSA.
  • Revocation status processing remains unchanged.
  • No structural deviations from RFC 5280 CRL semantics occurred.

The only observable difference compared to classical CRLs is increased signature size and overall artefact size.

Operationally, revocation handling behaves identically.

4. CMS Signature Validation (RFC 9882)

CMS signatures were generated using by ADSS Server using ML-DSA and validated using OpenSSL.

4.1 CMS Signature Verification (OpenSSL)

openssl cms -verify -in ML-DSA-44_DocSig.cms -inform DER -CAfile
ML-DSA-44_RootCA.cer -out unsigned.txt

Expected output:

CMS Verification successful

This confirms that:

  • The CMS SignedData structure was parsed correctly.
  • The SignerInfo.signatureAlgorithm OID was recognised.
  • The ML-DSA signature over signedAttrs was verified.
  • No proprietary CMS attributes were introduced.

CMS interoperability is critical because document signing ecosystems depend heavily on strict ASN.1 conformance.

The validation demonstrates that RFC 9882 integration within ADSS Server is structurally correct and compatible with independent CMS implementations.

5. OCSP Response Validation

OCSP Response generated by ADSS Server is validated using OpenSSL command below:

openssl ocsp -respin ML-DSA-44_OCSP-Response.ber -text -noverify

Note: Long output so not included. One can execute above command using OCSP response shared in previous blog.

The BasicOCSPResponse structure parsed correctly, including:

  • ResponseData
  • SignatureAlgorithm (ML-DSA OID)
  • BIT STRING signature value

This confirms:

  • OpenSSL recognises ML-DSA for OCSP signature verification.
  • PKIX-based OCSP semantics remain intact.
  • No custom extensions or encoding adjustments were required.

OCSP is often sensitive to structural inconsistencies. Successful parsing and verification indicate full PKIX compatibility.

6. Timestamp Token Validation

Timestamp tokens generated by ADSS Server (CMS-based TST) were validated using:

openssl ts -reply -in ML-DSA-44_Timestamp-Token.pkcs7 -token_in -text

Output excerpt such as:

Status info:
Status: Granted.
Status description: unspecified
Failure info: unspecified

TST info:
Version: 1
Policy OID: 1.2.3.4.5
Hash Algorithm: sha256
Message data:
    0000 - a5 dd f8 f1 4e be a9 78-7b cb 50 a4 5b 37 a4 ff    ....N..x{.P.[7..
    0010 - 31 08 ca 38 00 7d 24 21-52 2f cd fc e6 1f 2e d8    1..8.}$!R/......
Serial number: 0xA109E38C4BC7
Time stamp: Feb  9 12:00:44 2026 GMT
Accuracy: unspecified
Ordering: no
Nonce: 0x0184F0F3
TSA: DirName:/C=GB/CN=ML-DSA-44_TSA
Extensions:

Successful validation confirms:

  • TSTInfo was parsed correctly.
  • The embedded CMS SignedData structure was valid.
  • ML-DSA signature verification succeeded.
  • Long-term validation (LTV) workflows remain structurally viable.

This is particularly important for regulated environments where timestamp validation must remain independent and verifiable decades into the future.

7. Bouncy Castle Validation

To validate Java ecosystem compatibility, we repeated testing using Bouncy Castle 1.83.

7.1 Certificate Validation

Using Bouncy Castle PKIX APIs:

  • Loaded ML-DSA certificate chain.
  • Constructed a CertPath.
  • Executed PKIX path validation.

Results:

  • No ASN.1 parsing exceptions.
  • ML-DSA signatures verified successfully.
  • Path validation completed without structural errors.

This confirms that Java-based PKI stacks can process ML-DSA certificates issued by ADSS Server.

7.2 CMS Validation

Using Bouncy Castle CMS APIs:

  • Parsed CMSSignedData object.
  • Extracted SignerInformation.
  • Verified ML-DSA signature.

Results:

  • Signature validated successfully.
  • AlgorithmIdentifier was recognised.
  • No compatibility issues observed.

This validates CMS interoperability in Java-based document processing environments.

8. What Was Actually Proven

This section is important — it elevates the blog above “it worked”.

We validated:

  • Correct OID usage
  • Correct ASN.1 encoding
  • Proper BIT STRING / OCTET STRING handling
  • PKIX path building compatibility
  • CRL processing compatibility
  • CMS parsing compatibility
  • OCSP response validation
  • Timestamp token validation
  • No proprietary extensions.
  • No ADSS-specific validation logic.
  • No structural deviations.

9. Observations from Testing

Architect-level commentary:

  • Signature verification time increases relative to ECDSA
  • Artefact size increases
  • Parsing logic unchanged
  • PKIX validation semantics unchanged
  • No compatibility regressions observed

Emphasise

The ecosystem impact is performance and size — not structure.

Conclusion

Interoperability is the primary barrier to PQC adoption.

The validation performed with OpenSSL 3.6.1 and Bouncy Castle 1.83 demonstrates that ADSS Server 8.4 generates ML-DSA-based artefacts that:

  • Conform to RFC 9881 and RFC 9882
  • Integrate into existing PKIX validation models
  • Validate using mainstream cryptographic toolchains
  • Require no proprietary modifications

In the next article in this series, I will examine performance benchmarking of ML-DSA-44 within ADSS Server, comparing classical and post-quantum operations under software-based workloads.