Repository: bitcoin
Issue: getdescriptorinfo returns unusable descriptor
Labels: Wallet,RPC/REST/ZMQ

### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current behaviour

NOTE: Replace `bch.sh` below in the code with `bitcoin-cli -signet`.

Let's have a random new testnet descriptor wallet with following private descriptors: 

```sh
~/.bitcoin/signet$ bch.sh listdescriptors true | jq .descriptors[].desc | tail -1
"wpkh(tprv8ZgxMBicQKsPdpPsVvhB5XZtRfRWGqH1uwJNmG27dQgDwTS76oCd3hKbn3zERUZjG2fCgdKe8rqT2NomNbCgGSUQ829rJkTLUWvGKzyHX7Z/84h/1h/0h/1/*)#duvgfk6y"
```

I will use just the one on the last line.

When the prvate descriptor above is used with `getdescriptorinfo` RPC call I get following:

```sh
~/.bitcoin/signet$ bch.sh getdescriptorinfo "wpkh(tprv8ZgxMBicQKsPdpPsVvhB5XZtRfRWGqH1uwJNmG27dQgDwTS76oCd3hKbn3zERUZjG2fCgdKe8rqT2NomNbCgGSUQ829rJkTLUWvGKzyHX7Z/84h/1h/0h/1/*)#duvgfk6y"
{
  "descriptor": "wpkh(tpubD6NzVbkrYhZ4XHRfPaMmUwDzzgwSSATvVEuA3n4R3gUcmwgsjC2DEBwTxB4qBjSBoofF3xKGAsQE3GhBDSFi6b8PcDwXLdEoNxrovTFmyYt/84h/1h/0h/1/*)#9zp9fyaf",
  "checksum": "duvgfk6y",
  "isrange": true,
  "issolvable": true,
  "hasprivatekeys": true
}
```

When the just-returned descriptor is used in `deriveaddress` it ends with an error:

```sh
~/.bitcoin/signet$ bch.sh deriveaddresses "wpkh(tpubD6NzVbkrYhZ4XHRfPaMmUwDzzgwSSATvVEuA3n4R3gUcmwgsjC2DEBwTxB4qBjSBoofF3xKGAsQE3GhBDSFi6b8PcDwXLdEoNxrovTFmyYt/84h/1h/0h/1/*)#9zp9fyaf"  '[0,1]'
error code: -5
error message:
Cannot derive script without private keys
```

If the wallet is queried by `listdescriptors`, just public, I get this for the same derivation path:

```sh
~/.bitcoin/signet$ bch.sh listdescriptors | jq .descriptors[].desc | tail -1
"wpkh([823c2027/84h/1h/0h]tpubDDPGZQssk8ekvcN85aXhvz5omhZdQPWcczP21RqCHw7i5ce89zgYHoxowE8HrUUi2XUr4Vv4x48Ykhw7JBCH6G8QUfgRRR9UPgbC74DdNC4/1/*)#spvfr65h"
```

When I use the above just-returned public descriptor it derives addresses well:

```sh
~/.bitcoin/signet$ bch.sh deriveaddresses "wpkh([823c2027/84h/1h/0h]tpubDDPGZQssk8ekvcN85aXhvz5omhZdQPWcczP21RqCHw7i5ce89zgYHoxowE8HrUUi2XUr4Vv4x48Ykhw7JBCH6G8QUfgRRR9UPgbC74DdNC4/1/*)#spvfr65h" '[0,1]'
[
  "tb1qegtflj2zzv6wqwh0zgh7zeztv2ek6awsvz4fpk",
  "tb1qslc5s8gd5zd7fa3cj64zt7kmlnw348x6q6cg28"
]
```

### Expected behaviour

I would expect also the `getdescriptorinfo` for the private descriptor to return a valid public descriptor usable for deriving addresses.

### Steps to reproduce

```sh
myderive() {
  bitcoin-cli -signet getdescriptorinfo "$1" | jq -r .descriptor | while read a; do bitcoin-cli -signet deriveaddresses "$a" '[0,1]'; done
}

myderive "wpkh(tprv8ZgxMBicQKsPdpPsVvhB5XZtRfRWGqH1uwJNmG27dQgDwTS76oCd3hKbn3zERUZjG2fCgdKe8rqT2NomNbCgGSUQ829rJkTLUWvGKzyHX7Z/84h/1h/0h/1/*)#duvgfk6y"
# above fails

myderive "wpkh([823c2027/84h/1h/0h]tpubDDPGZQssk8ekvcN85aXhvz5omhZdQPWcczP21RqCHw7i5ce89zgYHoxowE8HrUUi2XUr4Vv4x48Ykhw7JBCH6G8QUfgRRR9UPgbC74DdNC4/1/*)#spvfr65h"
```

Former errs, the latter works. Both are returned from `listdescriptors`, but former is the private from `listdescriptors true`.

### Relevant log output

_No response_

### How did you obtain Bitcoin Core

Pre-built binaries

### What version of Bitcoin Core are you using?

v26.0.0

### Operating system and version

Pop!_OS 22.04 LTS (like Ubuntu, just uses zram)

### Machine specifications

x86_64
SSD big enough for Signet (proper, non-custom)