protected override void Read(TlsBuffer incoming) { var length = incoming.ReadByte(); for (int i = 0; i < length; i++) { Parameters.CertificateTypes.Add((ClientCertificateType)incoming.ReadByte()); } if (Protocol == TlsProtocolCode.Tls12) { var length2 = incoming.ReadInt16(); if ((length2 % 2) != 0) { throw new TlsException(AlertDescription.IlegalParameter); } var signatureTypes = new SignatureAndHashAlgorithm [length2 >> 1]; for (int i = 0; i < signatureTypes.Length; i++) { Parameters.SignatureParameters.SignatureAndHashAlgorithms.Add(SignatureHelper.DecodeSignatureAndHashAlgorithm(incoming)); } } var length3 = incoming.ReadInt16(); if (incoming.Remaining != length3) { throw new TlsException(AlertDescription.DecodeError); } /* * Read requested certificate authorities (Distinguised Names) * * Name ::= SEQUENCE OF RelativeDistinguishedName * * RelativeDistinguishedName ::= SET OF AttributeValueAssertion * * AttributeValueAssertion ::= SEQUENCE { * attributeType OBJECT IDENTIFIER * attributeValue ANY * } * */ while (incoming.Remaining > 0) { var rdn = new ASN1(incoming.ReadBytes(incoming.ReadInt16())); Parameters.CertificateAuthorities.Add(X501.ToString(rdn)); } }
public SignatureAlgorithmsExtension(TlsBuffer incoming) { var length = incoming.ReadInt16(); if ((length % 2) != 0) { throw new TlsException(AlertDescription.DecodeError); } SignatureParameters = new SignatureParameters(); var count = length >> 1; for (int i = 0; i < count; i++) { SignatureParameters.SignatureAndHashAlgorithms.Add(SignatureHelper.DecodeSignatureAndHashAlgorithm(incoming)); } }