// CheckSignatureFrom verifies that the signature on c is a valid signature
// from parent.
CheckSignatureFrom verifies that the signature on c is a valid signature
from parent.
// CheckSignatureFrom verifies that the signature on c is a valid signature // from parent .
func (c *AttributeCertificate) CheckSignatureFrom(parent *x509.Certificate) error {
	if parent.KeyUsage != 0 && parent.KeyUsage&x509.KeyUsageCertSign == 0 {
		return x509.ConstraintViolationError{}
	}
	if parent.PublicKeyAlgorithm == x509.UnknownPublicKeyAlgorithm {
		return x509.ErrUnsupportedAlgorithm
	}
	return parent.CheckSignature(c.SignatureAlgorithm, c.RawTBSAttributeCertificate, c.Signature)
}
func ( c * AttributeCertificate ) CheckSignatureFrom ( parent * x509 . Certificate ) error { if parent . KeyUsage != 0 && parent . KeyUsage & x509 . KeyUsageCertSign == 0 { return x509 . ConstraintViolationError { } } if parent . PublicKeyAlgorithm == x509 . UnknownPublicKeyAlgorithm { return x509 . ErrUnsupportedAlgorithm } return parent . CheckSignature ( c . SignatureAlgorithm , c . RawTBSAttributeCertificate , c . Signature ) }
CheckSignatureFrom verifies that the signature on c is a valid signature
from parent.
CheckSignatureFrom verifies that the signature on c is a valid signature from parent .
// TODO(agl): don't ignore the path length constraint.