@@ -500,38 +500,44 @@ private byte[] transform(Data dereferencedData,
500
500
}
501
501
502
502
boolean secVal = Utils .secureValidation (context );
503
- xi .setSecureValidation (secVal );
504
- if (context instanceof XMLSignContext && c14n11
505
- && !xi .isOctetStream () && !xi .isOutputStreamSet ()) {
506
- TransformService spi = null ;
507
- if (provider == null ) {
508
- spi = TransformService .getInstance (c14nalg , "DOM" );
509
- } else {
510
- try {
511
- spi = TransformService .getInstance (c14nalg , "DOM" , provider );
512
- } catch (NoSuchAlgorithmException nsae ) {
503
+ try {
504
+ xi .setSecureValidation (secVal );
505
+ if (context instanceof XMLSignContext && c14n11
506
+ && !xi .isOctetStream () && !xi .isOutputStreamSet ()) {
507
+ TransformService spi = null ;
508
+ if (provider == null ) {
513
509
spi = TransformService .getInstance (c14nalg , "DOM" );
510
+ } else {
511
+ try {
512
+ spi = TransformService .getInstance (c14nalg , "DOM" , provider );
513
+ } catch (NoSuchAlgorithmException nsae ) {
514
+ spi = TransformService .getInstance (c14nalg , "DOM" );
515
+ }
514
516
}
515
- }
516
517
517
- DOMTransform t = new DOMTransform (spi );
518
- Element transformsElem = null ;
519
- String dsPrefix = DOMUtils .getSignaturePrefix (context );
520
- if (allTransforms .isEmpty ()) {
521
- transformsElem = DOMUtils .createElement (
522
- refElem .getOwnerDocument (),
523
- "Transforms" , XMLSignature .XMLNS , dsPrefix );
524
- refElem .insertBefore (transformsElem ,
525
- DOMUtils .getFirstChildElement (refElem ));
518
+ DOMTransform t = new DOMTransform (spi );
519
+ Element transformsElem = null ;
520
+ String dsPrefix = DOMUtils .getSignaturePrefix (context );
521
+ if (allTransforms .isEmpty ()) {
522
+ transformsElem = DOMUtils .createElement (
523
+ refElem .getOwnerDocument (),
524
+ "Transforms" , XMLSignature .XMLNS , dsPrefix );
525
+ refElem .insertBefore (transformsElem ,
526
+ DOMUtils .getFirstChildElement (refElem ));
527
+ } else {
528
+ transformsElem = DOMUtils .getFirstChildElement (refElem );
529
+ }
530
+ t .marshal (transformsElem , dsPrefix ,
531
+ (DOMCryptoContext ) context );
532
+ allTransforms .add (t );
533
+ xi .updateOutputStream (os , true );
526
534
} else {
527
- transformsElem = DOMUtils .getFirstChildElement (refElem );
535
+ xi .updateOutputStream (os );
536
+ }
537
+ } finally {
538
+ if (xi .getOctetStreamReal () != null ) {
539
+ xi .getOctetStreamReal ().close ();
528
540
}
529
- t .marshal (transformsElem , dsPrefix ,
530
- (DOMCryptoContext )context );
531
- allTransforms .add (t );
532
- xi .updateOutputStream (os , true );
533
- } else {
534
- xi .updateOutputStream (os );
535
541
}
536
542
}
537
543
os .flush ();
0 commit comments