...

Source file src/github.com/titanous/rocacheck/rocacheck_test.go

Documentation: github.com/titanous/rocacheck

     1  package rocacheck
     2  
     3  import (
     4  	"crypto/rsa"
     5  	"crypto/x509"
     6  	"encoding/pem"
     7  	"testing"
     8  )
     9  
    10  var bad = []string{
    11  	`-----BEGIN PUBLIC KEY-----
    12  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlze9c7qGdjDLVR/ntk+4
    13  ZkfMcYsAnmfTFHfe3Xv7jRQqPCXCULtr0y0jG3aRJmEenoXO9uDveqr43gFB9yvA
    14  dLEhu0aJqpB7lNZ+yXsvfVp/96dkSN8oWYL/dd9Z7GQOvVniHUY3Xsd7zdw2eYOy
    15  HSXhhA2Ttwnj3c1jEYfC0y9q1cU99aL0ogGDqolcOvlkJu+mGb+6+WyboFa1gwRu
    16  kYxBHZWKiHCt/eihvXsPTzTlXmTXWdGJtA1xZDnCBWuZ90b5R0agXVIESTl0cCyH
    17  aQM/tLZmktJIU+Eu7ALBXemPg9kh3SCnYd3/YvDGCtYSXOWthHwlP5CImRBcQaNn
    18  cQIDAQAB
    19  -----END PUBLIC KEY-----`,
    20  	`-----BEGIN PUBLIC KEY-----
    21  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnDSwGO+LetuWIPxBrWIV
    22  EZhfr8VB7tnXBnFaNev61bT1lViBUAN8rmMBw2rd/a6Lw4SjDi+3Fc7hpQtccMyr
    23  z3Z52VVsuS1Df94/2GJ2J+B8qw0dTHQoVjPGaOrRads5cjrI1fvgcKNhfwXHd8jh
    24  6fCHwVIruU8E2wgTu91ceTzAODzCe1aWbE0QMYTV11E0t2+vt808AWsYMDOWMIOa
    25  0sFZD1DzQSw1YC74YV92yDGsHA4JNZVl6JB0H21lxENKrkOF9MJx+doXHiEEfwNC
    26  3F7kf2QDd+3oyRcrrGZt9rhfRPQckUnYM495nfaQcHzTXyIySnY0s6PkwbgL4B44
    27  dQIDAQAB
    28  -----END PUBLIC KEY-----`,
    29  	`-----BEGIN PUBLIC KEY-----
    30  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkVOD39Rao7yBD5Msly74
    31  VCZzikzRV672cEkNEM6GB3wg15W7Nw9NxdzwlzBNB5fb/FXL3hd9m9djNkrd2fj6
    32  FG47dS4A9nK1b+KL7E+Yhh19MP1GKxz3cW8sTg516fpvvnvPKUcRyyIOxARvvhuv
    33  s7tza/I7VjIBQSHpBKuiFBkJ5yeVq3iRuiuVnNMut+MllVSEeLEoNCmDAvRI7tTK
    34  Xtlap1sPXb93D0x2LnzlNx/5jKSorQo2nPS4iwE8UPBGE6TRMr3ap9bjTG9tP0kE
    35  sHuM/OWBF1whlCvb/88BmE0x6v22i6ss3q/mkVt1bH0R+pgLaiRakJW7Zsgpa+sx
    36  PQIDAQAB
    37  -----END PUBLIC KEY-----`,
    38  }
    39  
    40  var good = []string{
    41  	`-----BEGIN PUBLIC KEY-----
    42  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtA+5PaMwafUZVIU0kXo+
    43  u3EbF45Sw+11yOuYReWxp5dGLCmqk6Ukq+PvZ9Ygq7xrOQzuUx/dY1rFqB0tz3Z4
    44  KurqpK/aVwj+nEhRckEAtbls9qeGcMxdTgPvf8KJbjR6gw0jXdQKeLTIojXNtUSF
    45  PpOm0tsAT0SAqGHZF9jFzBOHlpyyhiWvtZpZaUQMXRQwoptaHug7tPBjZHm3n+ba
    46  JH8TVua9Kx8zVsrGBzZnGh7Ybap9ZxvNg2m0BMi/jMhoNr7c3eQBrrkcxqrb0GId
    47  Hbg94w9W7Ds3v01FPb6qjKbW8Z2ZAm1lGM/3imodT8z3hLXYDUGWXUTGuaRWWKr8
    48  +QIDAQAB
    49  -----END PUBLIC KEY-----`,
    50  	`-----BEGIN PUBLIC KEY-----
    51  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwYtbVJUsNAQL//ijcypw
    52  o40yK5QLJuOvwVnVSy7Q6MVlmaSv4ZQyVR5QJf2kAbBVIFK7xogMW474R9TTyvL+
    53  iWjIpdYWF5OILlYBp/dcwqqic1ZZQnUL9ACsProq1b1kaBmpQegwD38O1F64eOPk
    54  3GdjJo8/vQLuVfK1wFq90VnyszDuvP1PXo7g91jrwIeeqQ14+J1vYmTI8qpodNJE
    55  VDlfQbaQB0DtSDcNcVLQCumKYSU1+8P8fSqve7TRBJtRjBXg/aliF1+twJ+ROFaJ
    56  Yo87+pJ2Leh/L1+KqZHxPnGpCoZKKX1nqpmqy4MnE1qE37ACYEcPauI7oMFYXmoh
    57  bwIDAQAB
    58  -----END PUBLIC KEY-----`,
    59  	`-----BEGIN PUBLIC KEY-----
    60  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1p2IZ0HNzhtIJ4PSRe+A
    61  mAZ9PJj4ufBmu9yZd2DgXoWQJjYnSBC1E93KUr3Kdrywpi1OqUe5XhMjIJIIiykK
    62  7QuKbcWNEjPPMHFPi8Jw6HGToZZT/IfAJib3pY9FcmzNWyU176Zxx6HamoHUhnhp
    63  E4gvK2h9dwpG7pejhk61lgUqQ20RIAsKa83rsLdkb2gthorVdzWd2zMO1mZc/qgl
    64  I6xQc9yMwMpEDg2LpEq8FHpDvCqNAtdk7y4keXyMYQ+9Gz4OOGlhD7Q5KsIAXTeU
    65  QDetJfwQwYq+tHrt7PfoBhFxV1iIvSDzfy5GtrotcDgEXsktLt14zRSmzv2R/svv
    66  zQIDAQAB
    67  -----END PUBLIC KEY-----`,
    68  }
    69  
    70  func decode(s string) *rsa.PublicKey {
    71  	b, _ := pem.Decode([]byte(s))
    72  	k, _ := x509.ParsePKIXPublicKey(b.Bytes)
    73  	return k.(*rsa.PublicKey)
    74  }
    75  
    76  func TestKeys(t *testing.T) {
    77  	for i, p := range bad {
    78  		if !IsWeak(decode(p)) {
    79  			t.Errorf("expected %d to fail", i)
    80  		}
    81  	}
    82  	for i, p := range good {
    83  		if IsWeak(decode(p)) {
    84  			t.Errorf("expected %d to pass", i)
    85  		}
    86  	}
    87  }
    88  
    89  func BenchmarkIsWeak(b *testing.B) {
    90  	k := decode(bad[1])
    91  	b.ResetTimer()
    92  	for i := 0; i < b.N; i++ {
    93  		IsWeak(k)
    94  	}
    95  }
    96  

View as plain text