KeyDerivationParameters.BuildForSP80056a Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Creates a KeyDerivationParameters object for use in the SP800-56A key derivation function.
public:
static KeyDerivationParameters ^ BuildForSP80056a(IBuffer ^ algorithmId, IBuffer ^ partyUInfo, IBuffer ^ partyVInfo, IBuffer ^ suppPubInfo, IBuffer ^ suppPrivInfo);
static KeyDerivationParameters BuildForSP80056a(IBuffer const& algorithmId, IBuffer const& partyUInfo, IBuffer const& partyVInfo, IBuffer const& suppPubInfo, IBuffer const& suppPrivInfo);
public static KeyDerivationParameters BuildForSP80056a(IBuffer algorithmId, IBuffer partyUInfo, IBuffer partyVInfo, IBuffer suppPubInfo, IBuffer suppPrivInfo);
function buildForSP80056a(algorithmId, partyUInfo, partyVInfo, suppPubInfo, suppPrivInfo)
Public Shared Function BuildForSP80056a (algorithmId As IBuffer, partyUInfo As IBuffer, partyVInfo As IBuffer, suppPubInfo As IBuffer, suppPrivInfo As IBuffer) As KeyDerivationParameters
Parameters
- algorithmId
- IBuffer
Specifies the intended purpose of the derived key.
- partyUInfo
- IBuffer
Contains public information contributed by the initiator.
- partyVInfo
- IBuffer
Contains public information contributed by the responder.
- suppPubInfo
- IBuffer
Contains public information known to both initiator and responder.
- suppPrivInfo
- IBuffer
Contains private information known to both initiator and responder, such as a shared secret.
Returns
Refers to the parameters used during key derivation.
Examples
public void SampleDeriveFromSP80056a()
{
// Create a string that contains the algorithm name.
String strAlgName = KeyDerivationAlgorithmNames.Sp80056aConcatSha512;
// Open the specified algorithm.
KeyDerivationAlgorithmProvider objKdfProv = KeyDerivationAlgorithmProvider.OpenAlgorithm(strAlgName);
// Specify the requested size, in bytes, of the derived key.
UInt32 targetSize = 32;
// Create a buffer that contains the secret to be used during derivation.
IBuffer buffSecret = CryptographicBuffer.GenerateRandom(32);
// Create a buffer that contains the intended purpose of the derived key.
String strAlgId = "Purpose";
IBuffer buffAlgId = CryptographicBuffer.ConvertStringToBinary(strAlgId, BinaryStringEncoding.Utf8);
// Create a buffer that contains public information contributed by the initiator.
String strPartyUInfo = "Initiator public info";
IBuffer buffPartyUInfo = CryptographicBuffer.ConvertStringToBinary(strPartyUInfo, BinaryStringEncoding.Utf8);
// Create a buffer that contains public information contributed by the responder.
String strPartyVInfo = "Responder public info";
IBuffer buffPartyVInfo = CryptographicBuffer.ConvertStringToBinary(strPartyVInfo, BinaryStringEncoding.Utf8);
// Create a buffer that contains public information known to both parties.
String strSuppPubInfo = "Two party public info";
IBuffer buffSuppPubInfo = CryptographicBuffer.ConvertStringToBinary(strSuppPubInfo, BinaryStringEncoding.Utf8);
// Create a buffer that contains a shared private secret.
IBuffer buffSuppPrivInfo = CryptographicBuffer.GenerateRandom(32);
// Create the derivation parameters.
KeyDerivationParameters kdf80056AParamsEx = KeyDerivationParameters.BuildForSP80056a(
buffAlgId,
buffPartyUInfo,
buffPartyVInfo,
buffSuppPubInfo,
buffSuppPrivInfo);
// Create a key from the secret value.
CryptographicKey keyOriginal = objKdfProv.CreateKey(buffSecret);
// Derive a key based on the original key and the derivation parameters.
IBuffer keyDerived = CryptographicEngine.DeriveKeyMaterial(
keyOriginal,
kdf80056AParamsEx,
targetSize);
// Encode the key to a hexadecimal value (for display)
String strKeyHex = CryptographicBuffer.EncodeToHexString(keyDerived);
}
Remarks
You can use the following algorithm names with the OpenAlgorithm function to open a SP80056a KDF algorithm provider:
- KeyDerivationAlgorithmNames.Sp80056aConcatMd5
- KeyDerivationAlgorithmNames.Sp80056aConcatSha1
- KeyDerivationAlgorithmNames.Sp80056aConcatSha256
- KeyDerivationAlgorithmNames.Sp80056aConcatSha384
- KeyDerivationAlgorithmNames.Sp80056aConcatSha512