First implementation of certnode
This commit is contained in:
parent
f0f6457dd3
commit
00bfb5eaaf
|
@ -23,6 +23,32 @@ func BuildNode(flag string, dataType string, data string) *Node {
|
|||
}
|
||||
}
|
||||
|
||||
// BuildCertNode builds a custom node based on CertStream.
|
||||
func BuildCertNode(rawNode *CertStreamWrapper) *CertNode {
|
||||
return &CertNode{
|
||||
Fingerprint: rawNode.Data.Data.LeafCert.Fingerprint,
|
||||
NotBefore: time.Unix(int64(rawNode.Data.Data.LeafCert.NotBefore), 0).Format(time.RFC3339),
|
||||
NotAfter: time.Unix(int64(rawNode.Data.Data.LeafCert.NotAfter), 0).Format(time.RFC3339),
|
||||
CN: rawNode.Data.Data.LeafCert.Subject.CN,
|
||||
SourceName: rawNode.Data.Data.Source.Name,
|
||||
BasicConstraints: rawNode.Data.Data.LeafCert.Extensions.BasicConstrains,
|
||||
RawUUID: rawNode.ID,
|
||||
}
|
||||
}
|
||||
|
||||
// CertNode represents our custom struct of data extraction from CertStream.
|
||||
type CertNode struct {
|
||||
Fingerprint string `json:"fingerprint"`
|
||||
NotBefore string `json:"notBefore"`
|
||||
NotAfter string `json:"notAfter"`
|
||||
CN string `json:"cn"`
|
||||
SourceName string `json:"sourceName"`
|
||||
SerialNumber string `json:"serialNumber"`
|
||||
BasicConstraints string `json:"basicConstraints"`
|
||||
RawUUID string `json:"rawUUID"`
|
||||
}
|
||||
|
||||
// WrapCertStreamData is a wrapper around CertStreamStruct.
|
||||
func WrapCertStreamData(data CertStreamStruct) *CertStreamWrapper {
|
||||
t := time.Now()
|
||||
rfc3339time := t.Format(time.RFC3339)
|
||||
|
@ -48,6 +74,7 @@ func BuildEdge(source string, nodeOneUUID string, nodeTwoUUID string) *Edge {
|
|||
}
|
||||
}
|
||||
|
||||
// SavePaste saves a object received from PasteBin.
|
||||
func SavePaste(filename string, data *PasteWrapper) {
|
||||
err := utils.FileExists(filename)
|
||||
if err != nil {
|
||||
|
@ -77,6 +104,7 @@ func SavePaste(filename string, data *PasteWrapper) {
|
|||
}
|
||||
}
|
||||
|
||||
// SaveRaw save the raw CertStream data.
|
||||
func SaveRaw(filename string, data *CertStreamWrapper) {
|
||||
err := utils.FileExists(filename)
|
||||
if err != nil {
|
||||
|
@ -105,6 +133,35 @@ func SaveRaw(filename string, data *CertStreamWrapper) {
|
|||
}
|
||||
}
|
||||
|
||||
// SaveCertNode saves a CertNode to a json file.
|
||||
func SaveCertNode(filename string, node *CertNode) {
|
||||
err := utils.FileExists(filename)
|
||||
if err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
nodeFile, err := ioutil.ReadFile(filename)
|
||||
if err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
nodeDatas := []CertNode{}
|
||||
|
||||
if err := json.Unmarshal(nodeFile, &nodeDatas); err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
|
||||
nodeDatas = append(nodeDatas, *node)
|
||||
|
||||
nodeBytes, err := json.Marshal(nodeDatas)
|
||||
if err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
|
||||
err = ioutil.WriteFile(filename, nodeBytes, 0644)
|
||||
if err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
// SaveNode saves a node to a file.
|
||||
func SaveNode(filename string, node *Node) {
|
||||
err := utils.FileExists(filename)
|
||||
|
|
|
@ -12,6 +12,7 @@ import (
|
|||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
// PasteWrapper is a node from PasteBin.
|
||||
type PasteWrapper struct {
|
||||
ID string `json:"id"`
|
||||
Type string `json:"type"`
|
||||
|
@ -20,6 +21,7 @@ type PasteWrapper struct {
|
|||
Modified string `json:"modified"`
|
||||
}
|
||||
|
||||
// FullPaste wrape meta and information from Pastebin.
|
||||
type FullPaste struct {
|
||||
Meta PasteMeta `json:"meta"`
|
||||
Full string `json:"full"`
|
||||
|
@ -116,6 +118,7 @@ func FetchPaste(paste PasteMeta) (string, error) {
|
|||
return string(body), nil
|
||||
}
|
||||
|
||||
// BuildPasteNode builds a node from a FullPaste data.
|
||||
func BuildPasteNode(data *FullPaste) *PasteWrapper {
|
||||
t := time.Now()
|
||||
rfc3339time := t.Format(time.RFC3339)
|
||||
|
|
Loading…
Reference in a new issue