Advertisement
pcwizz

Untitled

Feb 4th, 2015
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 2.04 KB | None | 0 0
  1. var publicKey *rsa.PublicKey = (*rsa.PublicKey)(unsafe.Pointer(reflect.ValueOf(pubKey).Pointer()))
  2.     var hashAlg crypto.Hash
  3.     var hashLen int
  4.     switch (signee.SignitureAlgorithm.Algorithm.String()){
  5.         case "1.2.840.113549.1.1.4":
  6.             if !crypto.MD5.Available() {
  7.                 fmt.Println("crypto/md5 not linked")
  8.                 panic(1)
  9.             }
  10.             hashAlg = crypto.MD5
  11.             hashLen = 16
  12.             break
  13.         case "1.2.840.113549.1.1.5":
  14.             if !crypto.SHA1.Available() {
  15.                 fmt.Println("crypto/sha1 not linked")
  16.                 panic(1)
  17.             }
  18.             hashAlg = crypto.SHA1
  19.             hashLen = 20
  20.             break
  21.  
  22.         case "1.2.840.113549.1.1.12":
  23.             if !crypto.SHA384.Available() {
  24.                 fmt.Println("crypto/sha512 not linked (384)")
  25.                 panic(1)
  26.             }  
  27.             hashAlg = crypto.SHA384
  28.             hashLen = 48
  29.             break
  30.         case "1.2.840.113549.1.1.11":
  31.             if !crypto.SHA256.Available() {
  32.                 fmt.Println("crypto/sha256 not linked")
  33.                 panic(1)
  34.             }  
  35.             hashAlg = crypto.SHA256
  36.             hashLen = 32
  37.             break
  38.         case "1.2.840.113549.1.1.13":
  39.             if !crypto.SHA512.Available() {
  40.                 fmt.Println("crypto/sha512 not linked")
  41.                 panic(1)
  42.             }  
  43.             hashAlg = crypto.SHA512
  44.             hashLen = 64
  45.             break
  46.         default:
  47.             println(signee.SignitureAlgorithm.Algorithm.String())
  48.             panic(1)
  49.  
  50.     }  
  51.     pkac, err := asn1.Marshal(signee.PublicKeyAndChallenge)
  52.     if err != nil {
  53.         log.Fatal(err)
  54.     }  
  55.     pkacHash := hashAlg.New().Sum(pkac)
  56.     hash := pkacHash[len(pkacHash) - hashLen:]
  57.     fmt.Printf("%v \t Start: %v, Len: %v, Alg: %v\n", hash, len(pkacHash)-hashLen, hashLen, hashAlg)
  58.     err = rsa.VerifyPKCS1v15(publicKey, hashAlg, hash, signee.Signiture.Bytes)
  59.     if err != nil {
  60.         log.Fatal(err)
  61.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement