Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "log"
- "crypto/rand"
- "crypto/rsa"
- "golang.org/x/crypto/ssh"
- )
- func main() {
- certPrivateKey, err := rsa.GenerateKey(rand.Reader, 512)
- if err != nil {
- log.Fatalf("Error generating cert key: %v", err)
- }
- certPublicKey, err := ssh.NewPublicKey(&certPrivateKey.PublicKey)
- if err != nil {
- log.Fatalf("Error generating ssh public key: %v", err)
- }
- cert := &ssh.Certificate{
- Key: certPublicKey,
- CertType: 1,
- KeyId: "{requester: \"bob\"}",
- ValidPrincipals: []string{"alice"},
- }
- signer, err := ssh.NewSignerFromKey(certPrivateKey)
- if err != nil {
- log.Fatalf("Error creating signer: %v", err)
- }
- err = cert.SignCert(rand.Reader, signer)
- if err != nil {
- log.Fatalf("Error signing certificate: %v", err)
- }
- marshaled := cert.Marshal()
- parsedCert := &ssh.Certificate{}
- err = ssh.Unmarshal(marshaled, parsedCert)
- if err != nil {
- log.Fatalf("error unmaarshaling: %v", err)
- }
- if err != nil {
- log.Fatalf("error parsing cert: %v", err)
- }
- if parsedCert.CertType != cert.CertType {
- log.Fatalf("Error, parsed certType did not match %s", cert.CertType)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement