Skip to content

Commit

Permalink
keyusage.Equals
Browse files Browse the repository at this point in the history
  • Loading branch information
yzp0n committed Dec 26, 2019
1 parent e0eedd4 commit 58dab78
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 0 deletions.
22 changes: 22 additions & 0 deletions keyusage/keyusage.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"crypto/x509"
"errors"
"fmt"
"sort"

"github.com/IPA-CyberLab/kmgm/pb"
)
Expand Down Expand Up @@ -160,3 +161,24 @@ func (p *KeyUsage) UnmarshalFlag(s string) error {
*p = ku
return nil
}

func (a KeyUsage) Equals(b KeyUsage) bool {
if a.KeyUsage != b.KeyUsage {
return false
}
if len(a.ExtKeyUsages) != len(b.ExtKeyUsages) {
return false
}

ekua := append([]x509.ExtKeyUsage{}, a.ExtKeyUsages...)
ekub := append([]x509.ExtKeyUsage{}, b.ExtKeyUsages...)
sort.Slice(ekua, func(i, j int) bool { return ekua[i] < ekua[j] })
sort.Slice(ekub, func(i, j int) bool { return ekub[i] < ekub[j] })
for i := range ekua {
if ekua[i] != ekub[i] {
return false
}
}

return true
}
25 changes: 25 additions & 0 deletions keyusage/keyusage_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package keyusage_test

import (
"testing"

"github.com/IPA-CyberLab/kmgm/keyusage"
)

func TestKeyUsage_Equals(t *testing.T) {
if keyusage.KeyUsageCA.Equals(keyusage.KeyUsageTLSServer) {
t.Errorf("Unexpected: CA == TlsServer")
}
if keyusage.KeyUsageTLSClientServer.Equals(keyusage.KeyUsageTLSServer) {
t.Errorf("Unexpected: cs == s")
}
if keyusage.KeyUsageTLSClient.Equals(keyusage.KeyUsageTLSServer) {
t.Errorf("Unexpected: c == s")
}
if !keyusage.KeyUsageCA.Equals(keyusage.KeyUsageCA) {
t.Errorf("Unexpected: CA != CA")
}
if !keyusage.KeyUsageTLSClientServer.Equals(keyusage.KeyUsageTLSClientServer) {
t.Errorf("Unexpected: cs != cs")
}
}

0 comments on commit 58dab78

Please sign in to comment.