Skip to content

Commit a014ff3

Browse files
feat: Add StringSerials to workaround BigInt/uint64 Serial. (#29)
1 parent 51d7d3a commit a014ff3

File tree

5 files changed

+31
-12
lines changed

5 files changed

+31
-12
lines changed

cmd/command_sshcerts.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ func exportSshMain(args []string) {
7979

8080
sshCertificateWithRevocation tSshCertificateWithRevocation
8181
sshCertificatesWithRevocations []tSshCertificateWithRevocation
82+
sshCertificateStringSerials tCertificateStringSerials
8283
)
8384

8485
// Open the database.
@@ -116,10 +117,15 @@ func exportSshMain(args []string) {
116117
logInfo.Printf("RevocationProvisionerID: %s", sshCertificateRevocation.ProvisionerID)
117118
}
118119

120+
// Get serials and embed them as strings. This is to handle uint64 compatibility issues.
121+
sshCertificateStringSerials.SerialDec = strconv.FormatUint(sshCertificate.Serial, 10)
122+
sshCertificateStringSerials.SerialHex = strconv.FormatUint(sshCertificate.Serial, 16)
123+
119124
// Populate the child.
120125
sshCertificateWithRevocation = tSshCertificateWithRevocation{
121-
SshCertificate: sshCertificate,
122-
SshCertificateRevocation: sshCertificateRevocation,
126+
SshCertificate: sshCertificate,
127+
SshCertificateRevocation: sshCertificateRevocation,
128+
SshCertificateStringSerials: sshCertificateStringSerials,
123129
}
124130

125131
// Populate child validity info of the certificate.

cmd/command_x509certs.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ func exportX509Main(args []string) {
8888

8989
x509CertificateProvisionerRevocation tX509CertificateProvisionerRevocation
9090
x509CertificatesProvisionersRevocations []tX509CertificateProvisionerRevocation
91+
x509CertificateStringSerials tCertificateStringSerials
9192
)
9293

9394
// Open the database.
@@ -131,11 +132,16 @@ func exportX509Main(args []string) {
131132
logInfo.Printf("Provisioner: %s", x509CertificateData.Provisioner.Type)
132133
}
133134

135+
// Get serials and embed them as strings. This is to handle uint64 compatibility issues.
136+
x509CertificateStringSerials.SerialDec = x509Certificate.SerialNumber.String()
137+
x509CertificateStringSerials.SerialHex = x509Certificate.SerialNumber.Text(16)
138+
134139
// Populate the child.
135140
x509CertificateProvisionerRevocation = tX509CertificateProvisionerRevocation{
136-
X509Certificate: x509Certificate,
137-
X509Revocation: x509CertificateRevocation,
138-
X509Provisioner: x509CertificateData.Provisioner,
141+
X509Certificate: x509Certificate,
142+
X509Revocation: x509CertificateRevocation,
143+
X509Provisioner: x509CertificateData.Provisioner,
144+
X509CertificateStringSerials: x509CertificateStringSerials,
139145
}
140146

141147
// Populate child validity info of the certificate.

cmd/defs_root.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,11 @@ type tCertificateRevocation struct {
9393
ACME bool `json:"ACME"`
9494
}
9595

96+
type tCertificateStringSerials struct {
97+
SerialDec string `json:"SerialDec"`
98+
SerialHex string `json:"SerialHex"`
99+
}
100+
96101
const (
97102
VALID_STR string = "Valid"
98103
EXPIRED_STR string = "Expired"

cmd/defs_sshcerts.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import "golang.org/x/crypto/ssh"
66
Combined information of certificate and revocation.
77
*/
88
type tSshCertificateWithRevocation struct {
9-
SshCertificate ssh.Certificate `json:"Certificate"`
10-
Validity string `json:"Validity"`
11-
SshCertificateRevocation tCertificateRevocation `json:"Revocation,omitempty"`
9+
SshCertificate ssh.Certificate `json:"Certificate"`
10+
Validity string `json:"Validity"`
11+
SshCertificateRevocation tCertificateRevocation `json:"Revocation,omitempty"`
12+
SshCertificateStringSerials tCertificateStringSerials `json:"StringSerials"`
1213
}

cmd/defs_x509certs.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@ import (
88
Combined information of certificate, revocation and provisioner.
99
*/
1010
type tX509CertificateProvisionerRevocation struct {
11-
X509Certificate x509.Certificate `json:"Certificate"`
12-
Validity string `json:"Validity"`
13-
X509Revocation tCertificateRevocation `json:"Revocation,omitempty"`
14-
X509Provisioner tX509CertificateProvisioner `json:"Provisioner,omitempty"`
11+
X509Certificate x509.Certificate `json:"Certificate"`
12+
Validity string `json:"Validity"`
13+
X509Revocation tCertificateRevocation `json:"Revocation,omitempty"`
14+
X509Provisioner tX509CertificateProvisioner `json:"Provisioner,omitempty"`
15+
X509CertificateStringSerials tCertificateStringSerials `json:"StringSerials"`
1516
}
1617

1718
/*

0 commit comments

Comments
 (0)