Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(111)

Side by Side Diff: ssh/keys_test.go

Issue 13272055: code review 13272055: go.crypto/ssh: fix certificate parsing/marshaling. (Closed)
Patch Set: diff -r 2cd6b3b93cdb https://code.google.com/p/go.crypto Created 10 years, 5 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ssh/keys.go ('k') | ssh/server.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 package ssh 1 package ssh
2 2
3 import ( 3 import (
4 "bytes"
4 "crypto/dsa" 5 "crypto/dsa"
5 "crypto/ecdsa" 6 "crypto/ecdsa"
6 "crypto/elliptic" 7 "crypto/elliptic"
7 "crypto/rand" 8 "crypto/rand"
8 "crypto/rsa" 9 "crypto/rsa"
10 "encoding/base64"
9 "reflect" 11 "reflect"
10 "strings" 12 "strings"
11 "testing" 13 "testing"
12 ) 14 )
13 15
14 var ecdsaKey Signer 16 var ecdsaKey Signer
15 17
16 func rawKey(pub PublicKey) interface{} { 18 func rawKey(pub PublicKey) interface{} {
17 switch k := pub.(type) { 19 switch k := pub.(type) {
18 case *rsaPublicKey: 20 case *rsaPublicKey:
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 sig, err := s.Sign(rand.Reader, data) 158 sig, err := s.Sign(rand.Reader, data)
157 if err != nil { 159 if err != nil {
158 t.Fatalf("dsa.Sign: %v", err) 160 t.Fatalf("dsa.Sign: %v", err)
159 } 161 }
160 162
161 if !s.PublicKey().Verify(data, sig) { 163 if !s.PublicKey().Verify(data, sig) {
162 t.Error("Verify failed.") 164 t.Error("Verify failed.")
163 } 165 }
164 } 166 }
165 167
168 func TestParseCert(t *testing.T) {
169 // Cert generated by ssh-keygen 6.0p1 Debian-4.
170 // % ssh-keygen -s ca-key -I test user-key
171 b64data := "AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgb1srW/W3ZDjY AO45xLYAwzHBDLsJ4Ux6ICFIkTjb1LEAAAADAQABAAAAYQCkoR51poH0wE8w72cqSB8Sszx+vAhzcMdC O0wqHTj7UNENHWEXGrU0E0UQekD7U+yhkhtoyjbPOVIP7hNa6aRk/ezdh/iUnCIt4Jt1v3Z1h1P+hA4Q uYFMHNB+rmjPwAcAAAAAAAAAAAAAAAEAAAAEdGVzdAAAAAAAAAAAAAAAAP//////////AAAAAAAAAIIA AAAVcGVybWl0LVgxMS1mb3J3YXJkaW5nAAAAAAAAABdwZXJtaXQtYWdlbnQtZm9yd2FyZGluZwAAAAAA AAAWcGVybWl0LXBvcnQtZm9yd2FyZGluZwAAAAAAAAAKcGVybWl0LXB0eQAAAAAAAAAOcGVybWl0LXVz ZXItcmMAAAAAAAAAAAAAAHcAAAAHc3NoLXJzYQAAAAMBAAEAAABhANFS2kaktpSGc+CcmEKPyw9mJC4n ZKxHKTgLVZeaGbFZOvJTNzBspQHdy7Q1uKSfktxpgjZnksiu/tFF9ngyY2KFoc+U88ya95IZUycBGCUb BQ8+bhDtw/icdDGQD5WnUwAAAG8AAAAHc3NoLXJzYQAAAGC8Y9Z2LQKhIhxf52773XaWrXdxP0t3GBVo 4A10vUWiYoAGepr6rQIoGGXFxT4B9Gp+nEBJjOwKDXPrAevow0T9ca8gZN+0ykbhSrXLE5Ao48rqr3zP 4O1/9P7e6gp0gw8="
172
173 data, err := base64.StdEncoding.DecodeString(b64data)
174 if err != nil {
175 t.Fatal("base64.StdEncoding.DecodeString: ", err)
176 }
177 key, rest, ok := ParsePublicKey(data)
178 if !ok {
179 t.Fatalf("could not parse certificate")
180 }
181 if len(rest) > 0 {
182 t.Errorf("rest: got %q, want empty", rest)
183 }
184 _, ok = key.(*OpenSSHCertV01)
185 if !ok {
186 t.Fatalf("got %#v, want *OpenSSHCertV01", key)
187 }
188
189 marshaled := MarshalPublicKey(key)
190 if !bytes.Equal(data, marshaled) {
191 t.Errorf("marshaled certificate does not match original: got %q, want %q", marshaled, data)
192 }
193 }
194
166 func init() { 195 func init() {
167 raw, _ := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) 196 raw, _ := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
168 ecdsaKey, _ = NewSignerFromKey(raw) 197 ecdsaKey, _ = NewSignerFromKey(raw)
169 } 198 }
OLDNEW
« no previous file with comments | « ssh/keys.go ('k') | ssh/server.go » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b