decode delegated_credential extension

This commit is contained in:
nervuri 2023-09-26 08:22:34 +00:00
parent 3b852c0669
commit b1e820afcf
3 changed files with 21 additions and 2 deletions

View File

@ -274,6 +274,22 @@ func (m *ClientHelloMsg) Unmarshal(data []byte) bool {
extension.Data.SupportedSignatureAlgorithms = append(
extension.Data.SupportedSignatureAlgorithms, sigAndAlg)
}
case extensionDelegatedCredential:
// Delegated Credential
// RFC 9345
extension.Data.SupportedSignatureAlgorithms = []SignatureScheme{}
var sigAndAlgs cryptobyte.String
if !extData.ReadUint16LengthPrefixed(&sigAndAlgs) || sigAndAlgs.Empty() {
return false
}
for !sigAndAlgs.Empty() {
var sigAndAlg uint16
if !sigAndAlgs.ReadUint16(&sigAndAlg) {
return false
}
extension.Data.SupportedSignatureAlgorithms = append(
extension.Data.SupportedSignatureAlgorithms, sigAndAlg)
}
case extensionRenegotiationInfo:
// Renegotiation Indication
// RFC 5746, Section 3.2

View File

@ -40,6 +40,7 @@ const (
extensionTokenBinding uint16 = 24
extensionCompressCertificate uint16 = 27
extensionRecordSizeLimit uint16 = 28
extensionDelegatedCredential uint16 = 34
extensionSessionTicket uint16 = 35
extensionPreSharedKey uint16 = 41
extensionEarlyData uint16 = 42

View File

@ -166,8 +166,10 @@ func GetSignatureSchemeInfo(sigSchemeCode uint16, mustName bool) SignatureScheme
func (m *ClientHelloMsg) AddSignatureSchemeInfo() {
for i, ext := range m.Extensions {
if ext.Code == extensionSignatureAlgorithms ||
ext.Code == extensionSignatureAlgorithmsCert {
switch ext.Code {
case extensionSignatureAlgorithms,
extensionSignatureAlgorithmsCert,
extensionDelegatedCredential:
for j, sigAlg := range ext.Data.SupportedSignatureAlgorithms {
m.Extensions[i].Data.SupportedSignatureAlgorithms[j] =
GetSignatureSchemeInfo(sigAlg.(uint16), false)