Skip to content

Commit b101c87

Browse files
committed
#35 - Added editorconfig to enforce using Western European Windows file encoding.
#35 - Added support for encrypted assertions.
1 parent dfa211c commit b101c87

File tree

7 files changed

+806
-451
lines changed

7 files changed

+806
-451
lines changed

.editorconfig

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
root = true
2+
3+
[*]
4+
insert_final_newline = true
5+
6+
[*.cs]
7+
indent_style = tab
8+
indent_size = 4
9+
charset = Windows-1252 # Western European Windows
10+
csharp_indent_labels = one_less_than_current
11+
csharp_using_directive_placement = outside_namespace:silent
12+
csharp_prefer_simple_using_statement = true:suggestion
13+
csharp_prefer_braces = true:silent
14+
csharp_style_namespace_declarations = block_scoped:silent
15+
csharp_style_prefer_method_group_conversion = true:silent
16+
csharp_style_prefer_top_level_statements = true:silent
17+
csharp_style_prefer_primary_constructors = true:suggestion
18+
csharp_style_expression_bodied_methods = false:silent
19+
csharp_style_expression_bodied_constructors = false:silent
20+
csharp_style_expression_bodied_operators = false:silent
21+
csharp_style_expression_bodied_properties = true:silent
22+
csharp_style_expression_bodied_indexers = true:silent
23+
csharp_style_expression_bodied_accessors = true:silent
24+
csharp_style_expression_bodied_lambdas = true:silent
25+
csharp_style_expression_bodied_local_functions = false:silent
26+
csharp_style_throw_expression = true:suggestion
27+
csharp_style_prefer_null_check_over_type_check = true:suggestion
28+
csharp_prefer_simple_default_expression = true:suggestion
29+
csharp_style_prefer_local_over_anonymous_function = true:suggestion
30+
csharp_style_prefer_index_operator = true:suggestion
31+
32+
[*.{cs,vb}]
33+
#### Naming styles ####
34+
35+
# Naming rules
36+
37+
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
38+
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
39+
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
40+
41+
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
42+
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
43+
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
44+
45+
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
46+
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
47+
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
48+
49+
# Symbol specifications
50+
51+
dotnet_naming_symbols.interface.applicable_kinds = interface
52+
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
53+
dotnet_naming_symbols.interface.required_modifiers =
54+
55+
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
56+
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
57+
dotnet_naming_symbols.types.required_modifiers =
58+
59+
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
60+
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
61+
dotnet_naming_symbols.non_field_members.required_modifiers =
62+
63+
# Naming styles
64+
65+
dotnet_naming_style.begins_with_i.required_prefix = I
66+
dotnet_naming_style.begins_with_i.required_suffix =
67+
dotnet_naming_style.begins_with_i.word_separator =
68+
dotnet_naming_style.begins_with_i.capitalization = pascal_case
69+
70+
dotnet_naming_style.pascal_case.required_prefix =
71+
dotnet_naming_style.pascal_case.required_suffix =
72+
dotnet_naming_style.pascal_case.word_separator =
73+
dotnet_naming_style.pascal_case.capitalization = pascal_case
74+
75+
dotnet_naming_style.pascal_case.required_prefix =
76+
dotnet_naming_style.pascal_case.required_suffix =
77+
dotnet_naming_style.pascal_case.word_separator =
78+
dotnet_naming_style.pascal_case.capitalization = pascal_case
79+
dotnet_style_operator_placement_when_wrapping = beginning_of_line
80+
tab_width = 4
81+
indent_size = 4
82+
end_of_line = crlf
83+
dotnet_style_coalesce_expression = true:suggestion
84+
dotnet_style_null_propagation = true:suggestion
85+
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
86+
dotnet_style_prefer_auto_properties = true:silent
87+
dotnet_style_object_initializer = true:suggestion
88+
dotnet_style_collection_initializer = true:suggestion
89+
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
90+
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
91+
dotnet_style_prefer_conditional_expression_over_return = true:silent
92+
dotnet_style_explicit_tuple_names = true:suggestion
93+
dotnet_style_prefer_inferred_tuple_names = true:suggestion
94+
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
95+
dotnet_style_prefer_compound_assignment = true:suggestion
96+
dotnet_style_prefer_simplified_interpolation = true:suggestion
97+
dotnet_style_namespace_match_folder = true:suggestion
98+
indent_style = tab

