1
0

ssh_key_test.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // Copyright 2016 The Gogs Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package db
  5. import (
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. "gogs.io/gogs/internal/conf"
  9. )
  10. func Test_SSHParsePublicKey(t *testing.T) {
  11. // TODO: Refactor SSHKeyGenParsePublicKey to accept a tempPath and remove this init.
  12. conf.MustInit("")
  13. tests := []struct {
  14. name string
  15. content string
  16. expType string
  17. expLength int
  18. }{
  19. {
  20. name: "rsa-1024",
  21. content: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDAu7tvIvX6ZHrRXuZNfkR3XLHSsuCK9Zn3X58lxBcQzuo5xZgB6vRwwm/QtJuF+zZPtY5hsQILBLmF+BZ5WpKZp1jBeSjH2G7lxet9kbcH+kIVj0tPFEoyKI9wvWqIwC4prx/WVk2wLTJjzBAhyNxfEq7C9CeiX9pQEbEqJfkKCQ== nocomment",
  22. expType: "rsa",
  23. expLength: 1024,
  24. },
  25. {
  26. name: "rsa-2048",
  27. content: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMZXh+1OBUwSH9D45wTaxErQIN9IoC9xl7MKJkqvTvv6O5RR9YW/IK9FbfjXgXsppYGhsCZo1hFOOsXHMnfOORqu/xMDx4yPuyvKpw4LePEcg4TDipaDFuxbWOqc/BUZRZcXu41QAWfDLrInwsltWZHSeG7hjhpacl4FrVv9V1pS6Oc5Q1NxxEzTzuNLS/8diZrTm/YAQQ/+B+mzWI3zEtF4miZjjAljWd1LTBPvU23d29DcBmmFahcZ441XZsTeAwGxG/Q6j8NgNXj9WxMeWwxXV2jeAX/EBSpZrCVlCQ1yJswT6xCp8TuBnTiGWYMBNTbOZvPC4e0WI2/yZW/s5F nocomment",
  28. expType: "rsa",
  29. expLength: 2048,
  30. },
  31. {
  32. name: "ecdsa-256",
  33. content: "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFQacN3PrOll7PXmN5B/ZNVahiUIqI05nbBlZk1KXsO3d06ktAWqbNflv2vEmA38bTFTfJ2sbn2B5ksT52cDDbA= nocomment",
  34. expType: "ecdsa",
  35. expLength: 256,
  36. },
  37. {
  38. name: "ecdsa-384",
  39. content: "ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBINmioV+XRX1Fm9Qk2ehHXJ2tfVxW30ypUWZw670Zyq5GQfBAH6xjygRsJ5wWsHXBsGYgFUXIHvMKVAG1tpw7s6ax9oA+dJOJ7tj+vhn8joFqT+sg3LYHgZkHrfqryRasQ== nocomment",
  40. expType: "ecdsa",
  41. expLength: 384,
  42. },
  43. {
  44. name: "ecdsa-521",
  45. content: "ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBACGt3UG3EzRwNOI17QR84l6PgiAcvCE7v6aXPj/SC6UWKg4EL8vW9ZBcdYL9wzs4FZXh4MOV8jAzu3KRWNTwb4k2wFNUpGOt7l28MztFFEtH5BDDrtAJSPENPy8pvPLMfnPg5NhvWycqIBzNcHipem5wSJFN5PdpNOC2xMrPWKNqj+ZjQ== nocomment",
  46. expType: "ecdsa",
  47. expLength: 521,
  48. },
  49. }
  50. for _, test := range tests {
  51. t.Run(test.name, func(t *testing.T) {
  52. typ, length, err := SSHNativeParsePublicKey(test.content)
  53. if err != nil {
  54. t.Fatal(err)
  55. }
  56. assert.Equal(t, test.expType, typ)
  57. assert.Equal(t, test.expLength, length)
  58. typ, length, err = SSHKeyGenParsePublicKey(test.content)
  59. if err != nil {
  60. t.Fatal(err)
  61. }
  62. assert.Equal(t, test.expType, typ)
  63. assert.Equal(t, test.expLength, length)
  64. })
  65. }
  66. }