3.1.7.1 Record Publication

When the local node attempts to publish a record, either at one requested by a higher-layer application or one of the reserved record types (Security Properties record and Membership record) generated by the Grouping Security protocol implementation itself, P2P Graphing validates the record's conformance to the PEER_RECORD data structure format, as specified in [MS-PPGRH] section 3.1.7.27, and then passes it to P2P Grouping to do further validation and signing. If any part of the validation fails, a nonzero value MUST be returned to P2P Graphing to indicate the error.

For records that are not Security Properties records, P2P Grouping MUST validate the following prior to record publication:

  • The record creator MUST be a valid Secure Peer Name as defined in [MS-PNRP] section 1.3.1.1.

  • The record modifier (if present) MUST be a valid Secure Peer Name as defined in [MS-PNRP] section 1.3.1.1.

  • If the record modifier is present, it MUST match the local Peer Name. If there is no record modifier present, the record creator MUST match the local Peer Name. If the record creator is different from the record modifier, the local GMC MUST contain the Admin role.

  • The record lifetime MUST be within the range of the local GMC's lifetime. Specifically, the record's Last Modified Time MUST be no earlier than the time specified by the local GMC's NotBefore field, and the record's Expiration Time MUST be no later than the time specified in the local GMC's NotAfter field.

If the record being published is a Security Properties record, steps 3-4 of the validation are slightly different since the record is published using the Group Peer Name:

  • The record creator MUST be the same as the Group Peer Name. If present, the record modifier MUST be the same as the Group Peer Name.

  • The record lifetime MUST be within the range of the GRC's lifetime. Specifically, the record's Last Modified Time MUST be no earlier than the time specified by the GRC's NotBefore field, and the record's Expiration Time MUST be no later than the time specified by the local GRC's NotAfter field.

  • The local node MUST have the GRC's private key (meaning that the local node MUST be the group creator).

If the record is a Membership record or Security Properties record, it MUST undergo further validation as specified in section 3.1.7.3.

Once validated, the record MUST be signed (as specified in section 2.2.4) and the signature added to the record's security payload. Then:

  • If the record is a Membership record, the local node MUST publish the record through P2P Graphing, as specified in [MS-PPGRH] section 3.1.4.3.

  • Otherwise, if the local GMC has not been published in the group:

    • The local node MUST publish a Membership record as described in this section.

    • Publish the record just validated and signed through P2P Graphing as specified in [MS-PPGRH] section 3.1.4.3.

  • Otherwise, the record just validated and signed MUST be published through P2P Graphing as specified in [MS-PPGRH] section 3.1.4.3.