add dockerfile
This commit is contained in:
@@ -20,9 +20,13 @@ fn sample_ski() -> [u8; 20] {
|
||||
]
|
||||
}
|
||||
|
||||
fn sample_ski_b64() -> String {
|
||||
STANDARD_NO_PAD.encode(sample_ski())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parses_rfc8416_v1_slurm() {
|
||||
let ski_hex = hex::encode(sample_ski());
|
||||
let ski_b64 = sample_ski_b64();
|
||||
let router_public_key = STANDARD_NO_PAD.encode(sample_spki());
|
||||
let json = format!(
|
||||
r#"{{
|
||||
@@ -32,7 +36,7 @@ fn parses_rfc8416_v1_slurm() {
|
||||
{{ "prefix": "192.0.2.0/24", "asn": 64496, "comment": "drop roa" }}
|
||||
],
|
||||
"bgpsecFilters": [
|
||||
{{ "asn": 64497, "SKI": "{ski_hex}" }}
|
||||
{{ "asn": 64497, "SKI": "{ski_b64}" }}
|
||||
]
|
||||
}},
|
||||
"locallyAddedAssertions": {{
|
||||
@@ -40,7 +44,7 @@ fn parses_rfc8416_v1_slurm() {
|
||||
{{ "prefix": "198.51.100.0/24", "asn": 64500, "maxPrefixLength": 24 }}
|
||||
],
|
||||
"bgpsecAssertions": [
|
||||
{{ "asn": 64501, "SKI": "{ski_hex}", "routerPublicKey": "{router_public_key}" }}
|
||||
{{ "asn": 64501, "SKI": "{ski_b64}", "routerPublicKey": "{router_public_key}" }}
|
||||
]
|
||||
}}
|
||||
}}"#
|
||||
@@ -145,7 +149,7 @@ fn applies_filters_before_assertions_and_excludes_duplicates() {
|
||||
let ski = Ski::from_bytes(sample_ski());
|
||||
let spki = sample_spki();
|
||||
let spki_b64 = STANDARD_NO_PAD.encode(&spki);
|
||||
let ski_hex = hex::encode(sample_ski());
|
||||
let ski_b64 = sample_ski_b64();
|
||||
let json = format!(
|
||||
r#"{{
|
||||
"slurmVersion": 2,
|
||||
@@ -154,7 +158,7 @@ fn applies_filters_before_assertions_and_excludes_duplicates() {
|
||||
{{ "prefix": "192.0.2.0/24", "asn": 64496 }}
|
||||
],
|
||||
"bgpsecFilters": [
|
||||
{{ "SKI": "{ski_hex}" }}
|
||||
{{ "SKI": "{ski_b64}" }}
|
||||
],
|
||||
"aspaFilters": [
|
||||
{{ "customerAsn": 64496 }}
|
||||
@@ -166,7 +170,7 @@ fn applies_filters_before_assertions_and_excludes_duplicates() {
|
||||
{{ "prefix": "198.51.100.0/24", "asn": 64500, "maxPrefixLength": 24 }}
|
||||
],
|
||||
"bgpsecAssertions": [
|
||||
{{ "asn": 64501, "SKI": "{ski_hex}", "routerPublicKey": "{spki_b64}" }}
|
||||
{{ "asn": 64501, "SKI": "{ski_b64}", "routerPublicKey": "{spki_b64}" }}
|
||||
],
|
||||
"aspaAssertions": [
|
||||
{{ "customerAsn": 64510, "providerAsns": [64511, 64512] }}
|
||||
@@ -216,6 +220,55 @@ fn applies_filters_before_assertions_and_excludes_duplicates() {
|
||||
)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rejects_hex_encoded_ski_and_aspa_customer_in_providers() {
|
||||
let ski_hex = hex::encode(sample_ski());
|
||||
let router_public_key = STANDARD_NO_PAD.encode(sample_spki());
|
||||
let invalid_ski = format!(
|
||||
r#"{{
|
||||
"slurmVersion": 1,
|
||||
"validationOutputFilters": {{
|
||||
"prefixFilters": [],
|
||||
"bgpsecFilters": [
|
||||
{{ "SKI": "{ski_hex}" }}
|
||||
]
|
||||
}},
|
||||
"locallyAddedAssertions": {{
|
||||
"prefixAssertions": [],
|
||||
"bgpsecAssertions": [
|
||||
{{ "asn": 64501, "SKI": "{ski_hex}", "routerPublicKey": "{router_public_key}" }}
|
||||
]
|
||||
}}
|
||||
}}"#
|
||||
);
|
||||
let ski_err = SlurmFile::from_slice(invalid_ski.as_bytes()).unwrap_err();
|
||||
let ski_err_text = ski_err.to_string();
|
||||
assert!(
|
||||
ski_err_text.contains("invalid SKI base64")
|
||||
|| ski_err_text.contains("SKI must be exactly 20 bytes")
|
||||
);
|
||||
|
||||
let invalid_aspa = r#"{
|
||||
"slurmVersion": 2,
|
||||
"validationOutputFilters": {
|
||||
"prefixFilters": [],
|
||||
"bgpsecFilters": [],
|
||||
"aspaFilters": []
|
||||
},
|
||||
"locallyAddedAssertions": {
|
||||
"prefixAssertions": [],
|
||||
"bgpsecAssertions": [],
|
||||
"aspaAssertions": [
|
||||
{ "customerAsn": 64500, "providerAsns": [64500, 64501] }
|
||||
]
|
||||
}
|
||||
}"#;
|
||||
let aspa_err = SlurmFile::from_slice(invalid_aspa.as_bytes()).unwrap_err();
|
||||
assert!(aspa_err
|
||||
.to_string()
|
||||
.contains("providerAsns must not contain customerAsn"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn merges_multiple_slurm_files_without_conflict() {
|
||||
let a = r#"{
|
||||
|
||||
Reference in New Issue
Block a user