예제 #1
0
        static String getEntryNameFromIssuer(X509CRL2 crl)
        {
            X500RdnAttributeCollection tokens = crl.IssuerName.GetRdnAttributes();
            String objectName;

            // if subject is empty, calculate SHA1 hash over subject name's raw data (48, 0)
            if (tokens.Count == 0)
            {
                var sb = new StringBuilder();
                using (SHA1 hasher = SHA1.Create()) {
                    foreach (Byte b in hasher.ComputeHash(crl.IssuerName.RawData))
                    {
                        sb.AppendFormat("{0:x2}", b);
                    }
                }
                objectName = sb.ToString();
            }
            else
            {
                objectName = tokens[0].Value;
            }
            var caVersion = (X509CAVersionExtension)crl.Extensions[X509CertExtensions.X509CAVersion];

            if (caVersion == null || caVersion.CAKeyVersion < 1)
            {
                return(objectName);
            }
            return(DsUtils.GetSanitizedName($"{objectName}({caVersion.CAKeyVersion})"));
        }
예제 #2
0
        internal String GetConfigEntry(String entry)
        {
            switch (entry)
            {
            case "CAServerName": return(ComputerName);

            case "ServerShortName": return(ComputerName.Split('.')[0]);

            case "CommonName": return(Name);

            case "CATruncatedName": return(DsUtils.GetSanitizedName(Name));

            case "ConfigurationContainer": return((String)CryptoRegistry.GetRReg("DSConfigDN", Name, ComputerName));

            default: return(String.Empty);
            }
        }
예제 #3
0
        // generates DS object name from X.500 name. If name is empty, an SHA-1 hash value of empty name is used.
        static String generateContainerName(X500DistinguishedName name)
        {
            X500RdnAttributeCollection tokens = name.GetRdnAttributes();

            // if subject is empty, calculate SHA1 hash over subject name's raw data (48, 0)
            if (tokens.Count == 0)
            {
                var sb = new StringBuilder();
                using (SHA1 hasher = SHA1.Create()) {
                    foreach (Byte b in hasher.ComputeHash(name.RawData))
                    {
                        sb.AppendFormat("{0:x2}", b);
                    }
                }
                return(sb.ToString());
            }
            return(DsUtils.GetSanitizedName(tokens[0].Value));
        }
예제 #4
0
        internal String GetConfigEntry(String entry)
        {
            switch (entry)
            {
            case "CAServerName":
                return(ComputerName);

            case "ServerShortName":
                return(ComputerName.Split('.')[0]);

            case "CommonName":
                return(Name);

            case "CATruncatedName":
                return(DsUtils.GetSanitizedName(Name));

            case "ConfigurationContainer":
                _regReader.SetRootNode(true);
                return(_regReader.GetStringEntry("DSConfigDN"));

            default: return(String.Empty);
            }
        }