Advertisement
Guest User

Untitled

a guest
Aug 17th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "log"
  5. "crypto/rand"
  6. "crypto/rsa"
  7. "golang.org/x/crypto/ssh"
  8. )
  9.  
  10. func main() {
  11. certPrivateKey, err := rsa.GenerateKey(rand.Reader, 512)
  12. if err != nil {
  13. log.Fatalf("Error generating cert key: %v", err)
  14. }
  15.  
  16. certPublicKey, err := ssh.NewPublicKey(&certPrivateKey.PublicKey)
  17. if err != nil {
  18. log.Fatalf("Error generating ssh public key: %v", err)
  19. }
  20.  
  21. cert := &ssh.Certificate{
  22. Key: certPublicKey,
  23. CertType: 1,
  24. KeyId: "{requester: \"bob\"}",
  25. ValidPrincipals: []string{"alice"},
  26. }
  27.  
  28. signer, err := ssh.NewSignerFromKey(certPrivateKey)
  29. if err != nil {
  30. log.Fatalf("Error creating signer: %v", err)
  31. }
  32.  
  33. err = cert.SignCert(rand.Reader, signer)
  34. if err != nil {
  35. log.Fatalf("Error signing certificate: %v", err)
  36. }
  37.  
  38. marshaled := cert.Marshal()
  39.  
  40. parsedCert := &ssh.Certificate{}
  41.  
  42. err = ssh.Unmarshal(marshaled, parsedCert)
  43. if err != nil {
  44. log.Fatalf("error unmaarshaling: %v", err)
  45. }
  46.  
  47. if err != nil {
  48. log.Fatalf("error parsing cert: %v", err)
  49. }
  50.  
  51. if parsedCert.CertType != cert.CertType {
  52. log.Fatalf("Error, parsed certType did not match %s", cert.CertType)
  53. }
  54.  
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement