Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

KeyDerivationParameters.BuildForSP80056a | buildForSP80056a method

Applies to Windows and Windows Phone

Creates a KeyDerivationParameters object for use in the SP800-56A key derivation function.

Syntax


var keyDerivationParameters = Windows.Security.Cryptography.Core.KeyDerivationParameters.buildForSP80056a(algorithmId, partyUInfo, partyVInfo, suppPubInfo, suppPrivInfo);

Parameters

algorithmId

Type: IBuffer

Specifies the intended purpose of the derived key.

partyUInfo

Type: IBuffer

Contains public information contributed by the initiator.

partyVInfo

Type: IBuffer

Contains public information contributed by the responder.

suppPubInfo

Type: IBuffer

Contains public information known to both initiator and responder.

suppPrivInfo

Type: IBuffer

Contains private information known to both initiator and responder, such as a shared secret.

Return value

Type: KeyDerivationParameters

Refers to the parameters used during key derivation.

Remarks

You can use the following algorithm names with the OpenAlgorithm function to open a SP80056a KDF algorithm provider:

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);
}


Requirements

Minimum supported client

Windows 8

Minimum supported server

Windows Server 2012

Minimum supported phone

Windows Phone 8.1 [Windows Runtime apps only]

Namespace

Windows.Security.Cryptography.Core
Windows::Security::Cryptography::Core [C++]

Metadata

Windows.winmd

See also

KeyDerivationParameters

 

 

Show:
© 2014 Microsoft. All rights reserved.