public override int Encode(Asn1BerEncodeBuffer buffer, bool explicitTagging) { var len = 0; if (Ukm.Length != 8) { throw ExceptionUtility.CryptographicException(Resources.Asn1ConsVioException, "Ukm.Length", Ukm.Length); } len += Ukm.Encode(buffer, true); if (EphemeralPublicKey != null) { var epkLength = EphemeralPublicKey.Encode(buffer, false); len += epkLength; len += buffer.EncodeTagAndLength(0x80, 0x20, EocTypeCode, epkLength); } len += EncryptionParamSet.Encode(buffer, true); if (explicitTagging) { len += buffer.EncodeTagAndLength(Asn1Tag.Sequence, len); } return(len); }
public override int Encode(Asn1BerEncodeBuffer buffer, bool explicitTagging) { int _aal = 0, len; // encode ukm if (!(ukm.Length == 8)) { throw new Exception("Asn1ConsVioException (ukm.Length, ukm.Length)"); } len = ukm.Encode(buffer, true); _aal += len; // encode ephemeralPublicKey if (ephemeralPublicKey != null) { len = ephemeralPublicKey.Encode(buffer, false); _aal += len; _aal += buffer.EncodeTagAndLength(Asn1Tag.CTXT, Asn1Tag.CONS, 0, len); } // encode encryptionParamSet len = encryptionParamSet.Encode(buffer, true); _aal += len; if (explicitTagging) { _aal += buffer.EncodeTagAndLength(Asn1Tag.Sequence, _aal); } return(_aal); }