You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: pkix.go
    path of file: ./repos/scan4all/vendor/github.com/zmap/zcrypto/x509/pkix
    
    the code of the file until where you have to start completion: // Copyright 2011 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 pkix contains shared, low level structures used for ASN.1 parsing
// and serialization of X.509 certificates, CRL and OCSP.
package pkix

import (
	"encoding/hex"
	"fmt"
	"math/big"
	"time"

	"github.com/zmap/zcrypto/encoding/asn1"
)

// LegacyNameString allows to specify legacy ZCrypto behaviour
// for X509Name.String() in reverse order
var LegacyNameString = false

// AlgorithmIdentifier represents the ASN.1 structure of the sam
    
func (n *Name) FillFromRDNSequence(rdns *RDNSequence) {
	n.OriginalRDNS = *rdns
	for _, rdn := range *rdns {
		if len(rdn) == 0 {
			continue
		}

		for _, atv := range rdn {
			n.Names = append(n.Names, atv)
			value, ok := atv.Value.(string)
			if !ok {
				continue
			}

			t := atv.Type
			if len(t) == 4 && t[0] == 2 && t[1] == 5 && t[2] == 4 {
				switch t[3] {
				case 3:
					n.CommonName = value
					n.CommonNames = append(n.CommonNames, value)
				case 4:
					n.Surname = append(n.Surname, value)
				case 5:
					n.SerialNumber = value
					n.SerialNumbers = append(n.SerialNumbers, value)
				case 6:
					n.Country = append(n.Country, value)
				case 7:
					n.Locality = append(n.Locality, value)
				case 8:
					n.Province = append(n.Province, value)
				case 9:
					n.StreetAddress = append(n.StreetAddress, value)
				case 10:
					n.Organization = append(n.Organization, value)
				case 11:
					n.OrganizationalUnit = append(n.OrganizationalUnit, value)
				case 17:
					n.PostalCode = append(n.PostalCode, value)
				case 42:
					n.GivenName = append(n.GivenName, value)
				case 97:
					n.OrganizationIDs = append(n.OrganizationIDs, value)
				}
			} else if t.Equal(oidDomainComponent) {
				n.DomainComponent = append(n.DomainComponent, value)
			} else if t.Equal(oidDNEmailAddress) {
				// Deprecated, see RFC 5280 Section 4.1.2.6
				n.EmailAddress = append(n.EmailAddress, value)
			} else if t.Equal(oidJurisdictionLocality) {
				n.JurisdictionLocality = append(n.JurisdictionLocality, value)
			} else if t.Equal(oidJurisdictionProvince) {
				n.JurisdictionProvince = append(n.JurisdictionProvince, value)
			} else if t.Equal(oidJurisdictionCountry) {
				n.JurisdictionCountry = append(n.JurisdictionCountry, value)
			}
		}
	}
}