Golang crypto/x509.ParseDERCRL function example
package crypto/x509
ParseDERCRL parses a DER encoded CRL from the given bytes.
Golang crypto/x509.ParseDERCRL function usage example
package main
import (
"crypto/x509"
"os"
"fmt"
"encoding/pem"
"crypto/x509/pkix"
"crypto/rand"
"math/big"
"time"
)
func main() {
var pemPrivateKey = `-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBALKZD0nEffqM1ACuak0bijtqE2QrI/KLADv7l3kK3ppMyCuLKoF0
fd7Ai2KW5ToIwzFofvJcS/STa6HA5gQenRUCAwEAAQJBAIq9amn00aS0h/CrjXqu
/ThglAXJmZhOMPVn4eiu7/ROixi9sex436MaVeMqSNf7Ex9a8fRNfWss7Sqd9eWu
RTUCIQDasvGASLqmjeffBNLTXV2A5g4t+kLVCpsEIZAycV5GswIhANEPLmax0ME/
EO+ZJ79TJKN5yiGBRsv5yvx5UiHxajEXAiAhAol5N4EUyq6I9w1rYdhPMGpLfk7A
IU2snfRJ6Nq2CQIgFrPsWRCkV+gOYcajD17rEqmuLrdIRexpg8N1DOSXoJ8CIGlS
tAboUGBxTDq3ZroNism3DaMIbKPyYrAqhKov1h5V
-----END RSA PRIVATE KEY-----
`
var pemCertificate = `-----BEGIN CERTIFICATE-----
MIIB5DCCAZCgAwIBAgIBATALBgkqhkiG9w0BAQUwLTEQMA4GA1UEChMHQWNtZSBDbzEZMBcGA1UE
AxMQdGVzdC5leGFtcGxlLmNvbTAeFw03MDAxMDEwMDE2NDBaFw03MDAxMDIwMzQ2NDBaMC0xEDAO
BgNVBAoTB0FjbWUgQ28xGTAXBgNVBAMTEHRlc3QuZXhhbXBsZS5jb20wWjALBgkqhkiG9w0BAQED
SwAwSAJBALKZD0nEffqM1ACuak0bijtqE2QrI/KLADv7l3kK3ppMyCuLKoF0fd7Ai2KW5ToIwzFo
fvJcS/STa6HA5gQenRUCAwEAAaOBnjCBmzAOBgNVHQ8BAf8EBAMCAAQwDwYDVR0TAQH/BAUwAwEB
/zANBgNVHQ4EBgQEAQIDBDAPBgNVHSMECDAGgAQBAgMEMBsGA1UdEQQUMBKCEHRlc3QuZXhhbXBs
ZS5jb20wDwYDVR0gBAgwBjAEBgIqAzAqBgNVHR4EIzAhoB8wDoIMLmV4YW1wbGUuY29tMA2CC2V4
YW1wbGUuY29tMAsGCSqGSIb3DQEBBQNBAHKZKoS1wEQOGhgklx4+/yFYQlnqwKXvar/ZecQvJwui
0seMQnwBhwdBkHfVIU2Fu5VUMRyxlf0ZNaDXcpU581k=
-----END CERTIFICATE-----`
block, _ := pem.Decode([]byte(pemPrivateKey))
priv, _ := x509.ParsePKCS1PrivateKey(block.Bytes)
block, _ = pem.Decode([]byte(pemCertificate))
cert, _ := x509.ParseCertificate(block.Bytes)
now := time.Unix(1000, 0)
expiry := time.Unix(10000, 0)
revokedCerts := []pkix.RevokedCertificate{
{
SerialNumber: big.NewInt(1),
RevocationTime: now,
},
{
SerialNumber: big.NewInt(42),
RevocationTime: now,
},
}
crlBytes, err := cert.CreateCRL(rand.Reader, priv, revokedCerts, now, expiry)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
certList, err := x509.ParseDERCRL([]byte(crlBytes))
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Printf("TBSCertList : %v\n\n", certList.TBSCertList)
fmt.Printf("SignatureAlgorithm : %v\n\n", certList.SignatureAlgorithm)
fmt.Printf("SignatureValue : %v\n\n", certList.SignatureValue)
}
Reference :
http://golang.org/pkg/crypto/x509/#ParseDERCRL
https://code.google.com/p/go/source/browse/src/pkg/crypto/x509/x509_test.go
Advertisement
Something interesting
Tutorials
+5.8k Unix/Linux : How to test user agents blocked successfully ?
+10.9k Golang : How to transmit update file to client by HTTP request example
+10.9k Golang : Sieve of Eratosthenes algorithm
+7.4k Golang : Example of custom handler for Gorilla's Path usage.
+28.6k Golang : Read, Write(Create) and Delete Cookie example
+9.9k Golang : Ordinal and Ordinalize a given number to the English ordinal numeral
+51.1k Golang : Disable security check for HTTPS(SSL) with bad or expired certificate
+4.6k JavaScript : Rounding number to decimal formats to display currency
+41.2k Golang : How to count duplicate items in slice/array?
+10.3k Golang : Detect number of faces or vehicles in a photo
+48.1k Golang : How to convert JSON string to map and slice
+87.7k Golang : How to convert character to ASCII and back