lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

deletion_authority.rs (13288B)


      1 use super::DeletionOperationExpectation;
      2 
      3 pub(super) const DELETION_CONFORMANCE_VECTOR_RELATIVE: &str =
      4     "contracts/conformance/vectors/deletion/verified_profile.v1.json";
      5 pub(super) const DELETION_SUPPRESSION_CONFORMANCE_VECTOR_RELATIVE: &str =
      6     "contracts/conformance/vectors/deletion/suppression.v1.json";
      7 
      8 pub(super) const REQUIRED_DELETION_PUBLIC_TYPES: [&str; 23] = [
      9     "Nip01EventWireParts",
     10     "EventEnvelope",
     11     "RadrootsSignatureVerifiedEvent",
     12     "Nip01Coordinate",
     13     "Nip01CoordinateParts",
     14     "Nip01CoordinateParseError",
     15     "Nip09DeletionError",
     16     "Nip09DeletionEventTarget",
     17     "Nip09DeletionAddressTarget",
     18     "AuthoredNip09DeletionRequest",
     19     "RadrootsNip09DeletionDiagnostic",
     20     "RadrootsInboundNip09DeletionEventTarget",
     21     "RadrootsInboundNip09DeletionAddressTarget",
     22     "RadrootsInboundNip09DeletionKindAdvisory",
     23     "RadrootsInboundNip09DeletionProjection",
     24     "RadrootsNip09DeletionProjectionError",
     25     "RadrootsAdmittedNip09DeletionRequestEvent",
     26     "RadrootsNip09DeletionAdmissionError",
     27     "RadrootsNip09SuppressionOutcome",
     28     "RadrootsNip09SuppressionReason",
     29     "RadrootsNip09EventReferenceEvidence",
     30     "RadrootsNip09AddressReferenceEvidence",
     31     "RadrootsNip09SuppressionDecision",
     32 ];
     33 
     34 pub(super) const DELETION_OPERATION_EXPECTATIONS: [DeletionOperationExpectation; 4] = [
     35     DeletionOperationExpectation {
     36         key: "social_deletion_request_build_authored_draft",
     37         id: "social.deletion_request.build_authored_draft",
     38         vector: DELETION_CONFORMANCE_VECTOR_RELATIVE,
     39         inputs: &["AuthoredNip09DeletionRequest"],
     40         outputs: &["Nip01EventWireParts"],
     41         error_class: "encode_error",
     42         signing: "none",
     43         rust_modules: &[
     44             "crates/event/src/deletion.rs",
     45             "crates/event_codec/src/deletion/authored.rs",
     46         ],
     47         rust_types: &[
     48             "radroots_event::post::deletion::AuthoredNip09DeletionRequest",
     49             "radroots_event::post::deletion::Nip09DeletionAddressTarget",
     50             "radroots_event::post::deletion::Nip09DeletionError",
     51             "radroots_event::post::deletion::Nip09DeletionEventTarget",
     52             "radroots_event::id::Nip01Coordinate",
     53             "radroots_event::wire::Nip01EventWireParts",
     54         ],
     55         case_kinds: &[
     56             "social.deletion_request.build_authored_draft.valid",
     57             "social.deletion_request.build_authored_draft.invalid",
     58         ],
     59     },
     60     DeletionOperationExpectation {
     61         key: "social_deletion_request_project_verified_event",
     62         id: "social.deletion_request.project_verified_event",
     63         vector: DELETION_CONFORMANCE_VECTOR_RELATIVE,
     64         inputs: &["RadrootsSignatureVerifiedEvent"],
     65         outputs: &["RadrootsInboundNip09DeletionProjection"],
     66         error_class: "parse_error",
     67         signing: "none",
     68         rust_modules: &[
     69             "crates/event_codec/src/deletion/inbound.rs",
     70             "crates/event_codec/src/verification.rs",
     71         ],
     72         rust_types: &[
     73             "radroots_event_codec::decode::deletion::RadrootsInboundNip09DeletionAddressTarget",
     74             "radroots_event_codec::decode::deletion::RadrootsInboundNip09DeletionEventTarget",
     75             "radroots_event_codec::decode::deletion::RadrootsInboundNip09DeletionKindAdvisory",
     76             "radroots_event_codec::decode::deletion::RadrootsInboundNip09DeletionProjection",
     77             "radroots_event_codec::decode::deletion::RadrootsNip09DeletionDiagnostic",
     78             "radroots_event_codec::decode::deletion::RadrootsNip09DeletionProjectionError",
     79             "radroots_event_codec::verify::RadrootsSignatureVerifiedEvent",
     80         ],
     81         case_kinds: &[
     82             "social.deletion_request.project_verified_event.valid",
     83             "social.deletion_request.project_verified_event.invalid",
     84         ],
     85     },
     86     DeletionOperationExpectation {
     87         key: "social_deletion_request_verify_and_admit_event",
     88         id: "social.deletion_request.verify_and_admit_event",
     89         vector: DELETION_CONFORMANCE_VECTOR_RELATIVE,
     90         inputs: &["EventEnvelope"],
     91         outputs: &["RadrootsAdmittedNip09DeletionRequestEvent"],
     92         error_class: "admission_error",
     93         signing: "nip01",
     94         rust_modules: &[
     95             "crates/event_codec/src/deletion/admission.rs",
     96             "crates/event_codec/src/deletion/inbound.rs",
     97             "crates/event_codec/src/verification.rs",
     98         ],
     99         rust_types: &[
    100             "radroots_event::envelope::EventEnvelope",
    101             "radroots_event_codec::admission::deletion::RadrootsAdmittedNip09DeletionRequestEvent",
    102             "radroots_event_codec::admission::deletion::RadrootsNip09DeletionAdmissionError",
    103             "radroots_event_codec::decode::deletion::RadrootsInboundNip09DeletionProjection",
    104             "radroots_event_codec::decode::deletion::RadrootsNip09DeletionProjectionError",
    105             "radroots_event_codec::verify::RadrootsSignatureVerifiedEvent",
    106         ],
    107         case_kinds: &[
    108             "social.deletion_request.verify_and_admit_event.valid",
    109             "social.deletion_request.verify_and_admit_event.invalid",
    110         ],
    111     },
    112     DeletionOperationExpectation {
    113         key: "social_deletion_request_evaluate_suppression",
    114         id: "social.deletion_request.evaluate_suppression",
    115         vector: DELETION_SUPPRESSION_CONFORMANCE_VECTOR_RELATIVE,
    116         inputs: &[
    117             "RadrootsSignatureVerifiedEvent",
    118             "RadrootsAdmittedNip09DeletionRequestEvent[]",
    119         ],
    120         outputs: &["RadrootsNip09SuppressionDecision"],
    121         error_class: "validation_error",
    122         signing: "none",
    123         rust_modules: &["crates/event_codec/src/deletion/evaluator.rs"],
    124         rust_types: &[
    125             "radroots_event_codec::admission::deletion::RadrootsAdmittedNip09DeletionRequestEvent",
    126             "radroots_event_codec::admission::deletion::RadrootsNip09AddressReferenceEvidence",
    127             "radroots_event_codec::admission::deletion::RadrootsNip09EventReferenceEvidence",
    128             "radroots_event_codec::admission::deletion::RadrootsNip09SuppressionDecision",
    129             "radroots_event_codec::admission::deletion::RadrootsNip09SuppressionOutcome",
    130             "radroots_event_codec::admission::deletion::RadrootsNip09SuppressionReason",
    131             "radroots_event_codec::verify::RadrootsSignatureVerifiedEvent",
    132         ],
    133         case_kinds: &["social.deletion_request.evaluate_suppression.valid"],
    134     },
    135 ];
    136 
    137 pub(super) const DELETION_CASE_KINDS: [&str; 7] = [
    138     "social.deletion_request.build_authored_draft.valid",
    139     "social.deletion_request.build_authored_draft.invalid",
    140     "social.deletion_request.project_verified_event.valid",
    141     "social.deletion_request.project_verified_event.invalid",
    142     "social.deletion_request.verify_and_admit_event.valid",
    143     "social.deletion_request.verify_and_admit_event.invalid",
    144     "social.deletion_request.evaluate_suppression.valid",
    145 ];
    146 
    147 pub(super) const DELETION_AUTHORED_VALID_IDS: [&str; 14] = [
    148     "nip09_authored_event_target_min_kind_empty_content",
    149     "nip09_authored_event_target_max_kind_unicode_content",
    150     "nip09_authored_coordinate_kind_0_empty_identifier",
    151     "nip09_authored_coordinate_kind_3_empty_identifier",
    152     "nip09_authored_coordinate_kind_10000_empty_identifier",
    153     "nip09_authored_coordinate_kind_19999_empty_identifier",
    154     "nip09_authored_coordinate_kind_30000_empty_identifier",
    155     "nip09_authored_coordinate_kind_39999_opaque_identifier",
    156     "nip09_authored_mixed_targets_canonical_order",
    157     "nip09_authored_content_bytes_exact",
    158     "nip09_authored_tag_count_exact",
    159     "nip09_authored_tag_element_bytes_exact",
    160     "nip09_authored_tag_bytes_exact",
    161     "nip09_authored_event_wire_bytes_exact",
    162 ];
    163 
    164 pub(super) const DELETION_AUTHORED_INVALID_IDS: [&str; 14] = [
    165     "nip09_authored_event_target_invalid",
    166     "nip09_authored_event_target_kind_out_of_range",
    167     "nip09_authored_address_target_invalid_format",
    168     "nip09_authored_address_target_invalid_pubkey",
    169     "nip09_authored_address_target_unsupported_kind",
    170     "nip09_authored_replaceable_identifier_nonempty",
    171     "nip09_authored_event_target_duplicate_normalized",
    172     "nip09_authored_address_target_duplicate_normalized",
    173     "nip09_authored_target_missing",
    174     "nip09_authored_content_bytes_overflow",
    175     "nip09_authored_tag_count_overflow_precedes_duplicate",
    176     "nip09_authored_tag_element_bytes_overflow",
    177     "nip09_authored_tag_bytes_overflow_precedes_duplicate",
    178     "nip09_authored_event_wire_bytes_overflow_precedes_duplicate",
    179 ];
    180 
    181 pub(super) const DELETION_PROJECT_VALID_IDS: [&str; 18] = [
    182     "nip09_project_signed_event_target_without_k",
    183     "nip09_project_signed_address_replaceable_boundaries",
    184     "nip09_project_signed_addressable_boundaries",
    185     "nip09_project_signed_mixed_raw_retention",
    186     "nip09_project_signed_duplicate_targets_first_provenance",
    187     "nip09_project_signed_canonical_effect_sorting",
    188     "nip09_project_signed_kind_advisory_diagnostics",
    189     "nip09_project_signed_event_target_conflict_unprovable",
    190     "nip09_project_signed_trailing_kind_and_unknown_tags",
    191     "nip09_project_signed_unicode_whitespace_control_content",
    192     "nip09_project_signed_content_bytes_exact",
    193     "nip09_project_signed_tag_count_exact",
    194     "nip09_project_signed_tag_element_count_exact",
    195     "nip09_project_signed_tag_element_bytes_exact_multibyte",
    196     "nip09_project_signed_tag_bytes_exact",
    197     "nip09_project_signed_event_wire_bytes_exact_max_created_at",
    198     "nip09_project_signed_event_wire_short_created_at_width",
    199     "nip09_project_signed_kind_advisory_min_max",
    200 ];
    201 
    202 pub(super) const DELETION_PROJECT_INVALID_IDS: [&str; 26] = [
    203     "nip09_project_signed_wrong_kind",
    204     "nip09_project_signed_content_bytes_overflow",
    205     "nip09_project_signed_tag_count_overflow",
    206     "nip09_project_signed_tag_element_count_overflow",
    207     "nip09_project_signed_tag_element_bytes_overflow",
    208     "nip09_project_signed_tag_bytes_overflow",
    209     "nip09_project_signed_event_wire_bytes_overflow",
    210     "nip09_project_signed_event_target_shape",
    211     "nip09_project_signed_event_target_empty",
    212     "nip09_project_signed_event_target_invalid",
    213     "nip09_project_signed_address_target_shape",
    214     "nip09_project_signed_address_target_missing_colon",
    215     "nip09_project_signed_address_target_invalid_pubkey",
    216     "nip09_project_signed_address_target_unsupported_kind",
    217     "nip09_project_signed_address_target_identifier_forbidden",
    218     "nip09_project_signed_target_missing",
    219     "nip09_project_signed_first_malformed_event_target",
    220     "nip09_project_signed_first_malformed_address_target",
    221     "nip09_project_signed_kind_precedes_content",
    222     "nip09_project_signed_content_precedes_tag_count",
    223     "nip09_project_signed_tag_count_precedes_element_count",
    224     "nip09_project_signed_element_count_precedes_element_size",
    225     "nip09_project_signed_element_size_precedes_tag_bytes",
    226     "nip09_project_signed_tag_bytes_precedes_wire",
    227     "nip09_project_signed_wire_precedes_target_parse",
    228     "nip09_project_signed_target_parse_precedes_missing_union",
    229 ];
    230 
    231 pub(super) const DELETION_ADMIT_VALID_IDS: [&str; 3] = [
    232     "nip09_admit_signed_event_target",
    233     "nip09_admit_signed_address_target",
    234     "nip09_admit_signed_mixed_tolerant_projection",
    235 ];
    236 
    237 pub(super) const DELETION_ADMIT_INVALID_IDS: [&str; 5] = [
    238     "nip09_admit_invalid_signature",
    239     "nip09_admit_id_mismatch",
    240     "nip09_admit_wrong_kind",
    241     "nip09_admit_invalid_target",
    242     "nip09_admit_target_missing",
    243 ];
    244 
    245 pub(super) const DELETION_SUPPRESSION_VALID_IDS: [&str; 32] = [
    246     "nip09_suppress_no_requests_visible",
    247     "nip09_suppress_same_author_event_reference",
    248     "nip09_suppress_same_author_nonmatching_reference",
    249     "nip09_suppress_wrong_author_exact_event_reference",
    250     "nip09_suppress_event_reference_predates_target",
    251     "nip09_suppress_deletion_request_immune_event_reference",
    252     "nip09_suppress_deletion_request_immune_mixed_references",
    253     "nip09_suppress_address_cutoff_before_target",
    254     "nip09_suppress_address_cutoff_equal_target",
    255     "nip09_suppress_address_cutoff_after_target",
    256     "nip09_suppress_address_wrong_kind",
    257     "nip09_suppress_address_wrong_identifier",
    258     "nip09_suppress_address_wrong_pubkey",
    259     "nip09_suppress_wrong_author_address_reference",
    260     "nip09_suppress_replaceable_kind_0",
    261     "nip09_suppress_replaceable_kind_3",
    262     "nip09_suppress_replaceable_kind_10000",
    263     "nip09_suppress_replaceable_kind_19999",
    264     "nip09_suppress_addressable_kind_30000_empty_identifier",
    265     "nip09_suppress_addressable_kind_39999_opaque_identifier",
    266     "nip09_suppress_combined_event_and_address_references",
    267     "nip09_suppress_event_reference_with_stale_address",
    268     "nip09_suppress_kind_advisory_diagnostics_ignored",
    269     "nip09_suppress_duplicate_raw_targets_deduplicated",
    270     "nip09_suppress_max_address_cutoff_forward_order",
    271     "nip09_suppress_max_address_cutoff_reverse_order",
    272     "nip09_suppress_later_revision_survives_address_cutoff",
    273     "nip09_suppress_equal_max_cutoff_uses_lowest_request_id",
    274     "nip09_suppress_multiple_event_references_use_lowest_request_id",
    275     "nip09_suppress_repeated_request_is_idempotent",
    276     "nip09_suppress_unauthorized_event_plus_stale_authorized_address",
    277     "nip09_suppress_exact_event_deletes_later_replacement",
    278 ];