public void Find_Success_LabelsWithHyphenSpace(string label) { string content = $"-----BEGIN {label}-----\nZm9v\n-----END {label}-----"; PemFields fields = FindPem(content); Assert.Equal(label, content[fields.Label]); }
public static void ImportEncryptedPem <TPass>( ReadOnlySpan <char> input, ReadOnlySpan <TPass> password, ImportEncryptedKeyAction <TPass> importAction) { bool foundEncryptedPem = false; PemFields foundFields = default; ReadOnlySpan <char> foundSlice = default; ReadOnlySpan <char> pem = input; while (PemEncoding.TryFind(pem, out PemFields fields)) { ReadOnlySpan <char> label = pem[fields.Label]; if (label.SequenceEqual(PemLabels.EncryptedPkcs8PrivateKey)) { if (foundEncryptedPem) { throw new ArgumentException(SR.Argument_PemImport_AmbiguousPem, nameof(input)); } foundEncryptedPem = true; foundFields = fields; foundSlice = pem; } Index offset = fields.Location.End; pem = pem[offset..];
public void Find_Success_DecodeSize(string base64, int expectedSize) { string content = $"-----BEGIN TEST-----\n{base64}\n-----END TEST-----"; PemFields fields = FindPem(content); Assert.Equal(expectedSize, fields.DecodedDataLength); Assert.Equal(base64, content[fields.Base64Data]); }
public void Find_Success_Base64SurroundingWhiteSpaceStripped() { string content = $"-----BEGIN A-----\r\n Zm9v\n\r \t-----END A-----"; PemFields fields = AssertPemFound(content, expectedLocation: 0..43, expectedBase64: 20..24, expectedLabel: 11..12); }
public void Find_Success_WhiteSpaceAfterPpostebSeparatesFromSubsequentContent(string whiteSpace) { string content = $"-----BEGIN TEST-----\nZn9v\n-----END TEST-----{whiteSpace}blah"; PemFields fields = AssertPemFound(content, expectedLocation: 0..44, expectedBase64: 21..25, expectedLabel: 11..15); }
public void Find_Success_WhiteSpaceBeforePreebSeparatesFromPriorContent(string whiteSpace) { string content = $"blah{whiteSpace}-----BEGIN TEST-----\nZn9v\n-----END TEST-----"; PemFields fields = AssertPemFound(content, expectedLocation: 5..49, expectedBase64: 26..30, expectedLabel: 16..20); }
public void Find_Success_LabelCharacterBoundaries() { string content = $"-----BEGIN !PANIC~~~-----\nAHHH\n-----END !PANIC~~~-----"; PemFields fields = AssertPemFound(content, expectedLocation: 0..54, expectedBase64: 26..30, expectedLabel: 11..20); }
public void Find_Success_Minimum() { string content = "-----BEGIN ----------END -----"; PemFields fields = AssertPemFound(content, expectedLocation: 0..30, expectedBase64: 16..16, expectedLabel: 11..11); Assert.Equal(0, fields.DecodedDataLength); }
public void Find_Success_CompletePreebPrefixedSameLabel() { string content = "-----BEGIN TEST----- -----BEGIN TEST-----\nZm9v\n-----END TEST-----"; PemFields fields = AssertPemFound(content, expectedLocation: 21..65, expectedBase64: 42..46, expectedLabel: 32..36); Assert.Equal("TEST", content[fields.Label]); }
public void Find_Success_EmptyContent_OneLine() { string content = "-----BEGIN EMPTY----------END EMPTY-----"; PemFields fields = AssertPemFound(content, expectedLocation: 0..40, expectedBase64: 21..21, expectedLabel: 11..16); Assert.Equal(0, fields.DecodedDataLength); }
public void Find_Success_EmptyContent_ManyLinesOfWhitespace() { string content = "-----BEGIN EMPTY-----\n\t\n\t\n\t \n-----END EMPTY-----"; PemFields fields = AssertPemFound(content, expectedLocation: 0..49, expectedBase64: 30..30, expectedLabel: 11..16); Assert.Equal(0, fields.DecodedDataLength); }
public void Find_Success_LargeLabel() { string label = new string('A', 275); string content = $"-----BEGIN {label}-----\nZm9v\n-----END {label}-----"; PemFields fields = AssertPemFound(content, expectedLocation: 0..586, expectedBase64: 292..296, expectedLabel: 11..286); Assert.Equal(label, content[fields.Label]); }
public void Find_Success_PreebEndingOverlap() { string content = "-----BEGIN TEST -----BEGIN TEST-----\nZm9v\n-----END TEST-----"; PemFields fields = AssertPemFound(content, expectedLocation: 16..60, expectedBase64: 37..41, expectedLabel: 27..31); Assert.Equal("TEST", content[fields.Label]); Assert.Equal(3, fields.DecodedDataLength); }
public void Find_Success_Simple() { string content = "-----BEGIN TEST-----\nZm9v\n-----END TEST-----"; PemFields fields = AssertPemFound(content, expectedLocation: 0..44, expectedBase64: 21..25, expectedLabel: 11..15); Assert.Equal("TEST", content[fields.Label]); Assert.Equal(content, content[fields.Location]); Assert.Equal("Zm9v", content[fields.Base64Data]); Assert.Equal(3, fields.DecodedDataLength); }
private PemFields AssertPemFound( ReadOnlySpan <char> input, Range expectedLocation, Range expectedBase64, Range expectedLabel) { PemFields fields = FindPem(input); Assert.Equal(expectedBase64, fields.Base64Data); Assert.Equal(expectedLocation, fields.Location); Assert.Equal(expectedLabel, fields.Label); return(fields); }
public void Find_Success_FindsPemAfterPemWithInvalidBase64() { string content = @" -----BEGIN TEST----- $$$$ -----END TEST----- -----BEGIN TEST2----- Zm9v -----END TEST2-----"; PemFields fields = FindPem(content); Assert.Equal("TEST2", content[fields.Label]); Assert.Equal("Zm9v", content[fields.Base64Data]); }
public void Deconstruct(out ReadOnlySpan <char> contents, out PemFields pemFields) { contents = _contents; pemFields = _pemFields; }
public PemFieldItem(ReadOnlySpan <char> contents, PemFields pemFields) { _contents = contents; _pemFields = pemFields; }
public Enumerator(ReadOnlySpan <char> contents) { _contents = contents; _pemFields = default; }