mirror of
https://github.com/gocsaf/csaf.git
synced 2025-12-22 11:55:40 +01:00
Implemented TLS check.
This commit is contained in:
parent
b3b2004417
commit
3cf885010c
1 changed files with 37 additions and 17 deletions
|
|
@ -152,6 +152,10 @@ type publicPGPKeyCheck struct {
|
||||||
baseCheck
|
baseCheck
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (bc *baseCheck) run(*processor, string) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (bc *baseCheck) report(_ *processor, domain *Domain) {
|
func (bc *baseCheck) report(_ *processor, domain *Domain) {
|
||||||
req := &Requirement{
|
req := &Requirement{
|
||||||
Num: bc.num,
|
Num: bc.num,
|
||||||
|
|
@ -161,32 +165,48 @@ func (bc *baseCheck) report(_ *processor, domain *Domain) {
|
||||||
domain.Requirements = append(domain.Requirements, req)
|
domain.Requirements = append(domain.Requirements, req)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tc *tlsCheck) run(*processor, string) error {
|
func (tc *tlsCheck) run(p *processor, domain string) error {
|
||||||
// TODO: Implement me!
|
url := "https://" + domain + "/.well-known/csaf/provider-metadata.json"
|
||||||
|
client := p.httpClient()
|
||||||
|
req, err := http.NewRequest(http.MethodHead, url, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
res, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
msg := fmt.Sprintf("Fetching provider metadata failed: %s.", err.Error())
|
||||||
|
tc.baseCheck.messages = append(tc.baseCheck.messages, msg)
|
||||||
|
}
|
||||||
|
if res != nil && res.StatusCode != http.StatusOK {
|
||||||
|
msg := fmt.Sprintf("Status: %d (%s).", res.StatusCode, res.Status)
|
||||||
|
tc.baseCheck.messages = append(tc.baseCheck.messages, msg)
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tc *tlsCheck) report(p *processor, domain *Domain) {
|
func (tc *tlsCheck) report(p *processor, domain *Domain) {
|
||||||
|
if len(tc.baseCheck.messages) == 0 {
|
||||||
|
tc.baseCheck.messages = []string{"TLS check worked."}
|
||||||
|
}
|
||||||
tc.baseCheck.report(p, domain)
|
tc.baseCheck.report(p, domain)
|
||||||
// TODO: Implement me!
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rc *redirectsCheck) run(*processor, string) error {
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rc *redirectsCheck) report(p *processor, domain *Domain) {
|
func (rc *redirectsCheck) report(p *processor, domain *Domain) {
|
||||||
keys := make([]string, len(p.redirects))
|
if len(p.redirects) == 0 {
|
||||||
var i int
|
rc.baseCheck.messages = []string{"No redirections found."}
|
||||||
for k := range p.redirects {
|
} else {
|
||||||
keys[i] = k
|
keys := make([]string, len(p.redirects))
|
||||||
i++
|
var i int
|
||||||
|
for k := range p.redirects {
|
||||||
|
keys[i] = k
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
sort.Strings(keys)
|
||||||
|
for i, k := range keys {
|
||||||
|
keys[i] = fmt.Sprintf("Redirect %s: %s", k, p.redirects[k])
|
||||||
|
}
|
||||||
|
rc.baseCheck.messages = keys
|
||||||
}
|
}
|
||||||
sort.Strings(keys)
|
|
||||||
for i, k := range keys {
|
|
||||||
keys[i] = fmt.Sprintf("Redirect %s: %s", k, p.redirects[k])
|
|
||||||
}
|
|
||||||
rc.baseCheck.messages = keys
|
|
||||||
rc.baseCheck.report(p, domain)
|
rc.baseCheck.report(p, domain)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue