File tree Expand file tree Collapse file tree 1 file changed +5
-6
lines changed
Expand file tree Collapse file tree 1 file changed +5
-6
lines changed Original file line number Diff line number Diff line change @@ -413,24 +413,23 @@ func (k *CAPIKMS) getCertContext(req *apiv1.LoadCertificateRequest) (*windows.Ce
413413 // TODO: Replace this search with a CERT_ID + CERT_ISSUER_SERIAL_NUMBER search instead
414414 // https://learn.microsoft.com/en-us/windows/win32/api/wincrypt/ns-wincrypt-cert_id
415415 // https://learn.microsoft.com/en-us/windows/win32/api/wincrypt/ns-wincrypt-cert_issuer_serial_number
416- var serialBytes [] byte
416+ var bi * big. Int
417417 if strings .HasPrefix (serialNumber , "0x" ) {
418- serialNumber = strings .TrimPrefix (serialNumber , "0x" )
419- serialNumber = strings .TrimPrefix (serialNumber , "00" ) // Comparison fails if leading 00 is not removed
420- serialBytes , err = hex .DecodeString (serialNumber )
418+ serialBytes , err := hex .DecodeString (strings .TrimPrefix (serialNumber , "0x" ))
421419 if err != nil {
422420 return nil , fmt .Errorf ("invalid hex format for %s: %w" , SerialNumberArg , err )
423421 }
422+
423+ bi = new (big.Int ).SetBytes (serialBytes )
424424 } else {
425425 bi := new (big.Int )
426426 bi , ok := bi .SetString (serialNumber , 10 )
427427 if ! ok {
428428 return nil , fmt .Errorf ("invalid %s - must be in hex or integer format" , SerialNumberArg )
429429 }
430- serialBytes = bi .Bytes ()
431430 }
432431
433- if bytes . Equal ( x509Cert .SerialNumber .Bytes (), serialBytes ) {
432+ if x509Cert .SerialNumber .Cmp ( bi ) == 0 {
434433 return handle , nil
435434 }
436435 case len (subjectCN ) > 0 :
You can’t perform that action at this time.
0 commit comments