REV-32: GPP Section-Header parsers for MD/IN/KY/RI#5
Closed
revcontent-paperclip[bot] wants to merge 1 commit into
Closed
REV-32: GPP Section-Header parsers for MD/IN/KY/RI#5revcontent-paperclip[bot] wants to merge 1 commit into
revcontent-paperclip[bot] wants to merge 1 commit into
Conversation
Implement IAB GPP US-State parsers for Maryland (24), Indiana (25), Kentucky (26), and Rhode Island (27). These sections differ from the older flat US-State sections in their core field set, but use the same segment layout: section value = core segment (segment 0) + optional subsection (segment 1), split on ".". The spec's "Section Header" (SectionID/Version/SubSections) is part of the client-side API representation and is NOT serialized into the encoded payload. - Combined MspaMode Int(2) field (0=N/A, 1=Opt-Out Option, 2=Service Provider) replacing the separate OptOutOption/ServiceProvider fields. Core ordering: MspaVersion, MspaCoveredTransaction, MspaMode first. - MD core omits SensitiveDataProcessing + KnownChildSensitiveDataConsents; MD subsection 1 is the legacy GPC subsection (carries SubsectionType). - IN/KY/RI core adds a single KnownChildSensitiveDataConsents Int(2); subsection 1 is "Sensitive Data Consents" (N-Bitfield(2,8), no type prefix). - Section IDs 24-27 added; dispatch wired through NewMspa / MapGppSectionToParser. Wire format + field layout verified against the canonical IAB reference encoder/decoder and test vectors in iabgpp-es PR #106 (UsMd "BQAA.QA" / "BVVU.YA"; UsIn/UsKy/UsRi "BQAA.AAA" / "BVVV.kkk"). Tests decode those canonical strings per state, plus an end-to-end ParseGppConsent routing test. Build + full suite green. Co-Authored-By: Paperclip <[email protected]>
revcontent-paperclip
Bot
force-pushed
the
REV-32-iabconsent-md-in-ky-ri-parsers
branch
from
June 15, 2026 20:45
d70cb7e to
b07432c
Compare
Author
Author
|
Superseded by #6, which consolidates this branch with its sibling into a single conflict-free, test-verified PR for REVA-165. (These two branches both declared |
revcontent-paperclip Bot
added a commit
that referenced
this pull request
Jun 17, 2026
Add GPP parsers for the newer US-State sections Minnesota (23), Maryland (24), Indiana (25), Kentucky (26), Rhode Island (27), reusing MspaParsedConsent + enums; confirm IAB TCF v2.3 (TCFPolicyVersion 5 -> MinorVersion 3) is handled by the existing v2 parser. Flat-section ParseConsent() envelopes consolidated into parseMspaSection(); fixture-style tests added for the new states, pinned to canonical iabgpp-es vectors. Supersedes #4 and #5. Co-Authored-By: Paperclip <[email protected]>
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds IAB GPP US-State parsers for Maryland (24), Indiana (25), Kentucky (26), Rhode Island (27) in
iabconsent. Split out of REV-28 (Minnesota + TCF 2.3, PR #4).Design
These sections differ from the older flat US-State sections in their core field set, but use the same segment layout: section value = core segment (segment 0) + optional subsection (segment 1), split on
.. The spec's "Section Header" (SectionID/Version/SubSections) is part of the GPP client-side API representation and is not serialized into the encoded consent string.MspaModeInt(2) (0=N/A, 1=Opt-Out Option, 2=Service Provider) replaces the separateMspaOptOutOptionMode/MspaServiceProviderMode. Core ordering:MspaVersion,MspaCoveredTransaction,MspaModefirst.SensitiveDataProcessingandKnownChildSensitiveDataConsents; subsection 1 is the legacy GPC subsection (carries aSubsectionTypeprefix).KnownChildSensitiveDataConsentsInt(2); subsection 1 is Sensitive Data Consents =SensitiveDataProcessingN-Bitfield(2,8), no type prefix.NewMspa/MapGppSectionToParser. New code isolated inmspa_us_state_v2.go; onlyMspaModeis added to the shared struct.Validation
Wire format + field layout verified against the canonical IAB reference encoder/decoder and test vectors in
iabgpp-esPR #106:BQAA(default, GPC excluded),BQAA.QA(default),BVVU.YA(all fields set, GPC=true)BQAA(default, sensitive excluded),BQAA.AAA(default),BVVV.kkk(all fields set, sensitive=[2,1,0,2,1,0,2,1])Tests decode those canonical strings per state and assert the parsed values, plus an end-to-end
ParseGppConsentrouting test.go build+ full suite green (57 checks).Notes
iabgpp-esPR #106 is still open (not yet merged), but it is the canonical IAB reference implementation and provides the conformance vectors used here.UsMinnesotaSID = 23so they don't collide with the sibling REV-28 / PR REV-28: Add Minnesota (usmn) GPP parser and IAB TCF v2.3 support #4 branch.Tracking: REV-32.