refactor: Split large main file
This commit is contained in:
50
pem_io.go
Normal file
50
pem_io.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/x509"
|
||||
"encoding/pem"
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
func decodeCrlBytes(content []byte) ([]byte, error) {
|
||||
if !bytes.Contains(content, []byte("BEGIN")) {
|
||||
return content, nil
|
||||
}
|
||||
block, rest := pem.Decode(content)
|
||||
if block == nil {
|
||||
return nil, fmt.Errorf("crl pem block could not be decoded")
|
||||
}
|
||||
if len(bytes.TrimSpace(rest)) > 0 {
|
||||
return nil, fmt.Errorf("crl file contains trailing data")
|
||||
}
|
||||
return block.Bytes, nil
|
||||
}
|
||||
|
||||
func loadCrlFromFile(path string) (*x509.RevocationList, error) {
|
||||
content, readError := os.ReadFile(path)
|
||||
if readError != nil {
|
||||
return nil, readError
|
||||
}
|
||||
derBytes, decodeError := decodeCrlBytes(content)
|
||||
if decodeError != nil {
|
||||
return nil, fmt.Errorf("%s: %w", path, decodeError)
|
||||
}
|
||||
return x509.ParseRevocationList(derBytes)
|
||||
}
|
||||
|
||||
func loadCertificateFromFile(path string) (*x509.Certificate, error) {
|
||||
content, readError := os.ReadFile(path)
|
||||
if readError != nil {
|
||||
return nil, readError
|
||||
}
|
||||
block, rest := pem.Decode(content)
|
||||
if block == nil {
|
||||
return nil, fmt.Errorf("%s: certificate pem block could not be decoded", path)
|
||||
}
|
||||
if len(bytes.TrimSpace(rest)) > 0 {
|
||||
return nil, fmt.Errorf("%s: certificate file contains trailing data", path)
|
||||
}
|
||||
return x509.ParseCertificate(block.Bytes)
|
||||
}
|
||||
Reference in New Issue
Block a user