master
Matthew 2021-03-26 17:07:36 -04:00
commit 92e03c4b06
No known key found for this signature in database
GPG Key ID: 210AF32ADE3B5C4B
1 changed files with 41 additions and 0 deletions

View File

@ -1,6 +1,9 @@
package routes package routes
import ( import (
"crypto/ecdsa"
"crypto/ed25519"
"crypto/rsa"
"crypto/sha1" "crypto/sha1"
"crypto/tls" "crypto/tls"
"crypto/x509" "crypto/x509"
@ -125,6 +128,25 @@ func GetCertificateInformationEncoded(c *gin.Context) {
sum := sha1.Sum(certificate.Raw) sum := sha1.Sum(certificate.Raw)
var bitLength int
switch certificate.PublicKeyAlgorithm {
case x509.RSA:
if rsaKey, ok := certificate.PublicKey.(*rsa.PublicKey); ok {
bitLength = rsaKey.N.BitLen()
} else {
panic("expected rsa.PublicKey for type x509.RSA")
}
case x509.ECDSA:
if ecdsaKey, ok := certificate.PublicKey.(*ecdsa.PublicKey); ok {
bitLength = ecdsaKey.Params().BitSize
} else {
panic("expected ecdsa.PublicKey for type x509.ECDSA")
}
case x509.Ed25519:
bitLength = ed25519.PublicKeySize
}
c.JSON(http.StatusOK, gin.H{ c.JSON(http.StatusOK, gin.H{
"status": true, "status": true,
"subject": gin.H{ "subject": gin.H{
@ -153,6 +175,7 @@ func GetCertificateInformationEncoded(c *gin.Context) {
"extendedKeyUsageAsText": extendedKeyUsagesText, "extendedKeyUsageAsText": extendedKeyUsagesText,
"san": certificate.DNSNames, "san": certificate.DNSNames,
"fingerprint": hex.EncodeToString(sum[:]), "fingerprint": hex.EncodeToString(sum[:]),
"bitLength": bitLength,
}) })
} }
@ -271,6 +294,23 @@ func GetCertificateInfo(c *gin.Context) {
sum := sha1.Sum(certificate.Raw) sum := sha1.Sum(certificate.Raw)
var bitLength int
switch certificate.PublicKeyAlgorithm {
case x509.RSA:
if rsaKey, ok := certificate.PublicKey.(*rsa.PublicKey); ok {
bitLength = rsaKey.N.BitLen()
} else {
panic("expected rsa.PublicKey for type x509.RSA")
}
case x509.ECDSA:
if ecdsaKey, ok := certificate.PublicKey.(*ecdsa.PublicKey); ok {
bitLength = ecdsaKey.Params().BitSize
} else {
panic("expected ecdsa.PublicKey for type x509.ECDSA")
}
}
c.JSON(http.StatusOK, gin.H{ c.JSON(http.StatusOK, gin.H{
"status": true, "status": true,
"subject": gin.H{ "subject": gin.H{
@ -306,6 +346,7 @@ func GetCertificateInfo(c *gin.Context) {
"extendedKeyUsageAsText": extendedKeyUsagesText, "extendedKeyUsageAsText": extendedKeyUsagesText,
"san": certificate.DNSNames, "san": certificate.DNSNames,
"fingerprint": hex.EncodeToString(sum[:]), "fingerprint": hex.EncodeToString(sum[:]),
"bitLength": bitLength,
"connection": gin.H{ "connection": gin.H{
"tlsVersion": tlsVersion, "tlsVersion": tlsVersion,
"cipherSuite": cipherSuite, "cipherSuite": cipherSuite,