-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathPemHeader.cs
More file actions
98 lines (90 loc) · 5.23 KB
/
PemHeader.cs
File metadata and controls
98 lines (90 loc) · 5.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using System;
using System.Collections.Generic;
namespace SysadminsLV.Asn1Parser;
class PemHeader {
public PemHeader(String header, EncodingType encoding) {
Header = header;
Encoding = encoding;
}
public String Header { get; }
public EncodingType Encoding { get; }
public String GetHeader() {
return GetHeaderString(Header);
}
public String GetFooter() {
return GetFooterString(Header);
}
public static readonly PemHeader PEM_HEADER_CERT = new("CERTIFICATE", EncodingType.PemCert);
public static readonly PemHeader PEM_HEADER_CERT_CAPI = new("CERTIFICATE", EncodingType.Base64Header);
public static readonly PemHeader PEM_HEADER_CERT_TRUSTED = new("TRUSTED CERTIFICATE", EncodingType.PemTrustedCert);
public static readonly PemHeader PEM_HEADER_REQ_NEW = new("NEW CERTIFICATE REQUEST", EncodingType.PemNewReq);
public static readonly PemHeader PEM_HEADER_REQ_NEW_CAPI = new("NEW CERTIFICATE REQUEST", EncodingType.Base64RequestHeader);
public static readonly PemHeader PEM_HEADER_REQ = new("CERTIFICATE REQUEST", EncodingType.PemReq);
public static readonly PemHeader PEM_HEADER_CRL = new("X509 CRL", EncodingType.Base64CrlHeader);
public static readonly PemHeader PEM_HEADER_EVP_PKEY = new("ANY PRIVATE KEY", EncodingType.PemEvpPrivateKey);
public static readonly PemHeader PEM_HEADER_PUBLIC = new("PUBLIC KEY", EncodingType.PemPublicKey);
public static readonly PemHeader PEM_HEADER_RSA = new("RSA PRIVATE KEY", EncodingType.PemRsaPrivateKey);
public static readonly PemHeader PEM_HEADER_RSA_PUBLIC = new("RSA PUBLIC KEY", EncodingType.PemRsaPublicKey);
public static readonly PemHeader PEM_HEADER_DSA = new("DSA PRIVATE KEY", EncodingType.PemDsaPrivateKey);
public static readonly PemHeader PEM_HEADER_DSA_PUBLIC = new("DSA PUBLIC KEY", EncodingType.PemDsaPublicKey);
public static readonly PemHeader PEM_HEADER_PKCS7 = new("PKCS7", EncodingType.PemPkcs7);
public static readonly PemHeader PEM_HEADER_PKCS7_SIGNED = new("PKCS #7 SIGNED DATA", EncodingType.PemPkcs7Signed);
public static readonly PemHeader PEM_HEADER_PKCS8 = new("ENCRYPTED PRIVATE KEY", EncodingType.PemPkcs8Encrypted);
public static readonly PemHeader PEM_HEADER_PKCS8_INF = new("PRIVATE KEY", EncodingType.PemPkcs8Inf);
public static readonly PemHeader PEM_HEADER_DH_PARAMS = new("DH PARAMETERS", EncodingType.PemDHParams);
public static readonly PemHeader PEM_HEADER_DHX_PARAMS = new("X9.42 DH PARAMETERS", EncodingType.PemDHXParams);
public static readonly PemHeader PEM_HEADER_SSL_SESSION = new("SSL SESSION PARAMETERS", EncodingType.PemSSLSessionParams);
public static readonly PemHeader PEM_HEADER_DSA_PARAMS = new("DSA PARAMETERS", EncodingType.PemDsaParams);
public static readonly PemHeader PEM_HEADER_ECDSA_PUBLIC = new("ECDSA PUBLIC KEY", EncodingType.PemECDsaPublicKey);
public static readonly PemHeader PEM_HEADER_EC_PARAMS = new("EC PARAMETERS", EncodingType.PemECParams);
public static readonly PemHeader PEM_HEADER_EC_PRIVATE_KEY = new("EC PRIVATE KEY", EncodingType.PemECPrivateKey);
public static readonly PemHeader PEM_HEADER_PARAMS = new("PARAMETERS", EncodingType.PemParams);
public static readonly PemHeader PEM_HEADER_CMS = new("CMS", EncodingType.PemCms);
public static String GetHeaderString(String headerName) {
return $"-----BEGIN {headerName}-----";
}
public static String GetFooterString(String headerName) {
return $"-----END {headerName}-----";
}
public static Boolean ContainsEncoding(EncodingType encoding) {
return _lookupTable.ContainsKey(encoding);
}
public static PemHeader GetHeader(EncodingType encoding) {
return _lookupTable[encoding];
}
public static IEnumerable<PemHeader> GetPemHeaders() {
return _lookupTable.Values;
}
static readonly Dictionary<EncodingType, PemHeader> _lookupTable = new();
static PemHeader() {
addToLookup(PEM_HEADER_CERT);
addToLookup(PEM_HEADER_CERT_CAPI);
addToLookup(PEM_HEADER_CERT_TRUSTED);
addToLookup(PEM_HEADER_REQ_NEW);
addToLookup(PEM_HEADER_REQ_NEW_CAPI);
addToLookup(PEM_HEADER_REQ);
addToLookup(PEM_HEADER_CRL);
addToLookup(PEM_HEADER_EVP_PKEY);
addToLookup(PEM_HEADER_PUBLIC);
addToLookup(PEM_HEADER_RSA);
addToLookup(PEM_HEADER_RSA_PUBLIC);
addToLookup(PEM_HEADER_DSA);
addToLookup(PEM_HEADER_DSA_PUBLIC);
addToLookup(PEM_HEADER_PKCS7);
addToLookup(PEM_HEADER_PKCS7_SIGNED);
addToLookup(PEM_HEADER_PKCS8);
addToLookup(PEM_HEADER_PKCS8_INF);
addToLookup(PEM_HEADER_DH_PARAMS);
addToLookup(PEM_HEADER_DHX_PARAMS);
addToLookup(PEM_HEADER_SSL_SESSION);
addToLookup(PEM_HEADER_DSA_PARAMS);
addToLookup(PEM_HEADER_ECDSA_PUBLIC);
addToLookup(PEM_HEADER_EC_PARAMS);
addToLookup(PEM_HEADER_EC_PRIVATE_KEY);
addToLookup(PEM_HEADER_PARAMS);
addToLookup(PEM_HEADER_CMS);
}
static void addToLookup(PemHeader header) {
_lookupTable.Add(header.Encoding, header);
}
}