AspNetSaml.Tests/AspNetSaml.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<PackageReference Include="MSTest.TestAdapter" Version="2.2.8" />
1414
<PackageReference Include="MSTest.TestFramework" Version="2.2.8" />
1515
<PackageReference Include="coverlet.collector" Version="3.1.2" />
16+
<PackageReference Include="Shouldly" Version="4.2.1" />
1617
</ItemGroup>
1718

1819
<ItemGroup>

AspNetSaml.Tests/Constants.cs

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
using System.Security.Cryptography.X509Certificates;
2+
3+
namespace AspNetSaml.Tests;
4+
5+
public static class Constants
6+
{
7+
/// <summary>
8+
/// Test certificate values.
9+
/// </summary>
10+
/// <remarks>
11+
/// Self-signed certificates generated by https://www.samltool.com/self_signed_certs.php.
12+
/// </remarks>
13+
public static class Certificates
14+
{
15+
public const string Country = "US";
16+
public const string State = "New York";
17+
public const string Locality = "New York City";
18+
public const string Organization = "AspNetSaml";
19+
public const string Domain = "aspnetsaml.jitbit.local";
20+
public const string DigestAlgorithm = "SHA512";
21+
22+
/// <summary>
23+
/// Private key raw text.
24+
/// </summary>
25+
public const string PrivateKey = @"-----BEGIN PRIVATE KEY-----
26+
MIIEwgIBADANBgkqhkiG9w0BAQEFAASCBKwwggSoAgEAAoIBAgDb+eVLX3/pcYbX
27+
gustW1YSSTIe737KuJqL9CxibjL2jaEXvoM0zllwYdyvWdrnoJ8tABoKHPtSGRJv
28+
6fH7+cq31zLj50R6Wz4uzdZr37opBdk5ea0YHeaOOmNu1ikfFNMaT0VXuj9kqod8
29+
V/N0Qv77eDaixOivV2nnXGxrgYh/m9dKrr5bdTpZ46FsSMOpgYpI6LXWfI7dNBFZ
30+
uyVKClGTtcbJmONo8NEPR+ELgNltgLacvMHzZECavsqge42RDmfcBCFOr3AdiLSR
31+
85DANZxZ5sRCMaZHEz+5DhL/x+MG5UVF9h7DlvgJMz1Ygvd1EAvbhR0ifQQDyQW6
32+
XJtH3bFiswIDAQABAoIBAgDRvSBCUIkudP9DhuFjer3Da6TtWB8FfSRmIuca5sWS
33+
zZF2iUCi3cjrXXPEgaE1zrFWf81ULTP3oE4zBNWkEhSWWwp7wGtLWqociEhUzJm8
34+
OYZXxcsjvoawv71E1c+ZggqSAFk2fy+odOv/xAAtrx9dd85oPeU6IdepMDdz/aq/
35+
OSSeRqTgIRSZ95mQYPx1wE5t/FCQqY3KSpkagO46SIzIGUwuLDTBhQTJTyGesME8
36+
NvZ4HR1l9/6uFyESru31bEHgL0jY0mFM7zf+d/pkKaerXQOieW+GFrH5D697sR3E
37+
QMou6OzAtdMIAmwX7W6NHw55dlITHbT27HD1riEWRol+qQKBgQ/259ywfKhX5a1l
38+
4kVQ/uVshSQX4DxdHmEFC9WXudH0OeEXrJKyufxhCqbIl3SSXwzOCO4wK+/qwtgP
39+
Yl7YbkOQQcTibrH9DMO7Zyb01R1HdJYYA68L2EOLRcJKq7+RVGocrzopRxlRU2gJ
40+
n8tgKos5jRwur/fadLKGe10MRPKipQKBgQ3Hc08oO39kOK3umoUm1TYRiuSKw7Uh
41+
91Vml44FZTp0Aw84AeTJEZ4pl3T6apaoTh2ONAxihCpuQUtVhJEKREj4GdD/lDDi
42+
+dmA8eOGDMDY0R/4pOwFLgOhy2CibQIsxljPD0if9IDIP2NGYl+WziCjIQcDjvBb
43+
jREfwGyWRyYodwKBgQkcVjwq+Ck2aFvprhTy4VTa9qyfd5fbaI/jylouCZzZLQLZ
44+
eOILX3q5gtOl3FFpixcKqiwMj7aOmn2lYfVQvLSQKgiLVLL9AADf/UFNLiZUdiOG
45+
Nuv57YS2gawc4yEjdjJMhm/ByNKZB+lyvJ/bFMx5np87wa7IHBsaBmMWsm5qBQKB
46+
gQsjsU7PIbqNVV0Xxofaqwe5CuZUYH9w5DmAZQmFxx6IZ2jISI+jFcEdsrn5MG53
47+
xh8StXVFt79tvw+eJTv0Ztvu50AVPsJ+3KpAGk1sM6c8IWSNaRb94QNCq96FsUbO
48+
19M4Igz+c3YhbU1eu2y3yBCOkMbQ05/xA4xSdQfUPdTVZQKBgQls0hLLjqJf7ag7
49+
rbw2gP9e72jwXdO+FyChohY5TNv3081azT/pHdNaAQset1dCBtibhtwjO6HMwXEB
50+
FB1gREpjQSw0rs9n/MLm0ASWVftfn84QX0Uanpz7/Ma18x7TBUX21kZusWCtVjUG
51+
XY1SLPWC2KRvi85oYPvpNFI1NKUD1g==
52+
-----END PRIVATE KEY-----";
53+
54+
/// <summary>
55+
/// Certificate raw text.
56+
/// </summary>
57+
public const string PublicCertificate = @"-----BEGIN CERTIFICATE-----
58+
MIIDzzCCAragAwIBAgIBADANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UEBhMCdXMx
59+
ETAPBgNVBAgMCE5ldyBZb3JrMQ8wDQYDVQQKDAZKaXRiaXQxIDAeBgNVBAMMF2Fz
60+
cG5ldHNhbWwuaml0Yml0LmxvY2FsMRYwFAYDVQQHDA1OZXcgWW9yayBDaXR5MRMw
61+
EQYDVQQLDApBc3BOZXRTYW1sMB4XDTIzMDgyNjE1MTkwMFoXDTMzMDgyMzE1MTkw
62+
MFowgYAxCzAJBgNVBAYTAnVzMREwDwYDVQQIDAhOZXcgWW9yazEPMA0GA1UECgwG
63+
Sml0Yml0MSAwHgYDVQQDDBdhc3BuZXRzYW1sLmppdGJpdC5sb2NhbDEWMBQGA1UE
64+
BwwNTmV3IFlvcmsgQ2l0eTETMBEGA1UECwwKQXNwTmV0U2FtbDCCASMwDQYJKoZI
65+
hvcNAQEBBQADggEQADCCAQsCggECANv55Utff+lxhteC6y1bVhJJMh7vfsq4mov0
66+
LGJuMvaNoRe+gzTOWXBh3K9Z2uegny0AGgoc+1IZEm/p8fv5yrfXMuPnRHpbPi7N
67+
1mvfuikF2Tl5rRgd5o46Y27WKR8U0xpPRVe6P2Sqh3xX83RC/vt4NqLE6K9Xaedc
68+
bGuBiH+b10quvlt1OlnjoWxIw6mBikjotdZ8jt00EVm7JUoKUZO1xsmY42jw0Q9H
69+
4QuA2W2Atpy8wfNkQJq+yqB7jZEOZ9wEIU6vcB2ItJHzkMA1nFnmxEIxpkcTP7kO
70+
Ev/H4wblRUX2HsOW+AkzPViC93UQC9uFHSJ9BAPJBbpcm0fdsWKzAgMBAAGjUDBO
71+
MB0GA1UdDgQWBBSyDqBxnYWoWDEO/KM7qBRzpmrMfTAfBgNVHSMEGDAWgBSyDqBx
72+
nYWoWDEO/KM7qBRzpmrMfTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBDQUAA4IB
73+
AgBXHSnFy9CiwEWMf1/AECqJxUqYZAl/e4Hso5gN8z/VVFlElHh5/gvDRVZMiIel
74+
GBTfihwE7C2ftbD5u9RDAsaktkEseL/QDDYqJScwtosYxMgZLaINdXilkyi9xc72
75+
6akVo+xx/qCnZYAf4Cs8k+WZXvn6rjUmjgrzFHCAlPvXp2PCyCHS2PFcAmkKHr2V
76+
EcEnHvJi/ujia9gMF8dlbOw+Brbl8KcQ8IVinHB3/C8Op4lynoMFdrv6boDFHEyh
77+
p3Jm5xUMH1/ow3qJ+Ffv2chCD0R6RPUXbhNUixZPuPRECbW0TDp+GgDtKCNMuB0m
78+
ugfn/Qef81oPEImyoMWd0ReQvA==
79+
-----END CERTIFICATE-----";
80+
81+
/// <summary>
82+
/// CSR raw text.
83+
/// </summary>
84+
public const string CertificateSigningRequest = @"-----BEGIN CERTIFICATE REQUEST-----
85+
MIICyDCCAa8CAQAwgYAxCzAJBgNVBAYTAnVzMREwDwYDVQQIDAhOZXcgWW9yazEP
86+
MA0GA1UECgwGSml0Yml0MSAwHgYDVQQDDBdhc3BuZXRzYW1sLmppdGJpdC5sb2Nh
87+
bDEWMBQGA1UEBwwNTmV3IFlvcmsgQ2l0eTETMBEGA1UECwwKQXNwTmV0U2FtbDCC
88+
ASMwDQYJKoZIhvcNAQEBBQADggEQADCCAQsCggECANv55Utff+lxhteC6y1bVhJJ
89+
Mh7vfsq4mov0LGJuMvaNoRe+gzTOWXBh3K9Z2uegny0AGgoc+1IZEm/p8fv5yrfX
90+
MuPnRHpbPi7N1mvfuikF2Tl5rRgd5o46Y27WKR8U0xpPRVe6P2Sqh3xX83RC/vt4
91+
NqLE6K9XaedcbGuBiH+b10quvlt1OlnjoWxIw6mBikjotdZ8jt00EVm7JUoKUZO1
92+
xsmY42jw0Q9H4QuA2W2Atpy8wfNkQJq+yqB7jZEOZ9wEIU6vcB2ItJHzkMA1nFnm
93+
xEIxpkcTP7kOEv/H4wblRUX2HsOW+AkzPViC93UQC9uFHSJ9BAPJBbpcm0fdsWKz
94+
AgMBAAGgADANBgkqhkiG9w0BAQ0FAAOCAQIAcs7QprOVI+4Q8c6A/xlEqHzYJte3
95+
mdkCDmZsuO8FH6oRY0fybPv4NAziTGnWg7s7sabAMvnE79zOhPT6/LqSxvofMj0t
96+
lbO62COVMT1NUGYCnb7346oouvscIZusey8olEIf8EwiQTmCm7ait7MrnA9Mi0Tc
97+
VExbYdfBZZcOFMZJmG4bQz+G66SEdBemlyGrdMxDR9+pwgBOG49wDOfyIk6rvkG3
98+
A3ZafNtw5AXMLEWegWs6AEH1tkRMrJgIX9jQwP7mu3RocRzkrbSz2juzlLgyLDPn
99+
t9RbkNHiT5rwOlSe3b86oonejHDEj4RDVNr89/6LJ3KxAsL5bUGCJaQbhWU=
100+
-----END CERTIFICATE REQUEST-----";
101+
102+
/// <summary>
103+
/// Test certificate instance.
104+
/// </summary>
105+
public static X509Certificate2 Certificate => new Lazy<X509Certificate2>(() => X509Certificate2.CreateFromPem(PublicCertificate, PrivateKey)).Value;
106+
}
107+
}

0 commit comments

Comments
 (0)