Table of Contents

Interface IFfcKeyAgreement

Namespace
Kdf108
Assembly
Kdf108.dll

SP 800-56A FFC key agreement as an injectable service. Mirrors FfcSchemes; inject it, or construct FfcKeyAgreement directly.

public interface IFfcKeyAgreement

Methods

Ephemeral(FfcEphemeralKeyPair, FfcEphemeralPublicKey)

dhEphem, C(2e, 0s): Z = FFC DH(local ephemeral, remote ephemeral).

byte[] Ephemeral(FfcEphemeralKeyPair localEphemeral, FfcEphemeralPublicKey remoteEphemeral)

Parameters

localEphemeral FfcEphemeralKeyPair
remoteEphemeral FfcEphemeralPublicKey

Returns

byte[]

Hybrid(FfcStaticKeyPair, FfcEphemeralKeyPair, FfcStaticPublicKey, FfcEphemeralPublicKey)

dhHybrid1, C(2e, 2s): Z = Ze || Zs.

byte[] Hybrid(FfcStaticKeyPair localStatic, FfcEphemeralKeyPair localEphemeral, FfcStaticPublicKey remoteStatic, FfcEphemeralPublicKey remoteEphemeral)

Parameters

localStatic FfcStaticKeyPair
localEphemeral FfcEphemeralKeyPair
remoteStatic FfcStaticPublicKey
remoteEphemeral FfcEphemeralPublicKey

Returns

byte[]

HybridOneFlowAsPartyU(FfcStaticKeyPair, FfcEphemeralKeyPair, FfcStaticPublicKey)

dhHybridOneFlow, C(1e, 2s), as party U: Z = DH(U's ephemeral, V's static) || DH(U's static, V's static).

byte[] HybridOneFlowAsPartyU(FfcStaticKeyPair localStatic, FfcEphemeralKeyPair localEphemeral, FfcStaticPublicKey remoteStatic)

Parameters

localStatic FfcStaticKeyPair
localEphemeral FfcEphemeralKeyPair
remoteStatic FfcStaticPublicKey

Returns

byte[]

HybridOneFlowAsPartyV(FfcStaticKeyPair, FfcStaticPublicKey, FfcEphemeralPublicKey)

dhHybridOneFlow, C(1e, 2s), as party V: Z = DH(V's static, U's ephemeral) || DH(V's static, U's static).

byte[] HybridOneFlowAsPartyV(FfcStaticKeyPair localStatic, FfcStaticPublicKey remoteStatic, FfcEphemeralPublicKey remoteEphemeral)

Parameters

localStatic FfcStaticKeyPair
remoteStatic FfcStaticPublicKey
remoteEphemeral FfcEphemeralPublicKey

Returns

byte[]

Mqv1AsPartyU(FfcStaticKeyPair, FfcEphemeralKeyPair, FfcStaticPublicKey)

MQV1, C(1e, 2s), as party U: V's static key stands in for V's ephemeral key.

byte[] Mqv1AsPartyU(FfcStaticKeyPair localStatic, FfcEphemeralKeyPair localEphemeral, FfcStaticPublicKey remoteStatic)

Parameters

localStatic FfcStaticKeyPair
localEphemeral FfcEphemeralKeyPair
remoteStatic FfcStaticPublicKey

Returns

byte[]

Mqv1AsPartyV(FfcStaticKeyPair, FfcStaticPublicKey, FfcEphemeralPublicKey)

MQV1, C(1e, 2s), as party V: V's static key stands in for its own ephemeral key.

byte[] Mqv1AsPartyV(FfcStaticKeyPair localStatic, FfcStaticPublicKey remoteStatic, FfcEphemeralPublicKey remoteEphemeral)

Parameters

localStatic FfcStaticKeyPair
remoteStatic FfcStaticPublicKey
remoteEphemeral FfcEphemeralPublicKey

Returns

byte[]

Mqv2(FfcStaticKeyPair, FfcEphemeralKeyPair, FfcStaticPublicKey, FfcEphemeralPublicKey)

MQV2, C(2e, 2s).

byte[] Mqv2(FfcStaticKeyPair localStatic, FfcEphemeralKeyPair localEphemeral, FfcStaticPublicKey remoteStatic, FfcEphemeralPublicKey remoteEphemeral)

Parameters

localStatic FfcStaticKeyPair
localEphemeral FfcEphemeralKeyPair
remoteStatic FfcStaticPublicKey
remoteEphemeral FfcEphemeralPublicKey

Returns

byte[]

OneFlowAsPartyU(FfcEphemeralKeyPair, FfcStaticPublicKey)

dhOneFlow, C(1e, 1s), as party U: Z = FFC DH(U's ephemeral, V's static).

byte[] OneFlowAsPartyU(FfcEphemeralKeyPair localEphemeral, FfcStaticPublicKey remoteStatic)

Parameters

localEphemeral FfcEphemeralKeyPair
remoteStatic FfcStaticPublicKey

Returns

byte[]

OneFlowAsPartyV(FfcStaticKeyPair, FfcEphemeralPublicKey)

dhOneFlow, C(1e, 1s), as party V: Z = FFC DH(V's static, U's ephemeral).

byte[] OneFlowAsPartyV(FfcStaticKeyPair localStatic, FfcEphemeralPublicKey remoteEphemeral)

Parameters

localStatic FfcStaticKeyPair
remoteEphemeral FfcEphemeralPublicKey

Returns

byte[]

Static(FfcStaticKeyPair, FfcStaticPublicKey)

dhStatic, C(0e, 2s): Z = FFC DH(local static, remote static).

byte[] Static(FfcStaticKeyPair localStatic, FfcStaticPublicKey remoteStatic)

Parameters

localStatic FfcStaticKeyPair
remoteStatic FfcStaticPublicKey

Returns

byte[]