SQL Server
SQL Server
Subject Alternative Name for ICP Brasil Certs
See more Certificates Examples
Demonstrates how to access the multiple names contained in the Subject Alternative Name of a certificate. This example is for an ICP Brasil certificate.Chilkat SQL Server Downloads
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
-- Important: Do not use nvarchar(max). See the warning about using nvarchar(max).
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
DECLARE @cert int
EXEC @hr = sp_OACreate 'Chilkat.Cert', @cert OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
EXEC sp_OAMethod @cert, 'LoadFromFile', @success OUT, 'qa_data/certs/testIcpBrasil.cer'
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @cert, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @cert
RETURN
END
-- If the cert's Subject Alternative Name contains multiple values, each specified by an OID,
-- then the Rfc822Name property returns XML.
DECLARE @subjectAltNameXml nvarchar(4000)
EXEC sp_OAGetProperty @cert, 'Rfc822Name', @subjectAltNameXml OUT
PRINT @subjectAltNameXml
-- Here's a sample of the subjectAltNameXml:
-- <SubjectAltName>
-- <name type="oid" oid="2.16.76.1.3.4">290999653223955019700000000000000000000150424SRJUXPTS</name>
-- <name type="oid" oid="2.16.76.1.3.2">JOAO SILVA</name>
-- <name type="oid" oid="2.16.76.1.3.3">02408939000115</name>
-- <name type="oid" oid="2.16.76.1.3.7">000000000000</name>
-- </SubjectAltName>
-- The XML can be parsed like this:
DECLARE @xml int
EXEC @hr = sp_OACreate 'Chilkat.Xml', @xml OUT
EXEC sp_OAMethod @xml, 'LoadXml', @success OUT, @subjectAltNameXml
DECLARE @oid nvarchar(4000)
DECLARE @name nvarchar(4000)
DECLARE @i int
SELECT @i = 0
DECLARE @count_i int
EXEC sp_OAMethod @xml, 'NumChildrenHavingTag', @count_i OUT, 'name'
WHILE @i < @count_i
BEGIN
EXEC sp_OASetProperty @xml, 'I', @i
EXEC sp_OAMethod @xml, 'ChilkatPath', @oid OUT, 'name[i]|(oid)'
EXEC sp_OAMethod @xml, 'GetChildContent', @name OUT, 'name[i]'
PRINT @oid + ': ' + @name
SELECT @i = @i + 1
END
EXEC @hr = sp_OADestroy @cert
EXEC @hr = sp_OADestroy @xml
END
GO