Moved to google.golang.org/genproto/googleapis/api/annotations
Fixes #52
This commit is contained in:
		
							
								
								
									
										45
									
								
								vendor/golang.org/x/crypto/pkcs12/mac.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								vendor/golang.org/x/crypto/pkcs12/mac.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
// Copyright 2015 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package pkcs12
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"crypto/hmac"
 | 
			
		||||
	"crypto/sha1"
 | 
			
		||||
	"crypto/x509/pkix"
 | 
			
		||||
	"encoding/asn1"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type macData struct {
 | 
			
		||||
	Mac        digestInfo
 | 
			
		||||
	MacSalt    []byte
 | 
			
		||||
	Iterations int `asn1:"optional,default:1"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// from PKCS#7:
 | 
			
		||||
type digestInfo struct {
 | 
			
		||||
	Algorithm pkix.AlgorithmIdentifier
 | 
			
		||||
	Digest    []byte
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	oidSHA1 = asn1.ObjectIdentifier([]int{1, 3, 14, 3, 2, 26})
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func verifyMac(macData *macData, message, password []byte) error {
 | 
			
		||||
	if !macData.Mac.Algorithm.Algorithm.Equal(oidSHA1) {
 | 
			
		||||
		return NotImplementedError("unknown digest algorithm: " + macData.Mac.Algorithm.Algorithm.String())
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	key := pbkdf(sha1Sum, 20, 64, macData.MacSalt, password, macData.Iterations, 3, 20)
 | 
			
		||||
 | 
			
		||||
	mac := hmac.New(sha1.New, key)
 | 
			
		||||
	mac.Write(message)
 | 
			
		||||
	expectedMAC := mac.Sum(nil)
 | 
			
		||||
 | 
			
		||||
	if !hmac.Equal(macData.Mac.Digest, expectedMAC) {
 | 
			
		||||
		return ErrIncorrectPassword
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user