From 70bba16c8236918f655eda9636f45f6fddca3b43 Mon Sep 17 00:00:00 2001 From: Jesse Coretta <{ID}+{username}@users.noreply.github.com> Date: Sun, 8 Sep 2024 04:13:21 -0700 Subject: [PATCH] pending release --- README.md | 4 +- cache.go | 2 +- cache_test.go | 11 ++-- cfg.go | 2 +- cfg_test.go | 2 +- def.go | 4 +- gs.go | 151 +++++++++++++++++++++++++------------------------- gs_test.go | 69 ++++++++++++----------- reg.go | 12 ++-- reg_test.go | 2 +- util.go | 10 ++-- x660.go | 22 ++++---- x667.go | 4 +- x680.go | 4 +- x690.go | 2 +- 15 files changed, 150 insertions(+), 151 deletions(-) diff --git a/README.md b/README.md index 9024628..e3d89e1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # go-radir -[![Go Report Card](https://goreportcard.com/badge/github.com/oid-directory/go-radir)](https://goreportcard.com/report/github.com/oid-directory/go-radir) [![Go Reference](https://pkg.go.dev/github.com/oid-directory/go-radir?status.svg)](https://pkg.go.dev/github.com/oid-directory/go-radir) ![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square) +[![Go Report Card](https://goreportcard.com/badge/github.com/oid-directory/go-radir)](https://goreportcard.com/report/github.com/oid-directory/go-radir) [![Go Reference](https://pkg.go.dev/badge/github.com/oid-directory/go-radir.svg)](https://pkg.go.dev/github.com/oid-directory/go-radir) ![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square) ![Volatility Warning](https://img.shields.io/badge/volatile-darkred?label=%F0%9F%92%A5&labelColor=white&color=orange&cacheSeconds=86400) Package radir implements subsets of the OID Directory I-D series. See the package documentation by way of the above Go Reference badge. This package, and the documents of its origin, are EXPERIMENTAL and should not be used in production environments. + +This package is in its infancy and is quite volatile. Breaking changes are likely. diff --git a/cache.go b/cache.go index 2b316d9..ce6027d 100644 --- a/cache.go +++ b/cache.go @@ -615,7 +615,7 @@ Note that this method is immutable, and will not honor any frozen state or mutex lock. */ func (r *Cache) Free() { - *r = Cache{} + *r = Cache{} } /* diff --git a/cache_test.go b/cache_test.go index 4bded93..fe51325 100644 --- a/cache_test.go +++ b/cache_test.go @@ -103,7 +103,7 @@ func TestCache_codecov(t *testing.T) { r.X680().SetASN1Notation(`{joint-iso-itu-t(2) asn1(1)}`) r.X680().SetDotNotation(`2.1`) r.X680().SetIRI(`/ASN.1`) - r.X660().SetLongArc(`/ASN.1`) + r.X660().SetLongArc(`/ASN.1`) r.X660().LongArc() var c *Cache @@ -231,15 +231,14 @@ func init() { courtney.FirstAuthority().SetCN("Courtney Tolana") courtney.FirstAuthority().SetO("Individual") - - limited := NewCache(1,1) + limited := NewCache(1, 1) limited.Add(threeDee, 0) limited.Add(threeDee, 1) limited.Add(twoDee, 0) limited.Add(twoDee, 1) - limited.Add(jesse,1) - limited.Add(courtney,0) - limited.Add(courtney,1) + limited.Add(jesse, 1) + limited.Add(courtney, 0) + limited.Add(courtney, 1) myCache.Add(nil, -1) myCache.Add(threeDee, 0) diff --git a/cfg.go b/cfg.go index 5d1fd66..6190bc3 100644 --- a/cfg.go +++ b/cfg.go @@ -878,7 +878,7 @@ func (r *DITProfile) NewRegistration(root ...bool) *Registration { return &Registration{ R_OC: oc, R_DITProfile: r, - r_root: new(registeredRoot), + r_root: new(registeredRoot), } } diff --git a/cfg_test.go b/cfg_test.go index b129eea..467b394 100644 --- a/cfg_test.go +++ b/cfg_test.go @@ -134,7 +134,7 @@ func TestDITProfile_codecov(t *testing.T) { return nil }) ex := *myDedicatedProfile - ex.R_DN = `adn` + ex.R_DN = `a_dn` ex.R_OC = []string{`top`, `other`} X := &ex X.LDIF() diff --git a/def.go b/def.go index 3741163..d49d225 100644 --- a/def.go +++ b/def.go @@ -22,13 +22,13 @@ as follows: */ const ( OIDPrefix = `1.3.6.1.4.1.56521.101` - IRIPrefix = `/ISO/Identified-Organization/6/1/4/1/56521/101` + IRIPrefix = `/ISO/Identified-Organization/6/1/4/1/56521/101` AttributeTypesOIDPrefix = OIDPrefix + `.2.3` ObjectClassesOIDPrefix = OIDPrefix + `.2.5` NameFormsOIDPrefix = OIDPrefix + `.2.7` TwoDimensional = OIDPrefix + `.3.1.2` ThreeDimensional = OIDPrefix + `.3.1.3` - ASN1Prefix = `{iso identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 56521 oid-directory(101)}` + ASN1Prefix = `{iso identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 56521 oid-directory(101)}` ) /* diff --git a/gs.go b/gs.go index 3cf8aac..c484642 100644 --- a/gs.go +++ b/gs.go @@ -106,7 +106,7 @@ func ASN1NotationToMulti(input string) ([]string, error) { slices[0] = rnanf if len(slices) == 1 { - return []string{`{`+rnanf+`}`, ``, rid, rnanf, root}, nil + return []string{`{` + rnanf + `}`, ``, rid, rnanf, root}, nil } // append root number form to dot @@ -140,7 +140,7 @@ func ASN1NotationToMulti(input string) ([]string, error) { dot = append(dot, n) } - return []string{`{`+join(slices,` `)+`}`, join(dot, `.`), ident, nanf, nf}, nil + return []string{`{` + join(slices, ` `) + `}`, join(dot, `.`), ident, nanf, nf}, nil } func checkASN1Root(slice string) (root, rid, rnanf string, err error) { @@ -400,19 +400,19 @@ func DotNotToDN2D(args ...any) (dn any, err error) { return } - // Grab our DITProfile instance if defined, else throw - // an error. This is required because we need to know - // the reg. base string value as well as the directory - // model in use. - var duaConf *DITProfile = r.DITProfile() - // We want at least one Registration Base - // and our model MUST be 3D. Return error - // value otherwise. - if !duaConf.Valid() || duaConf.Model() != TwoDimensional { - err = DUAConfigValidityErr - return - } - + // Grab our DITProfile instance if defined, else throw + // an error. This is required because we need to know + // the reg. base string value as well as the directory + // model in use. + var duaConf *DITProfile = r.DITProfile() + // We want at least one Registration Base + // and our model MUST be 3D. Return error + // value otherwise. + if !duaConf.Valid() || duaConf.Model() != TwoDimensional { + err = DUAConfigValidityErr + return + } + // store the original OID here, as we'll // just slap it on our composite DN later. var O string @@ -466,11 +466,11 @@ func DNToDotNot2D(args ...any) (id any, err error) { return } - r, ok := args[1].(*X680) - if !ok { - err = NilRegistrationErr - return - } + r, ok := args[1].(*X680) + if !ok { + err = NilRegistrationErr + return + } var D string switch tv := args[0].(type) { @@ -484,24 +484,24 @@ func DNToDotNot2D(args ...any) (id any, err error) { return } - // Grab our DITProfile instance if defined, else throw - // an error. This is required because we need to know - // the reg. base string value as well as the directory - // model in use. - var duaConf *DITProfile = r.DITProfile() - // We want at least one Registration Base - // and our model MUST be 3D. Return error - // value otherwise. - if !duaConf.Valid() || duaConf.Model() != TwoDimensional { - err = DUAConfigValidityErr - return - } - - bidx := duaConf.RegistrationSuffixEqual(D) - if bidx == -1 { - err = InvalidDNErr - return - } + // Grab our DITProfile instance if defined, else throw + // an error. This is required because we need to know + // the reg. base string value as well as the directory + // model in use. + var duaConf *DITProfile = r.DITProfile() + // We want at least one Registration Base + // and our model MUST be 3D. Return error + // value otherwise. + if !duaConf.Valid() || duaConf.Model() != TwoDimensional { + err = DUAConfigValidityErr + return + } + + bidx := duaConf.RegistrationSuffixEqual(D) + if bidx == -1 { + err = InvalidDNErr + return + } var N string if idx := idxRune(D, ','); idx != -1 { @@ -558,18 +558,18 @@ func DotNotToDN3D(args ...any) (dn any, err error) { return } - // Grab our DITProfile instance if defined, else throw - // an error. This is required because we need to know - // the reg. base string value as well as the directory - // model in use. - var duaConf *DITProfile = r.DITProfile() - // We want at least one Registration Base - // and our model MUST be 3D. Return error - // value otherwise. - if !duaConf.Valid() || duaConf.Model() != ThreeDimensional { - err = DUAConfigValidityErr - return - } + // Grab our DITProfile instance if defined, else throw + // an error. This is required because we need to know + // the reg. base string value as well as the directory + // model in use. + var duaConf *DITProfile = r.DITProfile() + // We want at least one Registration Base + // and our model MUST be 3D. Return error + // value otherwise. + if !duaConf.Valid() || duaConf.Model() != ThreeDimensional { + err = DUAConfigValidityErr + return + } var D []string // store a portion of the original dotNotation @@ -625,34 +625,34 @@ See also [this gist]. [Section 3.1.3 of the RADIT I-D]: https://datatracker.ietf.org/doc/html/draft-coretta-oiddir-radit#section-3.1.3 */ func DNToDotNot3D(args ...any) (id any, err error) { - if len(args) < 2 { - err = NilArgumentsErr - return - } - - r, ok := args[1].(*X680) - if !ok { - err = NilRegistrationErr - return - } - - // Grab our DITProfile instance if defined, else throw + if len(args) < 2 { + err = NilArgumentsErr + return + } + + r, ok := args[1].(*X680) + if !ok { + err = NilRegistrationErr + return + } + + // Grab our DITProfile instance if defined, else throw // an error. This is required because we need to know // the reg. base string value as well as the directory - // model in use. - var duaConf *DITProfile = r.DITProfile() - // We want at least one Registration Base - // and our model MUST be 3D. Return error - // value otherwise. - if !duaConf.Valid() || duaConf.Model() != ThreeDimensional { - err = DUAConfigValidityErr - return - } - - // Make sure input args[0] type is supported, else bail. + // model in use. + var duaConf *DITProfile = r.DITProfile() + // We want at least one Registration Base + // and our model MUST be 3D. Return error + // value otherwise. + if !duaConf.Valid() || duaConf.Model() != ThreeDimensional { + err = DUAConfigValidityErr + return + } + + // Make sure input args[0] type is supported, else bail. var D string - switch tv := args[0].(type) { - case string: + switch tv := args[0].(type) { + case string: D = lc(tv) default: err = UnsupportedInputTypeErr @@ -685,4 +685,3 @@ func DNToDotNot3D(args ...any) (id any, err error) { return } - diff --git a/gs_test.go b/gs_test.go index 3480bec..c6b586b 100644 --- a/gs_test.go +++ b/gs_test.go @@ -27,41 +27,41 @@ func TestASN1NotationToMulti(t *testing.T) { func TestGS_codecov(t *testing.T) { ditp2 := &DITProfile{ - R_Model: TwoDimensional, - R_RegBase: []string{`ou=Registrations,o=rA`}, - } + R_Model: TwoDimensional, + R_RegBase: []string{`ou=Registrations,o=rA`}, + } ditp3 := &DITProfile{ - R_Model: ThreeDimensional, - R_RegBase: []string{`ou=Registrations,o=rA`}, - } + R_Model: ThreeDimensional, + R_RegBase: []string{`ou=Registrations,o=rA`}, + } twoDc := &Registration{R_DITProfile: ditp2} _, _ = DNToDotNot3D() - _, _ = DNToDotNot3D(nil,&X667{}) - _, _ = DNToDotNot3D(nil,&X680{r_DITProfile: ditp3}) - _, _ = DNToDotNot3D([]string{},&X680{r_DITProfile: ditp3}) - _, _ = DNToDotNot3D(``,&X680{r_DITProfile: ditp2}) - _, _ = DNToDotNot3D(`ou=Fake,dc=example,dc=com`,&X680{r_DITProfile: ditp3}) - _, _ = DNToDotNot3D(`dotNotation=Xdc=exampledc=com`,&X680{r_DITProfile: ditp3}) - _, _ = DNToDotNot3D(`n=56521,1,n=4,n=1,6,3,n=1,ou=Registrationso=rA`,&X680{r_DITProfile: ditp3}) - _, _ = DNToDotNot3D(`n=56521,1,n=4,n=1,6,3,n=1,ou=Registrations,o=rA`,&X680{r_DITProfile: ditp3}) - _, _ = DNToDotNot3D(`n=,ou=Registrations,o=rA`,&X680{r_DITProfile: ditp3}) - _, _ = DNToDotNot3D(`,ou=Registrations,o=rA`,&X680{r_DITProfile: ditp3}) + _, _ = DNToDotNot3D(nil, &X667{}) + _, _ = DNToDotNot3D(nil, &X680{r_DITProfile: ditp3}) + _, _ = DNToDotNot3D([]string{}, &X680{r_DITProfile: ditp3}) + _, _ = DNToDotNot3D(``, &X680{r_DITProfile: ditp2}) + _, _ = DNToDotNot3D(`ou=Fake,dc=example,dc=com`, &X680{r_DITProfile: ditp3}) + _, _ = DNToDotNot3D(`dotNotation=Xdc=exampledc=com`, &X680{r_DITProfile: ditp3}) + _, _ = DNToDotNot3D(`n=56521,1,n=4,n=1,6,3,n=1,ou=Registrationso=rA`, &X680{r_DITProfile: ditp3}) + _, _ = DNToDotNot3D(`n=56521,1,n=4,n=1,6,3,n=1,ou=Registrations,o=rA`, &X680{r_DITProfile: ditp3}) + _, _ = DNToDotNot3D(`n=,ou=Registrations,o=rA`, &X680{r_DITProfile: ditp3}) + _, _ = DNToDotNot3D(`,ou=Registrations,o=rA`, &X680{r_DITProfile: ditp3}) _, _ = DNToDotNot2D() - _, _ = DNToDotNot2D(nil,&X667{}) - _, _ = DNToDotNot2D(nil,&X680{r_DITProfile: ditp2}) - _, _ = DNToDotNot2D([]string{},&X680{r_DITProfile: ditp2}) - _, _ = DNToDotNot2D(``,&X680{r_DITProfile: ditp3}) - _, _ = DNToDotNot2D(`ou=Fake,dc=example,dc=com`,&X680{r_DITProfile: ditp2}) - _, _ = DNToDotNot2D(`dotNotation=Xdc=exampledc=com`,&X680{r_DITProfile: ditp2}) - _, _ = DNToDotNot2D(`dotRotation=X,ou=Registrations,o=rA`,&X680{r_DITProfile: ditp2}) - _, _ = DNToDotNot2D(`dotnotation=X,ou=Registrationso=rA`,&X680{r_DITProfile: ditp2}) - _, _ = DNToDotNot2D(`,ou=Registrations,o=rA`,&X680{r_DITProfile: ditp2}) - _, _ = DNToDotNot2D(`dotRotation=X,ou=Registrations,o=rA`,&X680{r_DITProfile: ditp2}) + _, _ = DNToDotNot2D(nil, &X667{}) + _, _ = DNToDotNot2D(nil, &X680{r_DITProfile: ditp2}) + _, _ = DNToDotNot2D([]string{}, &X680{r_DITProfile: ditp2}) + _, _ = DNToDotNot2D(``, &X680{r_DITProfile: ditp3}) + _, _ = DNToDotNot2D(`ou=Fake,dc=example,dc=com`, &X680{r_DITProfile: ditp2}) + _, _ = DNToDotNot2D(`dotNotation=Xdc=exampledc=com`, &X680{r_DITProfile: ditp2}) + _, _ = DNToDotNot2D(`dotRotation=X,ou=Registrations,o=rA`, &X680{r_DITProfile: ditp2}) + _, _ = DNToDotNot2D(`dotnotation=X,ou=Registrationso=rA`, &X680{r_DITProfile: ditp2}) + _, _ = DNToDotNot2D(`,ou=Registrations,o=rA`, &X680{r_DITProfile: ditp2}) + _, _ = DNToDotNot2D(`dotRotation=X,ou=Registrations,o=rA`, &X680{r_DITProfile: ditp2}) _, _ = DotNotToDN2D(nil) - _, _ = DotNotToDN2D(nil,&X680{}) - _, _ = DotNotToDN2D(nil,&Registration{}) + _, _ = DotNotToDN2D(nil, &X680{}) + _, _ = DotNotToDN2D(nil, &Registration{}) _, _ = DotNotToDN2D(rune(10), twoDc) _, _ = DotNotToDN2D(`1.2.X`, twoDc) _, _ = DotNotToDN3D() @@ -130,7 +130,7 @@ func TestGS_codecov(t *testing.T) { writeString(`cn`, `hi`, valOf(rune(13))) writeValue(nil, nil, `n`) var nothing any = `4` - writeValue(&struct{ + writeValue(&struct { n *any `ldap:"n"` }{ n: ¬hing, @@ -150,12 +150,12 @@ func TestGS_codecov(t *testing.T) { func TestTime_codecov(t *testing.T) { var ts []any = []any{ `20010718155634-0600.019283Z`, - `20010718155634.019283432Z`, + `20010718155634.019283432Z`, nil, 13, - `200`, - ``, - `0600.0192834378297`, + `200`, + ``, + `0600.0192834378297`, } for _, thyme := range ts { @@ -177,7 +177,7 @@ func TestTime_codecov(t *testing.T) { return } - if _, err := GeneralizedTimeToTime([]string{`1`,`2`,`3`}); err == nil { + if _, err := GeneralizedTimeToTime([]string{`1`, `2`, `3`}); err == nil { t.Errorf("%s failed: expected error, got nothing", t.Name()) return } @@ -197,4 +197,3 @@ func TestTime_codecov(t *testing.T) { return } } - diff --git a/reg.go b/reg.go index 4fa7052..50ac08b 100644 --- a/reg.go +++ b/reg.go @@ -36,12 +36,12 @@ this registration. It is populated through subsequent X.680 input, and will (likely) be queried at any point by other constructs, such as X.660. */ type registeredRoot struct { - Depth int // 0 = root, >=1 sub arc (default: -1) - N int // 0, 1 or 2 (default: -1) - Id string // identifier (name) of root - NaNF string // nameAndNumberForm ("Id(N)") of root - Structural string // rootArc or arc - Auxiliary string // iTUTRegistration, iSORegistration or jointISOITUTRegistration + Depth int // 0 = root, >=1 sub arc (default: -1) + N int // 0, 1 or 2 (default: -1) + Id string // identifier (name) of root + NaNF string // nameAndNumberForm ("Id(N)") of root + Structural string // rootArc or arc + Auxiliary string // iTUTRegistration, iSORegistration or jointISOITUTRegistration } /* diff --git a/reg_test.go b/reg_test.go index fb65c8e..e6b5424 100644 --- a/reg_test.go +++ b/reg_test.go @@ -51,7 +51,7 @@ func ExampleRegistration_Root_arc() { func ExampleX680_Depth() { reg := myDedicatedProfile.NewRegistration() - reg.X680().SetASN1Notation(ASN1Prefix) // use I-D prefix for simplicity + reg.X680().SetASN1Notation(ASN1Prefix) // use I-D prefix for simplicity fmt.Println(reg.X680().Depth()) // Output: 8 } diff --git a/util.go b/util.go index 1fe1fe1..99ce049 100644 --- a/util.go +++ b/util.go @@ -490,10 +490,10 @@ func writeBigInt(tag string, v *big.Int, fieldValue reflect.Value) (err error) { Perform special pre-write checks to ensure sanity and compliance. */ func writeEligible(tag string, value, instance any) (err error) { - switch tv := instance.(type) { - case *X660: - err = tv.writeEligible(tag, value) - } + switch tv := instance.(type) { + case *X660: + err = tv.writeEligible(tag, value) + } return } @@ -604,7 +604,7 @@ func specialHandling(tag string, value, instance any) { func dotJoin(sp []string) (dot string) { if len(sp) > 0 { - dot = join(sp,`.`) + dot = join(sp, `.`) } return diff --git a/x660.go b/x660.go index c64197f..24ceea0 100644 --- a/x660.go +++ b/x660.go @@ -26,7 +26,7 @@ type X660 struct { R_AddlUV []string `ldap:"additionalUnicodeValue"` // RASCHEMA § 2.3.6 R_SecId []string `ldap:"secondaryIdentifier"` // RASCHEMA § 2.3.8 R_StdNF []string `ldap:"standardizedNameForm"` // RASCHEMA § 2.3.18 - R_LongArc []string `ldap:"longArc"` // RASCHEMA § 2.3.20 + R_LongArc []string `ldap:"longArc"` // RASCHEMA § 2.3.20 // NON-COLLECTIVE DEDICATED entry DNs R_FAuthyDN []string `ldap:"firstAuthority"` // RASCHEMA § 2.3.54 @@ -44,7 +44,7 @@ type X660 struct { R_CSAuthy *Sponsor // RASCHEMA § 2.3.76-93 r_DITProfile *DITProfile - r_root *registeredRoot // linked from *Registration during init + r_root *registeredRoot // linked from *Registration during init } /* @@ -150,13 +150,13 @@ registration is considered illegal. [longArc]: https://datatracker.ietf.org/doc/html/draft-coretta-oiddir-schema#section-2.3.20 */ func (r *X660) LongArc() (larc []string) { - if !r.IsZero () { + if !r.IsZero() { if r.r_root.Depth > 1 && r.r_root.N == 2 { - larc = r.R_LongArc + larc = r.R_LongArc } - } + } - return + return } /* @@ -164,7 +164,7 @@ SetLongArc assigns one or more string long arc values to the receiver instance. Note that if a slice is passed as X, the destination value will be clobbered. */ func (r *X660) SetLongArc(args ...any) error { - return writeFieldByTag(`longArc`, r.SetLongArc, r, args...) + return writeFieldByTag(`longArc`, r.SetLongArc, r, args...) } /* @@ -173,7 +173,7 @@ provided [GetOrSetFunc] instance, returning an interface value alongside an error. */ func (r *X660) LongArcGetFunc(getfunc GetOrSetFunc) (any, error) { - return getFieldValueByNameTagAndGoSF(r, getfunc, `longArc`) + return getFieldValueByNameTagAndGoSF(r, getfunc, `longArc`) } /* @@ -571,12 +571,12 @@ func (r *X660) CombinedSponsor() *Sponsor { // Ensure certain values are permitted to be set func (r *X660) writeEligible(tag string, value any) (err error) { - switch lc(tag) { - case `longarc`: + switch lc(tag) { + case `longarc`: if !(r.r_root.Depth > 1 && r.r_root.N == 2) { err = LongArcErr } - } + } return } diff --git a/x667.go b/x667.go index b537fc9..e11842e 100644 --- a/x667.go +++ b/x667.go @@ -16,10 +16,10 @@ Instances of this type need not be initialized by the user directly. [ITU-T Rec. X.667]: https://www.itu.int/rec/T-REC-X.667 */ type X667 struct { - R_UUID string `ldap:"registeredUUID"` // RASCHEMA § 2.3.102 + R_UUID string `ldap:"registeredUUID"` // RASCHEMA § 2.3.102 r_DITProfile *DITProfile - r_root *registeredRoot + r_root *registeredRoot } /* diff --git a/x680.go b/x680.go index 233271e..70b8892 100644 --- a/x680.go +++ b/x680.go @@ -27,7 +27,7 @@ type X680 struct { R_NaNF string `ldap:"nameAndNumberForm"` // RASCHEMA § 2.3.19 R_IRI []string `ldap:"iRI"` // RASCHEMA § 2.3.3 r_DITProfile *DITProfile - r_root *registeredRoot + r_root *registeredRoot } /* @@ -332,7 +332,7 @@ func (r *X680) dotNotationHandler(dot string) { } if structEmpty(r.r_root) { - if n := getRoot(rune(spl[0][0])); (0 <= n && n <= 2) { + if n := getRoot(rune(spl[0][0])); 0 <= n && n <= 2 { r.r_root.N = n r.r_root.Depth = len(spl) } diff --git a/x690.go b/x690.go index ea47a01..974350f 100644 --- a/x690.go +++ b/x690.go @@ -18,7 +18,7 @@ Instances of this type need not be initialized by the user directly. type X690 struct { R_DotEnc string `ldap:"dotEncoding"` // RASCHEMA § 2.3.103 r_DITProfile *DITProfile - r_root *registeredRoot + r_root *registeredRoot } /*