예제 #1
0
        public ISecretKeyingMaterial Build(KasScheme scheme, KasMode kasMode, KeyAgreementRole thisPartyKeyAgreementRole,
                                           KeyConfirmationRole keyConfirmationRole, KeyConfirmationDirection keyConfirmationDirection)
        {
            var schemeRequirements = KasEnumMapping.GetSchemeRequirements(
                scheme,
                kasMode,
                thisPartyKeyAgreementRole,
                keyConfirmationRole,
                keyConfirmationDirection);

            ValidateDomainParameters(schemeRequirements.requirments, _domainParameters);
            ValidateEphemeralKey(schemeRequirements.requirments, _ephemeralKey);
            ValidateStaticKey(schemeRequirements.requirments, _staticKey);
            ValidateEphemeralNonce(schemeRequirements.requirments, _ephemeralNonce);
            ValidateDkmNonce(schemeRequirements.requirments, _dkmNonce);
            ValidatePartyId(schemeRequirements.requirments, _partyId);
            ValidateConsistentAlgorithm(schemeRequirements.kasAlgo, schemeRequirements.requirments, _domainParameters, _ephemeralKey, _staticKey);

            return(new SecretKeyingMaterial()
            {
                KasAlgorithm = schemeRequirements.kasAlgo,
                DkmNonce = _dkmNonce,
                DomainParameters = _domainParameters,
                EphemeralNonce = _ephemeralNonce,
                EphemeralKeyPair = _ephemeralKey,
                StaticKeyPair = _staticKey,
                PartyId = _partyId,
            });
        }
예제 #2
0
 public SchemeParameters(
     KasAlgoAttributes kasAlgoAttributes,
     KeyAgreementRole keyAgreementRole,
     KasMode kasMode,
     KeyConfirmationRole keyConfirmationRole,
     KeyConfirmationDirection keyConfirmationDirection,
     KasAssurance kasAssurances,
     BitString thisPartyId
     ) : base(kasAlgoAttributes, keyAgreementRole, kasMode, keyConfirmationRole, keyConfirmationDirection, kasAssurances, thisPartyId)
 {
     KasAlgorithm = KasEnumMapping.GetSchemeRequirements(
         kasAlgoAttributes.KasScheme,
         kasMode,
         keyAgreementRole,
         keyConfirmationRole,
         keyConfirmationDirection).kasAlgo;
 }