@@ -4,20 +4,48 @@ import (
44 "testing"
55)
66
7- const (
8- pubKey = `ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDIqRuNwhjntdJWuAVykr/873X8zzKo6Ms1Vx70BQx0wir8TpaLZEY6CqqKDrMbHZ2Z0ZV2ZITs9fC81GqIdmmDFXZxNfx+B1lSR3ZpmZpQpprtSCevZXihIgy+ND50Hp/wk+3VU54FxhudIlJgpPjb/o5vQFhiyM3ynR5gH3slWVaq9C0TkgXCnTzukGzSTeL7wYPNmLomkrAS0nk0yRfoUZcwmD++HMgEmYlhTbnMlkB3nxzEf/JQxhY6xCHrbtNbRkINCY21dHrsrr/MvBvD8FoKnKpxHX2+HNXZbe7Xl87L9o1OuXrtR1crvq+r+1fPjaynGir07zr9mgJPxouPL/e4ppxTL//vt1kVkWWkh/B+GyXEmP38bQGYMpEA7cAndlxPlOki35JYwDNn5CENQpDp8F4+JsKIzAF1zmkBIA7ngg0cSHHilNgwZXmX7h+7nngLgFIpP8h7A9fCpAKhHUfFUj+Zgl9Xm44+sZOwVBnVijK326TgVDFTUXjE/Xwny+3ERgYwBfOwOKmusNFnS0XHbmh+qa/+D8qge5bKilq48pKHzwngM/U6OwMxmSXTuHclLLen3Ime30TOiPzAhokrVNz/Z3VAkfBuJHby68SAKUgczUEU81wz5wFEt1n1sIJ5V49KMRGaSWb+eWvW81yA7NkDSjnsMLa/IF/ADQ== arschles@gmail.com`
9- backupKeyID = "mybackup"
10- )
7+ type pubKey struct {
8+ key string
9+ id string
10+ }
11+
12+ var validKeys = []pubKey {
13+ { "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDIqRuNwhjntdJWuAVykr/873X8zzKo6Ms1Vx70BQx0wir8TpaLZEY6CqqKDrMbHZ2Z0ZV2ZITs9fC81GqIdmmDFXZxNfx+B1lSR3ZpmZpQpprtSCevZXihIgy+ND50Hp/wk+3VU54FxhudIlJgpPjb/o5vQFhiyM3ynR5gH3slWVaq9C0TkgXCnTzukGzSTeL7wYPNmLomkrAS0nk0yRfoUZcwmD++HMgEmYlhTbnMlkB3nxzEf/JQxhY6xCHrbtNbRkINCY21dHrsrr/MvBvD8FoKnKpxHX2+HNXZbe7Xl87L9o1OuXrtR1crvq+r+1fPjaynGir07zr9mgJPxouPL/e4ppxTL//vt1kVkWWkh/B+GyXEmP38bQGYMpEA7cAndlxPlOki35JYwDNn5CENQpDp8F4+JsKIzAF1zmkBIA7ngg0cSHHilNgwZXmX7h+7nngLgFIpP8h7A9fCpAKhHUfFUj+Zgl9Xm44+sZOwVBnVijK326TgVDFTUXjE/Xwny+3ERgYwBfOwOKmusNFnS0XHbmh+qa/+D8qge5bKilq48pKHzwngM/U6OwMxmSXTuHclLLen3Ime30TOiPzAhokrVNz/Z3VAkfBuJHby68SAKUgczUEU81wz5wFEt1n1sIJ5V49KMRGaSWb+eWvW81yA7NkDSjnsMLa/IF/ADQ== arschles@gmail.com" , "rsaId" },
14+ { "ssh-dss AAAAB3NzaC1kc3MAAACBAOKHxk8vLYdr25G+xha1OOjhPX8z/xAeAMbyiS6mVFrSu1mrrEaqXurJ0LVXm9Md6440noZ5j8iscfdJd5wZZ/XUfugnZ7/LNFNP0uRmLVkJsAh6RwgPZQZ8spnUtucwlWM+xOKDdVNXN7DQQp0LqNg8SsBGAJHuYw3Sd9olPGlNAAAAFQDYmFrWj23PlirKoCPjGQvWCgDfRwAAAIA1NHpuFxgo5j7R4qyb1ydKStoqOkREhQNI5kWNw1p8pksX5pMk0mVZY80VNcYw/M8LWONJ5beLJfAKxMhjfal69A7NKeD+YoY/OxT31VbDvm0cWb0RY+acCIMQ+UtfuXG27aZ6txV/AbOfA9AnhuHTyPPOyF07OHwCUS0ubn8aSgAAAIBA2Jm1k2Hxin/AB8C4N7ycpUDpGQBjIhXp69YuOTNeLcFIzCFc6sB91CorTVJdofnj+KeUAl8lIsJcEWvC4683MNewT3qeDwSClM3ojWFh6VuNuphcPKDqteX8WYnrWMJvAWEiRf0nqNNukhl9zAmAMQFc5U3Sl5TQuhc/6Ns9jA== arschles@gmail.com" , "dsaId" },
15+ { "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMQ/isNQFn2x7g9dIK1N4+mvEa+a01hj2LnZFBad7W+os+wc+UurVxWVoGopc/mjzqezr6vk9jgOjLdYek9T/2w= arschles@gmail.com" , "ecdsaId" },
16+ { "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIORIdG868fEBUKoEqSQZFKfSLoHkSBmW2uXXGaZKEuus arschles@gmail.com" , "ed25519Id" },
17+ }
18+
19+ var invalidKeys = []pubKey {
20+ { "bad-key-type AAAAB3NzaC1yc2EAAAADAQABAAACAQDIqRuNwhjntdJWuAVykr/873X8zzKo6Ms1Vx70BQx0wir8TpaLZEY6CqqKDrMbHZ2Z0ZV2ZITs9fC81GqIdmmDFXZxNfx+B1lSR3ZpmZpQpprtSCevZXihIgy+ND50Hp/wk+3VU54FxhudIlJgpPjb/o5vQFhiyM3ynR5gH3slWVaq9C0TkgXCnTzukGzSTeL7wYPNmLomkrAS0nk0yRfoUZcwmD++HMgEmYlhTbnMlkB3nxzEf/JQxhY6xCHrbtNbRkINCY21dHrsrr/MvBvD8FoKnKpxHX2+HNXZbe7Xl87L9o1OuXrtR1crvq+r+1fPjaynGir07zr9mgJPxouPL/e4ppxTL//vt1kVkWWkh/B+GyXEmP38bQGYMpEA7cAndlxPlOki35JYwDNn5CENQpDp8F4+JsKIzAF1zmkBIA7ngg0cSHHilNgwZXmX7h+7nngLgFIpP8h7A9fCpAKhHUfFUj+Zgl9Xm44+sZOwVBnVijK326TgVDFTUXjE/Xwny+3ERgYwBfOwOKmusNFnS0XHbmh+qa/+D8qge5bKilq48pKHzwngM/U6OwMxmSXTuHclLLen3Ime30TOiPzAhokrVNz/Z3VAkfBuJHby68SAKUgczUEU81wz5wFEt1n1sIJ5V49KMRGaSWb+eWvW81yA7NkDSjnsMLa/IF/ADQ== arschles@gmail.com" , "rsaId" },
21+ }
22+
23+ func TestParseValidSSHPubKey (t * testing.T ) {
24+ for _ , keyAndId := range validKeys {
25+ key := keyAndId .key
26+ id := keyAndId .id
27+ info , err := ParsePubKey (id , []byte (key ))
28+ if err != nil {
29+ t .Fatalf ("Error parsing well formed key (%s)" , err )
30+ }
31+ if info .ID != "arschles@gmail.com" {
32+ t .Fatalf ("expected key ID arschles@gmail.com, got %s" , info .ID )
33+ }
34+ if info .Public != key {
35+ t .Fatalf ("expected key contents %s, got %s" , key , info .Public )
36+ }
1137
12- func TestParseSSHPubKey (t * testing.T ) {
13- info , err := ParsePubKey (backupKeyID , []byte (pubKey ))
14- if err != nil {
15- t .Fatalf ("Error parsing well formed key (%s)" , err )
16- }
17- if info .ID != "arschles@gmail.com" {
18- t .Fatalf ("expected key ID arschles@gmail.com, got %s" , info .ID )
1938 }
20- if info .Public != pubKey {
21- t .Fatalf ("expected key contents %s, got %s" , pubKey , info .Public )
39+
40+ }
41+
42+ func TestParseInvalidSSHPubKey (t * testing.T ) {
43+ for _ , keyAndId := range invalidKeys {
44+ key := keyAndId .key
45+ id := keyAndId .id
46+ _ , err := ParsePubKey (id , []byte (key ))
47+ if err == nil {
48+ t .Fatalf ("Key should be invalid but was not: (%s)" , key )
49+ }
2250 }
2351}
0 commit comments