К сожалению, modulus.toByteArray()
не отображается напрямую на тип ds: CryptoBinary цифровой подписи XML, что также требует удаления начальных нулевых октетов. Перед кодировкой base64
вам нужно сделать что-то подобное
byte[] modulusBytes = modulus.toByteArray();
int numLeadingZeroBytes = 0;
while( modulusBytes[numLeadingZeroBytes] == 0 )
++numLeadingZeroBytes;
if ( numLeadingZeroBytes > 0 ) {
byte[] origModulusBytes = modulusBytes;
modulusBytes = new byte[origModulusBytes.length - numLeadingZeroBytes];
System.arraycopy(origModulusBytes,numLeadingZeroBytes,modulusBytes,0,modulusBytes.length);
}