SQL Server
SQL Server
Cache a DKIM Public Key from a String
See more DKIM / DomainKey Examples
Demonstrates the Chilkat Dkim.LoadPublicKey method, which caches an RSA public key for a specific selector and domain. The arguments are the selector, the domain, and the public key as a string (PEM, or the base64 p= value from the DNS record).
Background: By default
DkimVerify fetches the public key from DNS, but caching it in advance is useful when DNS is unavailable, when you want deterministic offline verification (in tests, for example), or to avoid repeated lookups. The cache is keyed on the exact selector and domain strings, so they must match the signature's s= and d= tags for the cached key to be used; otherwise verification falls back to DNS.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
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
-- Demonstrates the Dkim.LoadPublicKey method, which caches an RSA public key for a specific
-- selector and domain. The 1st argument is the selector, the 2nd is the domain, and the 3rd is
-- the public key (as a string).
DECLARE @dkim int
EXEC @hr = sp_OACreate 'Chilkat.Dkim', @dkim OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
-- The public key as a string. This can be PEM, or the base64 p= value from the DNS TXT record.
DECLARE @publicKey nvarchar(4000)
SELECT @publicKey = '-----BEGIN PUBLIC KEY-----' + CHAR(10) + 'MIIBIjANBgkq...IDAQAB' + CHAR(10) + '-----END PUBLIC KEY-----'
-- Cache the key under the exact selector and domain. A later DkimVerify uses this cached key
-- when the signature's selector and domain match, instead of doing a DNS lookup.
EXEC sp_OAMethod @dkim, 'LoadPublicKey', @success OUT, 'myselector', 'example.com', @publicKey
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @dkim, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @dkim
RETURN
END
PRINT 'Public key cached.'
EXEC @hr = sp_OADestroy @dkim
END
GO